指定函数将未指定长度的数组作为参数的正确方法是什么?
What's the correct way to specify that a function takes an array of unspecified length as an argument?
这是我在 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
您可以直接使用 &[u32]
。不需要添加 mut
修饰符,因为您没有在打印方法中修改数据。
fn print_nums(nums: &[i32]) {
println!("{:?}", nums);
}
print_nums(&xs);
这是我在 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
您可以直接使用 &[u32]
。不需要添加 mut
修饰符,因为您没有在打印方法中修改数据。
fn print_nums(nums: &[i32]) {
println!("{:?}", nums);
}
print_nums(&xs);