小编Ohj*_*won的帖子

移动原始实例后,不会反映使用字段可变引用的更改

我试图通过从它的实例借用一个可变引用来操纵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)

或者,如果我在移动之前xfoo.x 之前打印其他内容,它会按预期打印内容。

println!("{}", x); // -> 13
let y = foo; …
Run Code Online (Sandbox Code Playgroud)

reference move rust

61
推荐指数
1
解决办法
5729
查看次数

标签 统计

move ×1

reference ×1

rust ×1