Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Rust'中使用多个变量;什么是循环?_Rust - Fatal编程技术网

如何在Rust'中使用多个变量;什么是循环?

如何在Rust'中使用多个变量;什么是循环?,rust,Rust,在C语言家族中,我可以在一行上完成这项工作: for(int i=lo,int j=mid+1;i您可以创建两个并行范围迭代器,将它们合并,然后通过组合进行迭代: fn main() { let values = [10, 20, 30, 40, 50, 60, 70, 80, 90]; let lo = 2; let mid = 5; let hi = 7; let early_indexes = lo..(mid + 1); let late

在C语言家族中,我可以在一行上完成这项工作:


for(int i=lo,int j=mid+1;i您可以创建两个并行范围迭代器,将它们合并,然后通过组合进行迭代:

fn main() {
    let values = [10, 20, 30, 40, 50, 60, 70, 80, 90];
    let lo = 2;
    let mid = 5;
    let hi = 7;

    let early_indexes = lo..(mid + 1);
    let late_indexes = (mid + 1)..(hi + 1);
    for (i, j) in early_indexes.zip(late_indexes) {
        println!("{}, {}", i, j);
        println!("{} - {}", values[i], values[j]);
    }
}
总有一天,包含范围,您应该能够这样做(取决于最终的语法):

如果您确实在迭代一个切片,如我在示例中所示,您也可以直接组合两个迭代器并忽略索引:

let early_values = values[lo..(mid + 1)].iter();
let late_values = values[(mid + 1)..(hi + 1)].iter();
for (i, j) in early_values.zip(late_values) {
    println!("{}, {}", i, j);
}

变量
i
不会增加5,而是增加1

是的,一步一步递增是很烦人的,总有一天会这样。同时:

如果需要完全控制,则始终可以使用
while
loop

let mut i = 0;
while i < n {
    if a[i] == ... {
        i += 5;
    }

    i += 1;
}
设mut i=0;
而我{
如果a[i]=={
i+=5;
}
i+=1;
}

谢谢~它可以工作。Rust's for loop使用迭代器,这使得在某些情况下使用算术有点麻烦。正如
for(int i=0;i
在Rust中它使用迭代器,因此
for i In 0..n{if a[i]==…{i+=5;}
未工作。变量
i
不会在下一个回合中添加5个回合,而是添加1个回合…感谢您提供解决我问题的详细说明~
let early_indexes = lo...mid;
let late_indexes = (mid + 1)...hi;
for (i, j) in early_indexes.zip(late_indexes) {
    println!("{}, {}", i, j);
    println!("{} - {}", values[i], values[j]);
}
let early_values = values[lo..(mid + 1)].iter();
let late_values = values[(mid + 1)..(hi + 1)].iter();
for (i, j) in early_values.zip(late_values) {
    println!("{}, {}", i, j);
}
let mut i = 0;
while i < n {
    if a[i] == ... {
        i += 5;
    }

    i += 1;
}