From aad6b7ad2ad3f2f5b2189a580c49f7b3052d0d50 Mon Sep 17 00:00:00 2001 From: catwithtudou <949812478@qq.com> Date: Sat, 24 Jun 2023 22:12:31 +0800 Subject: [PATCH] update:update the enums and strings --- exercises/enums/enums1.rs | 6 ++++-- exercises/enums/enums2.rs | 6 ++++-- exercises/enums/enums3.rs | 18 ++++++++++++++---- exercises/strings/strings1.rs | 5 ++--- exercises/strings/strings2.rs | 4 +--- exercises/strings/strings3.rs | 21 ++++++++++++++------- exercises/strings/strings4.rs | 22 ++++++++++------------ 7 files changed, 49 insertions(+), 33 deletions(-) diff --git a/exercises/enums/enums1.rs b/exercises/enums/enums1.rs index 25525b25..74967b66 100644 --- a/exercises/enums/enums1.rs +++ b/exercises/enums/enums1.rs @@ -2,11 +2,13 @@ // // No hints this time! ;) -// I AM NOT DONE #[derive(Debug)] enum Message { - // TODO: define a few types of messages as used below + Quit, + Echo, + Move, + ChangeColor, } fn main() { diff --git a/exercises/enums/enums2.rs b/exercises/enums/enums2.rs index df93fe0f..c5e43c49 100644 --- a/exercises/enums/enums2.rs +++ b/exercises/enums/enums2.rs @@ -3,11 +3,13 @@ // Execute `rustlings hint enums2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - #[derive(Debug)] enum Message { // TODO: define the different variants used below + Move { x: i32, y: i32 }, + Echo(String), + ChangeColor(i32, i32, i32), + Quit, } impl Message { diff --git a/exercises/enums/enums3.rs b/exercises/enums/enums3.rs index 5d284417..21e1118d 100644 --- a/exercises/enums/enums3.rs +++ b/exercises/enums/enums3.rs @@ -5,10 +5,12 @@ // Execute `rustlings hint enums3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - enum Message { // TODO: implement the message variant types based on their usage below + ChangeColor(u8, u8, u8), + Move(Point), + Quit, + Echo(String), } struct Point { @@ -20,7 +22,7 @@ struct State { color: (u8, u8, u8), position: Point, quit: bool, - message: String + message: String, } impl State { @@ -32,7 +34,9 @@ impl State { self.quit = true; } - fn echo(&mut self, s: String) { self.message = s } + fn echo(&mut self, s: String) { + self.message = s + } fn move_position(&mut self, p: Point) { self.position = p; @@ -43,6 +47,12 @@ impl State { // variants // Remember: When passing a tuple as a function argument, you'll need // extra parentheses: fn function((t, u, p, l, e)) + match message { + Message::ChangeColor(a, b, c) => self.color = (a, b, c), + Message::Move(point) => self.position = point, + Message::Quit => self.quit = true, + Message::Echo(message) => self.message = message, + } } } diff --git a/exercises/strings/strings1.rs b/exercises/strings/strings1.rs index f50e1fa9..efb16451 100644 --- a/exercises/strings/strings1.rs +++ b/exercises/strings/strings1.rs @@ -5,13 +5,12 @@ // Execute `rustlings hint strings1` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let answer = current_favorite_color(); println!("My current favorite color is {}", answer); } fn current_favorite_color() -> String { - "blue" + // "blue".to_string() + String::from("blue") } diff --git a/exercises/strings/strings2.rs b/exercises/strings/strings2.rs index 4d95d16a..ca16ea3d 100644 --- a/exercises/strings/strings2.rs +++ b/exercises/strings/strings2.rs @@ -5,11 +5,9 @@ // Execute `rustlings hint strings2` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn main() { let word = String::from("green"); // Try not changing this line :) - if is_a_color_word(word) { + if is_a_color_word(&word) { println!("That is a color word I know!"); } else { println!("That is not a color word I know."); diff --git a/exercises/strings/strings3.rs b/exercises/strings/strings3.rs index b29f9325..e397ac8d 100644 --- a/exercises/strings/strings3.rs +++ b/exercises/strings/strings3.rs @@ -3,21 +3,22 @@ // Execute `rustlings hint strings3` or use the `hint` watch subcommand for a // hint. -// I AM NOT DONE - fn trim_me(input: &str) -> String { // TODO: Remove whitespace from both ends of a string! - ??? + input.to_string().trim().to_string() } fn compose_me(input: &str) -> String { // TODO: Add " world!" to the string! There's multiple ways to do this! - ??? + let mut input = String::from(input); + input.push_str(" world!"); + input } fn replace_me(input: &str) -> String { // TODO: Replace "cars" in the string with "balloons"! - ??? + let mut input = String::from(input); + input.replace("cars", "balloons") } #[cfg(test)] @@ -39,7 +40,13 @@ mod tests { #[test] fn replace_a_string() { - assert_eq!(replace_me("I think cars are cool"), "I think balloons are cool"); - assert_eq!(replace_me("I love to look at cars"), "I love to look at balloons"); + assert_eq!( + replace_me("I think cars are cool"), + "I think balloons are cool" + ); + assert_eq!( + replace_me("I love to look at cars"), + "I love to look at balloons" + ); } } diff --git a/exercises/strings/strings4.rs b/exercises/strings/strings4.rs index e8c54acc..999ba803 100644 --- a/exercises/strings/strings4.rs +++ b/exercises/strings/strings4.rs @@ -7,8 +7,6 @@ // // No hints this time! -// I AM NOT DONE - fn string_slice(arg: &str) { println!("{}", arg); } @@ -17,14 +15,14 @@ fn string(arg: String) { } fn main() { - ???("blue"); - ???("red".to_string()); - ???(String::from("hi")); - ???("rust is fun!".to_owned()); - ???("nice weather".into()); - ???(format!("Interpolation {}", "Station")); - ???(&String::from("abc")[0..1]); - ???(" hello there ".trim()); - ???("Happy Monday!".to_string().replace("Mon", "Tues")); - ???("mY sHiFt KeY iS sTiCkY".to_lowercase()); + string_slice("blue"); + string("red".to_string()); + string(String::from("hi")); + string("rust is fun!".to_owned()); + string_slice("nice weather".into()); + string(format!("Interpolation {}", "Station")); + string_slice(&String::from("abc")[0..1]); + string_slice(" hello there ".trim()); + string("Happy Monday!".to_string().replace("Mon", "Tues")); + string("mY sHiFt KeY iS sTiCkY".to_lowercase()); }