【发布时间】:2018-04-30 01:37:12
【问题描述】:
如果我想手动使用迭代器,它必须是可变的:
let test = vec![1, 2, 3];
let mut test_mut = test.iter();
while let Some(val) = test_mut.next() {
println!("{:?}", val);
}
但我可以通过 for 循环愉快地使用它,即使它是不可变的。
let test = vec![1, 2, 3];
let test_imm = test.iter();
for val in test_imm {
println!("{:?}", val);
}
我认为这是可行的,因为 test_imm 被移到 for 循环的块中,所以 test_imm 不能再被外部块使用并且是(从外部块)在 for 循环之前是不可变的,然后它是不可访问的,所以没关系。
对吗?还有什么要解释的吗?
【问题讨论】:
标签: rust