首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >借用借用的可变类型

借用借用的可变类型
EN

Stack Overflow用户
提问于 2020-06-29 05:28:33
回答 1查看 37关注 0票数 0

具有借用的可变引用的函数如何调用具有相同借用的可变引用的第二个函数?

代码语言:javascript
复制
fn main() {
    let mut a = vec![0, 1, 2, 3, 4];
    
    first_function(&mut a);
    
    println!("{:?}", a);
}

fn first_function(a: &mut Vec<i32>) {
    println!("...first function");
    a[0] = 5;
    second_function(&mut a);
}

fn second_function(a: &mut Vec<i32>) {
    println!("...second function");
    a[2] = 6;
}

编译器错误通常非常有用,但我不理解这个错误;

代码语言:javascript
复制
error[E0596]: cannot borrow `a` as mutable, as it is not declared as mutable
  --> src/main.rs:12:21
   |
9  | fn first_function(a: &mut Vec<i32>) {
   |                   - help: consider changing this to be mutable: `mut a`
...
12 |     second_function(&mut a);
   |                     ^^^^^^ cannot borrow as mutable

..。以下是指向Rust Playground中代码的链接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-29 05:30:54

通过编写&mut a,您试图接受对a的可变引用,而不是它的值引用的内容-它将是一个&mut &mut Vec<i32>a的值已经是你想要的可变引用:

代码语言:javascript
复制
second_function(a);

updated playground

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62628414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档