由于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/