我有一个带字段的结构:

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/55466082/

10-11 18:34