From c67c4b7c50c5b2423281d4698963406a4a9a95ea Mon Sep 17 00:00:00 2001 From: Cody Date: Fri, 29 Sep 2023 12:34:35 +0800 Subject: [PATCH] update --- exercises/move_semantics/move_semantics1.rs | 7 ++++--- exercises/move_semantics/move_semantics2.rs | 4 ++-- exercises/move_semantics/move_semantics3.rs | 4 ++-- exercises/move_semantics/move_semantics4.rs | 6 +++--- exercises/move_semantics/move_semantics5.rs | 6 ++++-- exercises/move_semantics/move_semantics6.rs | 12 ++++++------ exercises/vecs/vecs2.rs | 2 +- 7 files changed, 22 insertions(+), 19 deletions(-) diff --git a/exercises/move_semantics/move_semantics1.rs b/exercises/move_semantics/move_semantics1.rs index e0639375..805ae819 100644 --- a/exercises/move_semantics/move_semantics1.rs +++ b/exercises/move_semantics/move_semantics1.rs @@ -3,7 +3,7 @@ // Execute `rustlings hint move_semantics1` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE +// I AM DONE #[test] fn main() { @@ -15,9 +15,10 @@ fn main() { } fn fill_vec(vec: Vec) -> Vec { - let vec = vec; + // 可变引用 + let mut vec = vec; - vec.push(88); + vec.push(88);// push需要改变原变量 vec } diff --git a/exercises/move_semantics/move_semantics2.rs b/exercises/move_semantics/move_semantics2.rs index baf6bcc9..e471a2ba 100644 --- a/exercises/move_semantics/move_semantics2.rs +++ b/exercises/move_semantics/move_semantics2.rs @@ -5,13 +5,13 @@ // Execute `rustlings hint move_semantics2` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE +// I AM DONE #[test] fn main() { let vec0 = vec![22, 44, 66]; - let mut vec1 = fill_vec(vec0); + let mut vec1 = fill_vec(vec0.clone()); assert_eq!(vec0, vec![22, 44, 66]); assert_eq!(vec1, vec![22, 44, 66, 88]); diff --git a/exercises/move_semantics/move_semantics3.rs b/exercises/move_semantics/move_semantics3.rs index 7af9e694..77042bda 100644 --- a/exercises/move_semantics/move_semantics3.rs +++ b/exercises/move_semantics/move_semantics3.rs @@ -6,7 +6,7 @@ // Execute `rustlings hint move_semantics3` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE +// I AM DONE #[test] fn main() { @@ -17,7 +17,7 @@ fn main() { assert_eq!(vec1, vec![22, 44, 66, 88]); } -fn fill_vec(vec: Vec) -> Vec { +fn fill_vec(mut vec: Vec) -> Vec { vec.push(88); vec diff --git a/exercises/move_semantics/move_semantics4.rs b/exercises/move_semantics/move_semantics4.rs index 80b49dba..881ed218 100644 --- a/exercises/move_semantics/move_semantics4.rs +++ b/exercises/move_semantics/move_semantics4.rs @@ -7,13 +7,13 @@ // Execute `rustlings hint move_semantics4` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE +// I AM DONE #[test] fn main() { let vec0 = vec![22, 44, 66]; - let mut vec1 = fill_vec(vec0); + let mut vec1 = fill_vec(); assert_eq!(vec1, vec![22, 44, 66, 88]); } @@ -21,7 +21,7 @@ fn main() { // `fill_vec()` no longer takes `vec: Vec` as argument - don't change this! fn fill_vec() -> Vec { // Instead, let's create and fill the Vec in here - how do you do that? - let mut vec = vec; + let mut vec = vec![22, 44, 66]; vec.push(88); diff --git a/exercises/move_semantics/move_semantics5.rs b/exercises/move_semantics/move_semantics5.rs index 267bdccc..4602e23b 100644 --- a/exercises/move_semantics/move_semantics5.rs +++ b/exercises/move_semantics/move_semantics5.rs @@ -6,14 +6,16 @@ // Execute `rustlings hint move_semantics5` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE +// I AM DONE #[test] fn main() { let mut x = 100; let y = &mut x; - let z = &mut x; *y += 100; + // Mutable borrow can not occur more than twice. + let z = &mut x; + // *y += 100; *z += 1000; assert_eq!(x, 1200); } diff --git a/exercises/move_semantics/move_semantics6.rs b/exercises/move_semantics/move_semantics6.rs index cace4ca6..c95781e6 100644 --- a/exercises/move_semantics/move_semantics6.rs +++ b/exercises/move_semantics/move_semantics6.rs @@ -5,24 +5,24 @@ // Execute `rustlings hint move_semantics6` or use the `hint` watch subcommand // for a hint. -// I AM NOT DONE +// I AM DONE fn main() { let data = "Rust is great!".to_string(); - get_char(data); + get_char(&data); - string_uppercase(&data); + string_uppercase(data); } // Should not take ownership -fn get_char(data: String) -> char { +fn get_char(data: &String) -> char { data.chars().last().unwrap() } // Should take ownership -fn string_uppercase(mut data: &String) { - data = &data.to_uppercase(); +fn string_uppercase(mut data: String) { + data = data.to_uppercase(); println!("{}", data); } diff --git a/exercises/vecs/vecs2.rs b/exercises/vecs/vecs2.rs index a81dd179..3e7ff10a 100644 --- a/exercises/vecs/vecs2.rs +++ b/exercises/vecs/vecs2.rs @@ -7,7 +7,7 @@ // // Execute `rustlings hint vecs2` or use the `hint` watch subcommand for a hint. -// I AM NOT DONE +// I AM DONE fn vec_loop(mut v: Vec) -> Vec { for element in v.iter_mut() {