我有一个带字段的结构:
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()
操作。在这种情况下,我不担心并发性。 最佳答案
fn foo(a: &mut A) {
let mut my_local_var = SomeType::new();
mem::swap(&mut a.field, &mut my_local_var);
}
或
fn foo(a: &mut A) {
let mut my_local_var = mem::replace(&mut a.field, SomeType::new());
}
关于rust - 如何在可变引用结构中为字段交换新值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55466082/