Rust 如何更新结构,将大多数但不是所有字段设置为默认值?
我知道伟大的锈迹特征:Rust 如何更新结构,将大多数但不是所有字段设置为默认值?,rust,Rust,我知道伟大的锈迹特征: Foo { fieldX: someValue, ..Self::default() } 我想在方法中使用此选项,使用&mut self,不接触字段f10和f11,并将其他字段设置为默认值: #[derive(Default)] struct Foo { f1: u32, //... f10: Vec<u32>, f11: Vec<u32>, } impl Foo { fn f1(&
Foo {
fieldX: someValue,
..Self::default()
}
我想在方法中使用此选项,使用&mut self
,不接触字段f10
和f11
,并将其他字段设置为默认值:
#[derive(Default)]
struct Foo {
f1: u32,
//...
f10: Vec<u32>,
f11: Vec<u32>,
}
impl Foo {
fn f1(&mut self) {
let new_me = Foo {
f10: self.f10,
..Self::default()
};
*self = new_me;
}
}
我怎样才能:
&mut self
Vec
,仅移动self.f1 = 0;
self.f2 = 0;
self.f3 = None;
// ...
我将用默认值替换整个
self
,然后保留前一个值中的感兴趣字段:
use std::mem;
impl Foo {
fn f1(&mut self) {
let old = mem::replace(self, Self::default());
self.f10 = old.f10;
}
}