How can I swap in a new value for a field in a mutable reference to a structure?

后端 未结 2 1392

I have a struct with a field:

struct A {
    field: SomeType,
}

Given a &mut A, how can I move the value of field

2条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-22 06:56

    Use std::mem::swap().

    fn foo(a: &mut A) {
        let mut my_local_var = SomeType::new();
        mem::swap(&mut a.field, &mut my_local_var);
    }
    

    Or std::mem::replace().

    fn foo(a: &mut A) {
        let mut my_local_var = mem::replace(&mut a.field, SomeType::new());
    }    
    

提交回复
热议问题