当循环遍历结构体切片时,我得到的值是一个引用(这是可以的),但在某些情况下,我不得不在很多地方写上
有没有更好的方法来避免重新声明变量?
var
作为(*var)
,这有点烦人。有没有更好的方法来避免重新声明变量?
fn my_fn(slice: &[MyStruct]) {
for var in slice {
let var = *var; // <-- how to avoid this?
// Without the line above, errors in comments occur:
other_fn(var); // <-- expected struct `MyStruct`, found reference
if var != var.other {
// ^^ trait `&MyStruct: std::cmp::PartialEq<MyStruct>>` not satisfied
foo();
}
}
}
&
...需要更多了解在模式前面使用&var
的作用... - undefined*int_reference
...哦,但是在模式本身中,他们使用的是和号:&0
。 - undefinedCopy
类型,那么根据Chris Emerson的回答,也可以这样做:for var in slice.iter().copied() { other_fn(var); }
- undefinedcopied()
的解决方案也是可行的。 - undefined