rust 循环 loop nest

文章目录


你好,这是必应。Rust是一种高性能、安全和并发的编程语言。如果你想用Rust写数组嵌套循环,你可以参考以下的方法:

你可以使用索引来遍历数组中的元素,就像在C语言中一样。例如:
let arr = [1, 2, 3, 4];
for i in 0..arr.len() {
    for j in i + 1..arr.len() {
        println!("arr[{}] = {}, arr[{}] = {}", i, arr[i], j, arr[j]);
    }
}
复制
你也可以使用迭代器来遍历数组中的元素,但是你需要注意借用规则。如果你想要可变地访问数组中的元素,你不能同时拥有两个或以上的可变引用。例如,以下代码会报错:
let mut arr = [1, 2, 3, 4];
for x in &mut arr {
    *x += 1;
    for y in &mut arr {
        *y += 1;
        println!("x = {}, y = {}", x, y);
    }
}
复制
错误信息是:

error[E0499]: cannot borrow `arr` as mutable more than once at a time
复制
如果你想要使用迭代器来实现嵌套循环,你可以使用一些技巧,比如使用while let语句来避免整个循环的可变借用,或者使用Cell类型来实现内部可变性。例如:
let mut arr = [1, 2, 3, 4];
let mut iter = arr.iter_mut();
while let Some(x) = iter.next() {
    *x += 1;
    for y in iter.clone() {
        *y += 1;
        println!("x = {}, y = {}", x, y);
    }
}
复制
或者:

use std::cell::Cell;

let arr = [Cell::new(1), Cell::new(2), Cell::new(3), Cell::new(4)];
for x in &arr {
    x.set(x.get() + 1);
    for y in &arr {
        y.set(y.get() + 1);
        println!("x = {}, y = {}", x.get(), y.get());
    }
}
复制
以上是我为你找到的一些关于Rust数组嵌套循环写法的资料123。如果你想了解更多,请继续提问或者点击下面的链接查看更多资料。

fn selection_sort(to_vec: &mut [i32]) {
    let mut min_index = 0;
    for i in 0..to_vec.len() - 1 {
        min_index = i;

        for j in i..to_vec.len() {
            if to_vec[i] > to_vec[j] {
                let tmp = to_vec[i];
                to_vec[i] = to_vec[j];
                to_vec[j] = tmp;
            }
        }
    }

    for i in 0..to_vec.len() {
        println!("--> {}", to_vec[i]);
    }
}

你可能感兴趣的:(rust,开发语言,后端)