Rust 在函数中进行模式匹配时,如何避免ref关键字&;自我或;莫特·赛尔夫?
生锈的书。由于我想遵循隐式建议来避免Rust 在函数中进行模式匹配时,如何避免ref关键字&;自我或;莫特·赛尔夫?,rust,pattern-matching,Rust,Pattern Matching,生锈的书。由于我想遵循隐式建议来避免ref,在下面的玩具示例中我该如何做?您也可以在上找到代码 由于self属于&mut-self类型,因此它足以与自身匹配,同时完全省略ref。使用*self解除对其的引用或将&添加到匹配臂将导致不必要的移动 fn ref_mut(&mut self) -> &mut i32 { match self { OwnBox(i) => i, } } 然而,对于像这样的新类型,&mut self.0就足够了
ref
,在下面的玩具示例中我该如何做?您也可以在上找到代码
由于
self
属于&mut-self
类型,因此它足以与自身匹配,同时完全省略ref
。使用*self
解除对其的引用或将&
添加到匹配臂将导致不必要的移动
fn ref_mut(&mut self) -> &mut i32 {
match self {
OwnBox(i) => i,
}
}
然而,对于像这样的新类型,&mut self.0
就足够了
这要归功于。我认为这本书把这些称为“遗产”是错误的;正如它所指出的,在某些情况下您仍然需要它们,有时使用
ref
会更清晰。因此,一定要了解“图案工效学”及其工作原理,但我也不认为你应该刻意避免ref
和ref mut
。
fn ref_mut(&mut self) -> &mut i32 {
match self {
OwnBox(i) => i,
}
}