summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exercises/09_strings/strings3.rs21
-rw-r--r--rustlings-macros/info.toml3
-rw-r--r--solutions/09_strings/strings3.rs49
3 files changed, 62 insertions, 11 deletions
diff --git a/exercises/09_strings/strings3.rs b/exercises/09_strings/strings3.rs
index f83a531..39fce18 100644
--- a/exercises/09_strings/strings3.rs
+++ b/exercises/09_strings/strings3.rs
@@ -1,16 +1,13 @@
-fn trim_me(input: &str) -> String {
- // TODO: Remove whitespace from both ends of a string!
- ???
+fn trim_me(input: &str) -> &str {
+ // TODO: Remove whitespace from both ends of a string.
}
fn compose_me(input: &str) -> String {
- // TODO: Add " world!" to the string! There are multiple ways to do this!
- ???
+ // TODO: Add " world!" to the string! There are multiple ways to do this.
}
fn replace_me(input: &str) -> String {
- // TODO: Replace "cars" in the string with "balloons"!
- ???
+ // TODO: Replace "cars" in the string with "balloons".
}
fn main() {
@@ -36,7 +33,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/rustlings-macros/info.toml b/rustlings-macros/info.toml
index 82206fc..618fc91 100644
--- a/rustlings-macros/info.toml
+++ b/rustlings-macros/info.toml
@@ -499,7 +499,8 @@ https://doc.rust-lang.org/stable/book/ch15-02-deref.html#implicit-deref-coercion
name = "strings3"
dir = "09_strings"
hint = """
-There's tons of useful standard library functions for strings. Let's try and use some of them:
+There are many useful standard library functions for strings. Let's try and use
+some of them:
https://doc.rust-lang.org/std/string/struct.String.html#method.trim
For the `compose_me` method: You can either use the `format!` macro, or convert
diff --git a/solutions/09_strings/strings3.rs b/solutions/09_strings/strings3.rs
index 4e18198..a478e62 100644
--- a/solutions/09_strings/strings3.rs
+++ b/solutions/09_strings/strings3.rs
@@ -1 +1,48 @@
-// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
+fn trim_me(input: &str) -> &str {
+ input.trim()
+}
+
+fn compose_me(input: &str) -> String {
+ // The macro `format!` has the same syntax as `println!`, but it returns a
+ // string instead of printing it to the terminal.
+ // Equivalent to `input.to_string() + " world!"`
+ format!("{input} world!")
+}
+
+fn replace_me(input: &str) -> String {
+ input.replace("cars", "balloons")
+}
+
+fn main() {
+ // You can optionally experiment here.
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn trim_a_string() {
+ assert_eq!(trim_me("Hello! "), "Hello!");
+ assert_eq!(trim_me(" What's up!"), "What's up!");
+ assert_eq!(trim_me(" Hola! "), "Hola!");
+ }
+
+ #[test]
+ fn compose_a_string() {
+ assert_eq!(compose_me("Hello"), "Hello world!");
+ assert_eq!(compose_me("Goodbye"), "Goodbye world!");
+ }
+
+ #[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",
+ );
+ }
+}