【发布时间】:2019-02-11 16:13:40
【问题描述】:
在下面的代码中,我想在迭代之后保留number_list,因为for 默认使用的.into_iter() 会消耗掉。因此,我假设 n: &i32 并且我可以通过取消引用获得 n 的值。
fn main() {
let number_list = vec![24, 34, 100, 65];
let mut largest = number_list[0];
for n in &number_list {
if *n > largest {
largest = *n;
}
}
println!("{}", largest);
}
据透露,我们可以使用&n 作为“模式”来代替这个:
fn main() {
let number_list = vec![24, 34, 100, 65];
let mut largest = number_list[0];
for &n in &number_list {
if n > largest {
largest = n;
}
}
println!("{}", largest);
number_list;
}
我的困惑(请记住,我没有涵盖模式)是我希望从 n: &i32 开始,然后是 &n: &&i32,而不是解析为值(如果甚至可以使用双重引用)。为什么会发生这种情况,& 的含义是否因上下文而异?
【问题讨论】:
标签: syntax reference rust pattern-matching