rustlings/exercises/move_semantics/move_semantics2.rs
2022-11-17 19:37:30 +08:00

30 lines
886 B
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// move_semantics2.rs
// Make me compile without changing line 13 or moving line 10!
// Execute `rustlings hint move_semantics2` or use the `hint` watch subcommand for a hint.
fn main() {
let mut vec0 = Vec::new();
let mut vec1 = fill_vec(&mut vec0);
// Do not change the following line!
println!("{} has length {} content `{:?}`", "vec0", vec0.len(), vec0);
vec1.push(88);
println!("{} has length {} content `{:?}`", "vec0", vec0.len(), vec0);
println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1);
}
//错误1只传引用绑定的新 vec为引用导致值并不可变所以 push 会出错
fn fill_vec(vec: &mut Vec<i32>) -> Vec<i32> {
let mut vec = vec;
vec.push(22);
vec.push(44);
vec.push(66);
vec.iter().map(|x| x * 1).collect()
// *vec1.iter().map(|x| x * 1).collect::<Vec<i32>>().to_vec()
}