mirror of
https://github.com/LukasKalbertodt/programmieren-in-rust.git
synced 2025-06-29 00:07:31 +02:00
Rename sheet folders to assure proper sorting
This commit is contained in:
7
aufgaben/sheet09/task1/README.md
Executable file
7
aufgaben/sheet09/task1/README.md
Executable 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.
|
20
aufgaben/sheet09/task1/try-opt.rs
Executable file
20
aufgaben/sheet09/task1/try-opt.rs
Executable 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)
|
||||
}
|
Reference in New Issue
Block a user