如何将新值转换为可更改的结构引用中的字段?我有一个带有字段的结构: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个赞
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)}添加回答
举报
0/150
提交
取消
