我有一个带有字段的结构体:
struct A {
field: SomeType,
}
如果给定一个&mut A
,我该如何移动field
的值并交换一个新值?
fn foo(a: &mut A) {
let mut my_local_var = a.field;
a.field = SomeType::new();
// ...
// do things with my_local_var
// some operations may modify the NEW field's value as well.
}
最终目标是实现一个等同于get_and_set()
操作的功能。在这种情况下,我不担心并发问题。
let mut my_local_var = mem::replace(&mut a.field, SomeType::new());
。这两者完全等效。 - Chris Morgan