如何将新值转换为可更改的结构引用中的字段?我有一个带有字段的结构: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个赞
OptionOption::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}takemem::replace
pub fn take(&mut self) -> Option<T> {
mem::replace(self, None)}- 2 回答
- 0 关注
- 372 浏览
添加回答
举报
0/150
提交
取消
