Add sheet 9

This commit is contained in:
Lukas Kalbertodt
2017-01-04 12:40:47 +01:00
parent 9b825336c2
commit 61db78f64b
4 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,7 @@
Aufgabe 1: `try!` für `Option`
==============================
Wir hätten gerne ein Makro `try_opt!()`, welches wie `try!()` funktioniert, allerdings für `Option`s.
`try_opt!(Some(3))` soll zu "3" evaluieren, während `try_opt!(None)` ein early return auslösen soll.
Die beiden vorgegebenen Funktionen sollen wie erwartet funktionieren.

View File

@ -0,0 +1,20 @@
fn main() {
println!("consistent: {:?}", is_home_consistent());
println!("dummy: {:?}", foo());
}
fn foo() -> Option<u8> {
let a: u8 = try_opt!(Some(50));
let b = try_opt!(a.checked_mul(6));
Some(b / 2)
}
fn is_home_consistent() -> Option<bool> {
use std::env;
let home_dir = try_opt!(env::home_dir());
let home_var = try_opt!(env::var_os("HOME"));
Some(home_dir == home_var)
}