reference - 如何将数组的可变引用传递给函数?
问题描述
我认为在这种情况下,我的引用需要是可变的,因为我正在对数组进行排序,并且它需要是一个引用,因为我想使用相同的向量来计算平均值和众数。我尝试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
解决方案
推荐阅读
- c# - 如何从正在运行的 asp.net 网站上的 SQL 表中更改列名?
- python - 这些 os.popen 命令会并行运行吗?
- react-native - 如何使用 react-native 渲染一个大的动态列表视图
- sql - 3 按列查询并新建表
- events - 断言触发得太晚
- lvm - 重启后 LVM raid5 可用空间“丢失”
- doctrine-orm - UniqueEntity datetime Symfony4 :“该字段未由 Doctrine 映射,因此无法验证其唯一性。”
- domain-driven-design - 在 DDD/CQRS 中,ReadModel 是否应该充当 ViewModel,如果不是,那么映射的责任在哪里?
- python-3.x - Python中的数据转换
- c++ - 遇到与 c++ 相关的问题(初学者)