summaryrefslogtreecommitdiff
path: root/exercises
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-06-26 15:06:29 +0200
committermo8it <mo8it@proton.me>2024-06-26 15:06:29 +0200
commit097f3c74ea16bad95a659fc41a494f24e07656d1 (patch)
tree20fe2f1dec05a13aece74333254813f375468fb9 /exercises
parent25b5686dd2ab2e3d5a228a71e9631c50ea50fffe (diff)
errors1 solution
Diffstat (limited to 'exercises')
-rw-r--r--exercises/13_error_handling/errors1.rs30
1 files changed, 15 insertions, 15 deletions
diff --git a/exercises/13_error_handling/errors1.rs b/exercises/13_error_handling/errors1.rs
index e3e0482..6d9701b 100644
--- a/exercises/13_error_handling/errors1.rs
+++ b/exercises/13_error_handling/errors1.rs
@@ -1,22 +1,22 @@
-// This function refuses to generate text to be printed on a nametag if you pass
-// it an empty string. It'd be nicer if it explained what the problem was,
-// instead of just sometimes returning `None`. Thankfully, Rust has a similar
-// construct to `Option` that can be used to express error conditions. Let's use
-// it!
-
-fn main() {
- // You can optionally experiment here.
-}
-
+// TODO: This function refuses to generate text to be printed on a nametag if
+// you pass it an empty string. It'd be nicer if it explained what the problem
+// was instead of just returning `None`. Thankfully, Rust has a similar
+// construct to `Option` that can be used to express error conditions. Change
+// the function signature and body to return `Result<String, String>` instead
+// of `Option<String>`.
fn generate_nametag_text(name: String) -> Option<String> {
if name.is_empty() {
// Empty names aren't allowed.
None
} else {
- Some(format!("Hi! My name is {}", name))
+ Some(format!("Hi! My name is {name}"))
}
}
+fn main() {
+ // You can optionally experiment here.
+}
+
#[cfg(test)]
mod tests {
use super::*;
@@ -24,17 +24,17 @@ mod tests {
#[test]
fn generates_nametag_text_for_a_nonempty_name() {
assert_eq!(
- generate_nametag_text("Beyoncé".into()),
- Ok("Hi! My name is Beyoncé".into())
+ generate_nametag_text("Beyoncé".to_string()).as_deref(),
+ Ok("Hi! My name is Beyoncé"),
);
}
#[test]
fn explains_why_generating_nametag_text_fails() {
assert_eq!(
- generate_nametag_text("".into()),
+ generate_nametag_text(String::new()).as_deref(),
// Don't change this line
- Err("`name` was empty; it must be nonempty.".into())
+ Err("`name` was empty; it must be nonempty."),
);
}
}