Rustでは値が存在するか不在かという概念をnullではなくenumで実現する。
pub enum Option<T> {
None,
Some(T),
}
fn square(x: Option<i32>) -> Option<i32> {
match x {
None => None,
Some(i) => Some(i * i),
}
}
let b = Some(5);
let a = square(b);
let none = square(None);