67 lines
1.6 KiB
Rust

// if3.rs
//
// Execute `rustlings hint if3` or use the `hint` watch subcommand for a hint.
pub fn animal_habitat(animal: &str) -> &'static str {
let identifier = if animal == "crab" {
1
} else if animal == "gopher" {
2
} else if animal == "snake" {
3
} else {
4
};
/// The value of `identifier` can be either an integer or a string.
/// If `animal` is "crab", the value is 1.
/// If `animal` is "gopher", the value is 2.0.
/// If `animal` is "snake", the value is 3.
/// Otherwise, the value is "Unknown".
///
/// The type `&'static str` represents a string slice that has a static lifetime,
/// meaning it is available for the entire duration of the program.
/// In this case, it represents a string literal that will be stored in the program's
/// binary and can be safely referenced for the entire program's execution.
// 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
}
// No test changes needed.
#[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")
}
}