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

时间:2015-05-09 07:14:22

标签: 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;
        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);
}

&mut [i32]对于selection_sort似乎是合理的,因为它修改了数组,但它似乎不适合用于print_nums:我只是无法弄清楚另一个获得匹配类型的方法。 :P

1 个答案:

答案 0 :(得分:10)

您可以使用&[u32]。无需添加mut修饰符,因为您没有在print方法中修改数据。

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

print_nums(&xs);