summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Carlson <jrcarl624@gmail.com>2023-07-03 14:52:13 -0400
committerJoshua Carlson <jrcarl624@gmail.com>2023-07-03 14:52:13 -0400
commit287172698aea106723682542e011b64f3d6d218a (patch)
tree627d49750b2bcd61abedad847ef3d8bb7eda9897
parentc5b0627180ae98c41f67e345b2a16ca14a6cffd1 (diff)
added if3 based on: `Using if in a let Statement`
-rw-r--r--exercises/if/if3.rs55
-rw-r--r--info.toml7
2 files changed, 62 insertions, 0 deletions
diff --git a/exercises/if/if3.rs b/exercises/if/if3.rs
new file mode 100644
index 0000000..73a7025
--- /dev/null
+++ b/exercises/if/if3.rs
@@ -0,0 +1,55 @@
+// if3.rs
+//
+// Execute `rustlings hint if3` or use the `hint` watch subcommand for a hint.
+
+// I AM NOT DONE
+
+pub fn animal_habitat(animal: &str) -> &'static str {
+ let identifier = if animal == "crab" {
+ 1
+ } else if animal == "gopher" {
+ 2.0
+ } else if animal == "snake" {
+ 3
+ } else {
+ "Unknown"
+ };
+
+ // DO NOT CHANGE THIS STATEMENT BELOW
+ let habitat = if identifier == 1 {
+ "Beach"
+ } else if identifier == 2 {
+ "Burrow"
+ } else if identifier == 3 {
+ "Desert"
+ } else {
+ "Unknown"
+ };
+
+ habitat
+}
+
+#[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")
+ }
+}
diff --git a/info.toml b/info.toml
index e4863cb..e8a28cb 100644
--- a/info.toml
+++ b/info.toml
@@ -167,6 +167,13 @@ For that first compiler error, it's important in Rust that each conditional
block returns the same type! To get the tests passing, you will need a couple
conditions checking different input values."""
+[[exercises]]
+name = "if3"
+path = "exercises/if/if3.rs"
+mode = "test"
+hint = """
+In Rust, every arm of an `if` expression has to return the same type of value. Make sure the type is consistent across all arms."""
+
# QUIZ 1
[[exercises]]