【发布时间】:2018-05-22 12:24:45
【问题描述】:
我正在做Rustlings exercises 并且有一个练习“move_semantics3.rs”:
// 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
}
提示说:
这个和之前的区别在于 具有
let mut vec = vec;的fn fill_vec的第一行不再是 那里。您可以在其中添加mut而不是添加该行 将现有绑定更改为可变绑定的地方 而不是一个不可变的:)
我不知道如何通过仅添加一个 mut 来更正此代码。
【问题讨论】:
-
练习的 README 的前两句是(强调我的): 让你习惯阅读和编写 Rust 代码的小练习。 包括练习阅读和响应编译器消息!
-
只需将
fn fill_vec(vec: Vec<i32>) -> Vec<i32> {更改为fn fill_vec(mut vec: Vec<i32>) -> Vec<i32> {,因为可变性可以在移动中改变。
标签: rust