summaryrefslogtreecommitdiff
path: root/exercises/09_strings
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-07-05 13:39:50 +0200
committermo8it <mo8it@proton.me>2024-07-05 13:39:50 +0200
commit7123c7ae3a9605fbe962e4ef0a0f1424cd16fef8 (patch)
treec67f7e62bb9a179ae4fdbab492501cb6847e64c7 /exercises/09_strings
parent77b687d501771c24bd83294d97b8e6f9ffa92d6b (diff)
parent4d9c346a173bb722b929f3ea3c00f84954483e24 (diff)
Merge remote-tracking branch 'upstream/main' into fix-enum-variant-inconsistency
Diffstat (limited to 'exercises/09_strings')
-rw-r--r--exercises/09_strings/strings1.rs18
-rw-r--r--exercises/09_strings/strings2.rs19
-rw-r--r--exercises/09_strings/strings3.rs32
-rw-r--r--exercises/09_strings/strings4.rs50
4 files changed, 55 insertions, 64 deletions
diff --git a/exercises/09_strings/strings1.rs b/exercises/09_strings/strings1.rs
index f50e1fa..6abdbb4 100644
--- a/exercises/09_strings/strings1.rs
+++ b/exercises/09_strings/strings1.rs
@@ -1,17 +1,9 @@
-// strings1.rs
-//
-// Make me compile without changing the function signature!
-//
-// Execute `rustlings hint strings1` or use the `hint` watch subcommand for a
-// hint.
-
-// I AM NOT DONE
+// TODO: Fix the compiler error without changing the function signature.
+fn current_favorite_color() -> String {
+ "blue"
+}
fn main() {
let answer = current_favorite_color();
- println!("My current favorite color is {}", answer);
-}
-
-fn current_favorite_color() -> String {
- "blue"
+ println!("My current favorite color is {answer}");
}
diff --git a/exercises/09_strings/strings2.rs b/exercises/09_strings/strings2.rs
index 4d95d16..93d9cb6 100644
--- a/exercises/09_strings/strings2.rs
+++ b/exercises/09_strings/strings2.rs
@@ -1,21 +1,14 @@
-// strings2.rs
-//
-// Make me compile without changing the function signature!
-//
-// Execute `rustlings hint strings2` or use the `hint` watch subcommand for a
-// hint.
-
-// I AM NOT DONE
+// TODO: Fix the compiler error in the `main` function without changing this function.
+fn is_a_color_word(attempt: &str) -> bool {
+ attempt == "green" || attempt == "blue" || attempt == "red"
+}
fn main() {
- let word = String::from("green"); // Try not changing this line :)
+ let word = String::from("green"); // Don't change this line.
+
if is_a_color_word(word) {
println!("That is a color word I know!");
} else {
println!("That is not a color word I know.");
}
}
-
-fn is_a_color_word(attempt: &str) -> bool {
- attempt == "green" || attempt == "blue" || attempt == "red"
-}
diff --git a/exercises/09_strings/strings3.rs b/exercises/09_strings/strings3.rs
index b29f932..39fce18 100644
--- a/exercises/09_strings/strings3.rs
+++ b/exercises/09_strings/strings3.rs
@@ -1,23 +1,17 @@
-// strings3.rs
-//
-// 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!
- ???
+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's 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() {
+ // You can optionally experiment here.
}
#[cfg(test)]
@@ -39,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/exercises/09_strings/strings4.rs b/exercises/09_strings/strings4.rs
index e8c54ac..9d9eb48 100644
--- a/exercises/09_strings/strings4.rs
+++ b/exercises/09_strings/strings4.rs
@@ -1,30 +1,36 @@
-// strings4.rs
-//
-// Ok, here are a bunch of values-- some are `String`s, some are `&str`s. Your
-// task is to call one of these two functions on each value depending on what
-// you think each value is. That is, add either `string_slice` or `string`
-// before the parentheses on each line. If you're right, it will compile!
-//
-// No hints this time!
-
-// I AM NOT DONE
+// Calls of this function should be replaced with calls of `string_slice` or `string`.
+fn placeholder() {}
fn string_slice(arg: &str) {
- println!("{}", arg);
+ println!("{arg}");
}
fn string(arg: String) {
- println!("{}", arg);
+ println!("{arg}");
}
+// TODO: Here are a bunch of values - some are `String`, some are `&str`.
+// Your task is to replace `placeholder(…)` with either `string_slice(…)`
+// or `string(…)` depending on what you think each value is.
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());
+ placeholder("blue");
+
+ placeholder("red".to_string());
+
+ placeholder(String::from("hi"));
+
+ placeholder("rust is fun!".to_owned());
+
+ placeholder("nice weather".into());
+
+ placeholder(format!("Interpolation {}", "Station"));
+
+ // WARNING: This is byte indexing, not character indexing.
+ // Character indexing can be done using `s.chars().nth(INDEX)`.
+ placeholder(&String::from("abc")[0..1]);
+
+ placeholder(" hello there ".trim());
+
+ placeholder("Happy Monday!".replace("Mon", "Tues"));
+
+ placeholder("mY sHiFt KeY iS sTiCkY".to_lowercase());
}