我有一个带有字段的结构:
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()
操作。在这种情况下,我并不担心并发性。
最佳答案
使用std::mem::swap()
.
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/41370424/