首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我该如何解决"move_semantics3.rs“这个问题呢?

我该如何解决"move_semantics3.rs“这个问题呢?
EN

Stack Overflow用户
提问于 2018-05-22 12:24:45
回答 1查看 2.8K关注 0票数 5

我正在做沙丁鱼练习,有一个练习"move_semantics3.rs":

代码语言:javascript
复制
// move_semantics3.rs
// Make me compile without adding new lines-- just changing existing lines!
// (no lines with multiple semicolons necessary!)
// Scroll down for hints :)

pub fn main() {
    let vec0 = Vec::new();

    let mut vec1 = fill_vec(vec0);

    println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1);

    vec1.push(88);

    println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1);

}

fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
    vec.push(22);
    vec.push(44);
    vec.push(66);

    vec
}

提示说:

这个和前一个不同之处在于,fn fill_vec的第一行let mut vec = vec;已经不在了。可以将mut添加到一个地方,将现有的绑定更改为可变的绑定,而不是不变的绑定:)

我不知道如何通过只添加一个mut来更正这段代码。

EN

回答 1

Stack Overflow用户

发布于 2018-05-22 12:34:46

如果将代码复制/粘贴到操场,编译器会抱怨:

代码语言:javascript
复制
error[E0596]: cannot borrow immutable argument `vec` as mutable
  --> src/main.rs:20:5
   |
19 | fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
   |             --- consider changing this to `mut vec`
20 |     vec.push(22);
   |     ^^^ cannot borrow mutably

编译器什么都说:您必须用vec替换mut vec,因为默认情况下,在Rust变量中是不可变的。

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

https://stackoverflow.com/questions/50467621

复制
相关文章

相似问题

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