在 C 系列语言中,我可以在一行代码中完成这个操作:
但在Rust中,我只能像这样编写代码:
在 Rust 中,这种做法是行不通的。变量
for(int i = lo, int j = mid+1; i <= mid && j <= hi; i++, j++){
...
}
但在Rust中,我只能像这样编写代码:
for i in lo..mid+1 {
let mut j = mid+1;
if j <= hi {
break;
}
...
j += 1;
}
有没有更有效的方法来实现这个?
对于上面的例子,使用迭代器是可行的,但是在一些情况下,如使用算术运算时,使用迭代器会变得麻烦,例如
for (int i = 0; i < n; i ++) {
if (a[i] == ...) {
i += 5;
}
}
在 Rust 中,这种做法是行不通的。变量
i
不会增加5,而只会增加1:for i in 0..n {
if a[i] == ... {
i += 5;
}
}
for (int i = 0; i < n; i ++) if (a[i] == ...) i += 5;
。在 Rust 中,它使用迭代器,所以for i in 0..n{ if a[i] == ... { i+=5; }}
不起作用。变量i
下一次不会加 5,而是加 1... - wind2412