830 B
830 B
Option.
Definition.
enum Option<T> {
None,
Some(T),
}
Usage.
fn maybe_icecream(hour: u16) -> Option<u16> {
if hour > 10 { Some(5) }
else { None }
}
Subtypes.
If-let.
let letter: Option<i32> = Some(12);
if let Some(i) = letter {
// It was Some().
} else {
// It was None.
}
While-let.
let letter: Option<i32> = Some(0);
while let Some(i) = letter {
if i > 9 {
foo();
letter = None;
} else {
bar()
letter = Some(i + 1);
}
}
Match.
Use ref
keyword to borrow value that doesn't implement Copy
trait.
let y: Option<Point> = Some(Point { x: 100, y: 200 });
match y {
Some(ref p) => println!("Co-ordinates are {},{} ", p.x, p.y),
_ => panic!("no match!"),
}