如何将数组的可变引用传递给函数?

时间:2019-04-02 19:13:16

标签: reference rust mutable

在这种情况下,我认为我的引用必须是可变的,因为我正在对数组进行排序,而它又必须是引用,因为我想使用相同的向量来计算均值和众数。我已经尝试过在函数签名和变量声明中使用mut的各种组合,但无法对其进行编译(包括错误消息中的建议,但可能未正确实现)。

我正在尝试实现一个简单的中值函数(我知道可能是一种内置方式,但是这是作为练习进行的)

fn main() {
    let mut v = vec![1, 2, 3, 4, 5, 5, 4, 3];
    println!("{}", median(&v));
}

fn median(mut vec: &Vec<i32>) -> usize {
    vec.sort();
    let len: usize = vec.len();
    let middle = len as i32 / 2;
    println!("{}", &middle);
    0
}

这会出现以下错误

error[E0596]: cannot borrow `*vec` as mutable, as it is behind a `&` reference
 --> src/main.rs:7:5
  |
6 | fn median(mut vec: &Vec<i32>) -> usize {
  |                    --------- help: consider changing this to be a mutable reference: `&mut std::vec::Vec<i32>`
7 |     vec.sort();
  |     ^^^ `vec` is a `&` reference, so the data it refers to cannot be borrowed as mutable

0 个答案:

没有答案