arrays - 如何修改数组的最后一项?

标签 arrays rust

由于arr被借用为可变的,arr的长度不能通过调用len()得到。我被困在这里,正确的方法是什么?

fn double_last(arr: &mut[i32]) -> &i32 {
    let last = &mut arr[arr.len() - 1];  // borrow checker error.
    //let last = &mut arr[3];            // fine
    *last *= 2;
    last
}

fn main() {
    let mut a = [1,2,3,4];
    println!("{}", double_last(&mut a));
    println!("{:?}", a);
}

最佳答案

如果只需要最后一个,可以使用std::slice::last_mut

fn double_last(arr: &mut[i32]) -> &i32 {
    let last = arr.last_mut().unwrap();
    *last *= 2;
    last
}

关于arrays - 如何修改数组的最后一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37043067/

相关文章:

c++ - -2[array] 是什么意思

javascript - 如何使用 .splice 删除虚假值?

struct - 如何将来自不同 HashMap 的字段合并为一个?

rust - 使用泛型实现特征时特征的不兼容类型

rust - 如何在 Rust 中初始化 sigset_t 或其他用作 "out parameters"的变量?

rust - 为什么我必须显式转换为受约束的类型?

javascript - 为什么不可枚举属性不影响数组内置方法?

javascript - 对象原型(prototype)上的 toString().call() 如何获取数组的类型

php - 如何在 php 中以父子格式从 mysql 检索数据?

c++ - Building Envoy WASM网络过滤器