1
0
mirror of https://github.com/rust-lang/rustlings.git synced 2025-08-08 22:36:55 +02:00

Merge pull request #1660 from rust-lang/fix/move-semantics-tests

fix: refactor move semantics 1-4 into tests
This commit is contained in:
liv
2023-09-04 14:32:01 +02:00
committed by GitHub
5 changed files with 27 additions and 51 deletions

View File

@ -5,24 +5,19 @@
// I AM NOT DONE
#[test]
fn main() {
let vec0 = Vec::new();
let vec0 = vec![22, 44, 66];
let vec1 = fill_vec(vec0);
println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1);
vec1.push(88);
println!("{} has length {} content `{:?}`", "vec1", vec1.len(), vec1);
assert_eq!(vec1, vec![22, 44, 66, 88]);
}
fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
let mut vec = vec;
let vec = vec;
vec.push(22);
vec.push(44);
vec.push(66);
vec.push(88);
vec
}

View File

@ -1,32 +1,26 @@
// move_semantics2.rs
//
// Expected output:
// vec0 has length 3, with contents `[22, 44, 66]`
// vec1 has length 4, with contents `[22, 44, 66, 88]`
// Make the test pass by finding a way to keep both Vecs separate!
//
// Execute `rustlings hint move_semantics2` or use the `hint` watch subcommand
// for a hint.
// I AM NOT DONE
#[test]
fn main() {
let vec0 = Vec::new();
let vec0 = vec![22, 44, 66];
let mut vec1 = fill_vec(vec0);
println!("{} has length {}, with contents: `{:?}`", "vec0", vec0.len(), vec0);
vec1.push(88);
println!("{} has length {}, with contents `{:?}`", "vec1", vec1.len(), vec1);
assert_eq!(vec0, vec![22, 44, 66]);
assert_eq!(vec1, vec![22, 44, 66, 88]);
}
fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
let mut vec = vec;
vec.push(22);
vec.push(44);
vec.push(66);
vec.push(88);
vec
}

View File

@ -8,22 +8,17 @@
// I AM NOT DONE
#[test]
fn main() {
let vec0 = Vec::new();
let vec0 = vec![22, 44, 66];
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);
assert_eq!(vec1, vec![22, 44, 66, 88]);
}
fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
vec.push(22);
vec.push(44);
vec.push(66);
vec.push(88);
vec
}

View File

@ -9,25 +9,21 @@
// I AM NOT DONE
#[test]
fn main() {
let vec0 = Vec::new();
let vec0 = vec![22, 44, 66];
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);
assert_eq!(vec1, vec![22, 44, 66, 88]);
}
// `fill_vec()` no longer takes `vec: Vec<i32>` as argument
// `fill_vec()` no longer takes `vec: Vec<i32>` as argument - don't change this!
fn fill_vec() -> Vec<i32> {
// Instead, let's create and fill the Vec in here - how do you do that?
let mut vec = vec;
vec.push(22);
vec.push(44);
vec.push(66);
vec.push(88);
vec
}