我试图通过从它的实例借用一个可变引用来操纵x结构的字段。Foofoo
如果我尝试在原始实例移动后x使用y实例的移动绑定打印字段,它会继续打印未更改的值。foo
下面的简化示例:
struct Foo {
x: i32,
}
fn main() {
let mut foo = Foo { x: 42 };
let x = &mut foo.x;
*x = 13;
let y = foo;
println!("{}", y.x); // -> 42; expected result: 13
}
Run Code Online (Sandbox Code Playgroud)
相反,如果我打印移动的绑定y本身,它会打印更改后的值。
println!("{:?}", y); // -> Foo { x: 13 }
Run Code Online (Sandbox Code Playgroud)
或者,如果我在移动之前x或foo.x 之前打印其他内容,它会按预期打印内容。
println!("{}", x); // -> 13
let y = foo; …Run Code Online (Sandbox Code Playgroud)