Going through rustlings for the first time
at main 944 B view raw
1fn generate_nametag_text(name: String) -> Result<String, String> { 2 // ^^^^^^ ^^^^^^ 3 if name.is_empty() { 4 // `Err(String)` instead of `None`. 5 Err("Empty names aren't allowed".to_string()) 6 } else { 7 // `Ok` instead of `Some`. 8 Ok(format!("Hi! My name is {name}")) 9 } 10} 11 12fn main() { 13 // You can optionally experiment here. 14} 15 16#[cfg(test)] 17mod tests { 18 use super::*; 19 20 #[test] 21 fn generates_nametag_text_for_a_nonempty_name() { 22 assert_eq!( 23 generate_nametag_text("Beyoncé".to_string()).as_deref(), 24 Ok("Hi! My name is Beyoncé"), 25 ); 26 } 27 28 #[test] 29 fn explains_why_generating_nametag_text_fails() { 30 assert_eq!( 31 generate_nametag_text(String::new()) 32 .as_ref() 33 .map_err(|e| e.as_str()), 34 Err("Empty names aren't allowed"), 35 ); 36 } 37}