如何将新值转换为可更改的结构引用中的字段?我有一个带有字段的结构: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 回答
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
std::mem::swap()
.
fn foo(a: &mut A) { let mut my_local_var = SomeType::new(); mem::swap(&mut a.field, &mut my_local_var);}
std::mem::replace()
.
fn foo(a: &mut A) { let mut my_local_var = mem::replace(&mut a.field, SomeType::new());}
有只小跳蛙
TA贡献1824条经验 获得超8个赞
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)}
- 2 回答
- 0 关注
- 304 浏览
添加回答
举报
0/150
提交
取消