如何将新值转换为可更改的结构引用中的字段?我有一个带有字段的结构: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()行动。在这种情况下,我并不担心并发性。
2 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
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());}
潇湘沐
TA贡献1816条经验 获得超6个赞
Option
Option::take
:
struct A { field: Option<SomeType>,}fn foo(a: &mut A) { let old = a.field.take(); // a.field is now None, old is whatever a.field used to be}
take
mem::replace
pub fn take(&mut self) -> Option<T> { mem::replace(self, None)}
添加回答
举报
0/150
提交
取消