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}