summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exercises/03_if/if3.rs21
-rw-r--r--solutions/03_if/if3.rs54
2 files changed, 63 insertions, 12 deletions
diff --git a/exercises/03_if/if3.rs b/exercises/03_if/if3.rs
index d3e4b06..89164eb 100644
--- a/exercises/03_if/if3.rs
+++ b/exercises/03_if/if3.rs
@@ -1,4 +1,5 @@
-fn animal_habitat(animal: &str) -> &'static str {
+fn animal_habitat(animal: &str) -> &str {
+ // TODO: Fix the compiler error in the statement below.
let identifier = if animal == "crab" {
1
} else if animal == "gopher" {
@@ -9,8 +10,8 @@ fn animal_habitat(animal: &str) -> &'static str {
"Unknown"
};
- // DO NOT CHANGE THIS STATEMENT BELOW
- let habitat = if identifier == 1 {
+ // Don't change the expression below!
+ if identifier == 1 {
"Beach"
} else if identifier == 2 {
"Burrow"
@@ -18,37 +19,35 @@ fn animal_habitat(animal: &str) -> &'static str {
"Desert"
} else {
"Unknown"
- };
-
- habitat
+ }
}
fn main() {
// You can optionally experiment here.
}
-// No test changes needed.
+// Don't change the tests!
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn gopher_lives_in_burrow() {
- assert_eq!(animal_habitat("gopher"), "Burrow");
+ assert_eq!(animal_habitat("gopher"), "Burrow")
}
#[test]
fn snake_lives_in_desert() {
- assert_eq!(animal_habitat("snake"), "Desert");
+ assert_eq!(animal_habitat("snake"), "Desert")
}
#[test]
fn crab_lives_on_beach() {
- assert_eq!(animal_habitat("crab"), "Beach");
+ assert_eq!(animal_habitat("crab"), "Beach")
}
#[test]
fn unknown_animal() {
- assert_eq!(animal_habitat("dinosaur"), "Unknown");
+ assert_eq!(animal_habitat("dinosaur"), "Unknown")
}
}
diff --git a/solutions/03_if/if3.rs b/solutions/03_if/if3.rs
index 4e18198..571644d 100644
--- a/solutions/03_if/if3.rs
+++ b/solutions/03_if/if3.rs
@@ -1 +1,53 @@
-// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
+fn animal_habitat(animal: &str) -> &str {
+ let identifier = if animal == "crab" {
+ 1
+ } else if animal == "gopher" {
+ 2
+ } else if animal == "snake" {
+ 3
+ } else {
+ // Any unused identifier.
+ 4
+ };
+
+ // Instead of such an identifier, you would use an enum in Rust.
+ // But we didn't get into enums yet.
+ if identifier == 1 {
+ "Beach"
+ } else if identifier == 2 {
+ "Burrow"
+ } else if identifier == 3 {
+ "Desert"
+ } else {
+ "Unknown"
+ }
+}
+
+fn main() {
+ // You can optionally experiment here.
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn gopher_lives_in_burrow() {
+ assert_eq!(animal_habitat("gopher"), "Burrow")
+ }
+
+ #[test]
+ fn snake_lives_in_desert() {
+ assert_eq!(animal_habitat("snake"), "Desert")
+ }
+
+ #[test]
+ fn crab_lives_on_beach() {
+ assert_eq!(animal_habitat("crab"), "Beach")
+ }
+
+ #[test]
+ fn unknown_animal() {
+ assert_eq!(animal_habitat("dinosaur"), "Unknown")
+ }
+}