【发布时间】:2019-12-11 19:58:53
【问题描述】:
代码&i in list中&的作用是什么?如果我删除&,它会在largest = i 中产生错误,因为它们的类型不匹配(其中i 是&32 而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")。可能对你有用。
标签: reference rust pattern-matching destructuring ampersand