在代码
&i in list
中,&
的目的是什么?如果我去掉&
,那么largest = i
就会产生错误,因为它们具有不匹配的类型(其中i
是&32
而list
中的i
是i32
)。但是,&i
如何将i
转换为i32
?fn largest(list: &[i32]) -> i32 {
println!("{:?}", list);
let mut largest = list[0];
for &i in list {
if i > largest {
largest = i;
}
}
largest
}
fn main() {
let hey = vec![1, 3, 2, 6, 90, 67, 788, 12, 34, 54, 32];
println!("The largest number is: {}", largest(&hey));
}
代码似乎在某种程度上进行了取值,但在下面的代码中,为什么它没有起作用呢?
fn main() {
let mut hey: i32 = 32;
let x: i32 = 2;
hey = &&x;
}
它说:
4 | hey = &&x;
| ^^^ expected i32, found &&i32
|
= note: expected type `i32`
found type `&&i32`
list.iter().copied().max().expect("empty list")
。这可能对您有用。 - Lukas Kalbertodt