Tony Hoare called null references his 'billion-dollar mistake' — decades of crashes, security holes, and 3 a.m. pages, all from a value that claims to be there and isn't. Rust simply doesn't have null. In its place: Option.
Absence as a type
Option<T> is an enum with two variants: Some(T) (a value is present) and None (nothing here). 'Might be missing' becomes part of the type. A function that may not find a result returns Option<T>, and the caller cannot use the inner value without first dealing with the None case. The compiler won't let absence slip through.
You must open the box
You can't accidentally use an Option as if it were the value inside — they're different types. To get at the T, you match on it, use if let, or call a method like unwrap_or. The 'forgot to null-check' bug is gone: the type system makes the check mandatory.
unwrap: the loaded gun
.unwrap() extracts the value but panics if it's None. It's fine in examples and tests; in real code it's a deliberate 'I'm certain this is Some, crash if I'm wrong.' Prefer unwrap_or, unwrap_or_else, map, or a match — they make you say what happens when the value is absent, instead of crashing.