我想编写以下函数:
fn foo<'a, 'b, 'c>(rr1: &'a mut &'c mut u32, rr2: &'b mut &'c mut u32) {
*rr1 = *rr2;
}
Run Code Online (Sandbox Code Playgroud)
但是编译器抱怨:
fn foo<'a, 'b, 'c>(rr1: &'a mut &'c mut u32, rr2: &'b mut &'c mut u32) {
*rr1 = *rr2;
}
Run Code Online (Sandbox Code Playgroud)
我对 Rust 生命周期的心智模型不同意代码是错误的。我读的类型rr2为“具有寿命的引用'b与寿命的参考'c到一个u32”。因此,当我提领rr2,我与寿命引用'c到u32。这应该可以安全地存储在*rr1具有相同类型的 中。
如果我需要它的'b寿命'c,它的工作原理:
fn foo<'a, 'b: 'c, 'c>(rr1: &'a mut &'c mut u32, rr2: &'b mut …Run Code Online (Sandbox Code Playgroud)