summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exercises/05_vecs/vecs1.rs2
-rw-r--r--exercises/05_vecs/vecs2.rs3
-rw-r--r--exercises/06_move_semantics/move_semantics1.rs2
-rw-r--r--exercises/06_move_semantics/move_semantics2.rs2
-rw-r--r--exercises/06_move_semantics/move_semantics3.rs2
-rw-r--r--exercises/06_move_semantics/move_semantics4.rs6
-rw-r--r--exercises/06_move_semantics/move_semantics5.rs8
7 files changed, 14 insertions, 11 deletions
diff --git a/exercises/05_vecs/vecs1.rs b/exercises/05_vecs/vecs1.rs
index 68e1aff..aa4b64c 100644
--- a/exercises/05_vecs/vecs1.rs
+++ b/exercises/05_vecs/vecs1.rs
@@ -3,7 +3,7 @@ fn array_and_vec() -> ([i32; 4], Vec<i32>) {
// TODO: Create a vector called `v` which contains the exact same elements as in the array `a`.
// Use the vector macro.
- // let v = ???;
+ let v = vec![10, 20, 30, 40];
(a, v)
}
diff --git a/exercises/05_vecs/vecs2.rs b/exercises/05_vecs/vecs2.rs
index 0c99626..636f0a7 100644
--- a/exercises/05_vecs/vecs2.rs
+++ b/exercises/05_vecs/vecs2.rs
@@ -1,9 +1,10 @@
fn vec_loop(input: &[i32]) -> Vec<i32> {
let mut output = Vec::new();
- for element in input {
+ for element in input.iter() {
// TODO: Multiply each element in the `input` slice by 2 and push it to
// the `output` vector.
+ output.push(element * 2);
}
output
diff --git a/exercises/06_move_semantics/move_semantics1.rs b/exercises/06_move_semantics/move_semantics1.rs
index 4eb3d61..bf55943 100644
--- a/exercises/06_move_semantics/move_semantics1.rs
+++ b/exercises/06_move_semantics/move_semantics1.rs
@@ -1,6 +1,6 @@
// TODO: Fix the compiler error in this function.
fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
- let vec = vec;
+ let mut vec = vec;
vec.push(88);
diff --git a/exercises/06_move_semantics/move_semantics2.rs b/exercises/06_move_semantics/move_semantics2.rs
index a3ab7a0..e205b81 100644
--- a/exercises/06_move_semantics/move_semantics2.rs
+++ b/exercises/06_move_semantics/move_semantics2.rs
@@ -20,7 +20,7 @@ mod tests {
fn move_semantics2() {
let vec0 = vec![22, 44, 66];
- let vec1 = fill_vec(vec0);
+ let vec1 = fill_vec(vec0.clone());
assert_eq!(vec0, [22, 44, 66]);
assert_eq!(vec1, [22, 44, 66, 88]);
diff --git a/exercises/06_move_semantics/move_semantics3.rs b/exercises/06_move_semantics/move_semantics3.rs
index 11dbbbe..4a90c21 100644
--- a/exercises/06_move_semantics/move_semantics3.rs
+++ b/exercises/06_move_semantics/move_semantics3.rs
@@ -1,5 +1,5 @@
// TODO: Fix the compiler error in the function without adding any new line.
-fn fill_vec(vec: Vec<i32>) -> Vec<i32> {
+fn fill_vec(mut vec: Vec<i32>) -> Vec<i32> {
vec.push(88);
vec
diff --git a/exercises/06_move_semantics/move_semantics4.rs b/exercises/06_move_semantics/move_semantics4.rs
index 56da988..3e0672c 100644
--- a/exercises/06_move_semantics/move_semantics4.rs
+++ b/exercises/06_move_semantics/move_semantics4.rs
@@ -9,9 +9,11 @@ mod tests {
#[test]
fn move_semantics4() {
let mut x = Vec::new();
- let y = &mut x;
+ {
+ let y = &mut x;
+ y.push(42);
+ }
let z = &mut x;
- y.push(42);
z.push(13);
assert_eq!(x, [42, 13]);
}
diff --git a/exercises/06_move_semantics/move_semantics5.rs b/exercises/06_move_semantics/move_semantics5.rs
index cd0dafd..78d8c77 100644
--- a/exercises/06_move_semantics/move_semantics5.rs
+++ b/exercises/06_move_semantics/move_semantics5.rs
@@ -4,12 +4,12 @@
// removing references (the character `&`).
// Shouldn't 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) {
+fn string_uppercase(mut data: String) {
data = data.to_uppercase();
println!("{data}");
@@ -18,7 +18,7 @@ fn string_uppercase(mut data: &String) {
fn main() {
let data = "Rust is great!".to_string();
- get_char(data);
+ get_char(&data);
- string_uppercase(&data);
+ string_uppercase(data);
}