Arrays 什么';指定函数以未指定长度的数组作为参数的正确方法是什么?

Arrays 什么';指定函数以未指定长度的数组作为参数的正确方法是什么?,arrays,rust,Arrays,Rust,下面是我在Rust中实现的工作选择排序,以及使用和mut[i32]的简单打印函数: fn print_nums(nums: &mut [i32]) { println!("{:?}", nums); } fn selection_sort(nums: &mut [i32]) { let len = nums.len(); let mut mindex; for i in 0..len { mindex = i;

下面是我在Rust中实现的工作选择排序,以及使用
和mut[i32]
的简单打印函数:

fn print_nums(nums: &mut [i32]) {
    println!("{:?}", nums);
}

fn selection_sort(nums: &mut [i32]) {
    let len = nums.len();
    let mut mindex;

    for i in 0..len {
        mindex = i;
        for j in (i + 1)..len {
            if nums[j] < nums[mindex] { mindex = j; }
        }
        nums.swap(i, mindex);
    }
}

fn main() {
    let mut xs: [i32; 5] = [1, 2, 3, 4, 5];
    selection_sort(&mut xs);
    print_nums(&mut xs);
}
fn打印\u nums(nums:&mut[i32]){
println!(“{:?}”,nums);
}
fn选择\排序(nums:&mut[i32]){
设len=nums.len();
让mut mindex;
因为我在0..len{
mindex=i;
对于j in(i+1)…len{
如果nums[j]

&mut[i32]
对于
选择\u排序
似乎是合理的,因为它修改了数组,但似乎不适合用于
打印\u nums
:我只是想不出另一种方法来获得匹配的类型P

您可以使用

和[u32]
。不需要添加
mut
修饰符,因为您并没有在print方法中修改数据

fn print_nums(nums: &[i32]) {
    println!("{:?}", nums);
}

print_nums(&xs);

您只需使用
和[u32]
。不需要添加
mut
修饰符,因为您并没有在print方法中修改数据

fn print_nums(nums: &[i32]) {
    println!("{:?}", nums);
}

print_nums(&xs);