0 .. v.len() - 1当向量v可能为空时,正确的循环方法是什么?
考虑以下代码,它打印向量中 2 个元素的所有选择[5, 6, 7]:
fn main() {
let v: Vec<i32> = vec![5, 6, 7];
for i in 0 .. v.len() - 1 {
for j in i + 1 .. v.len() {
println!("{} {}", v[i], v[j]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它打印
5 6
5 7
6 7
Run Code Online (Sandbox Code Playgroud)
正如预期的那样。
现在,如果我们有
let v: Vec<i32> = vec![];
Run Code Online (Sandbox Code Playgroud)
那么程序就会因为溢出而出现恐慌,这也是意料之中的。
问:如何在不改变程序结构和逻辑、不涉及有符号整数的情况下修复它?
以下是我不想要的解决方法的一些示例:
单独处理空v(改变逻辑)。总的来说,我不想要任何v空支票,例如if v.len() == 0 { 0 } …