summaryrefslogtreecommitdiff
path: root/exercises/error_handling/option1.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/error_handling/option1.rs')
-rwxr-xr-xexercises/error_handling/option1.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/exercises/error_handling/option1.rs b/exercises/error_handling/option1.rs
new file mode 100755
index 0000000..9cf0bc9
--- /dev/null
+++ b/exercises/error_handling/option1.rs
@@ -0,0 +1,45 @@
+// option1.rs
+// This example panics because the second time it calls `pop`, the `vec`
+// is empty, so `pop` returns `None`, and `unwrap` panics if it's called
+// on `None`. Handle this in a more graceful way than calling `unwrap`!
+// Scroll down for hints :)
+
+fn main() {
+ let mut list = vec![3];
+
+ let last = list.pop().unwrap();
+ println!("The last item in the list is {:?}", last);
+
+ let second_to_last = list.pop().unwrap();
+ println!("The second-to-last item in the list is {:?}", second_to_last);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// Try using a `match` statement where the arms are `Some(thing)` and `None`.
+// Or set a default value to print out if you get `None` by using the
+// function `unwrap_or`.
+// Or use an `if let` statement on the result of `pop()` to both destructure
+// a `Some` value and only print out something if we have a value!