我如何解决Rustlings练习“move_semantics3.rs”?

时间:2018-05-22 12:24:46

标签: rust

我正在做Rustlings exercises并且有一个练习“move_semantics3.rs”:

MoPub.initializeSdk()

提示说:

  

这一点与之前的区别在于   不再有// 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来更正此代码。

1 个答案:

答案 0 :(得分:2)

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

$date = new \DateTime('@'.strtotime('now'));

编译器说明了所有内容:您必须将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,因为默认情况下,Rust变量不可变。