No null — Option<T>
Rust has no null. Absence is a value of type Option<T>:
enum Option<T> { Some(T), None }Kotlin
val name: String? = null
val name: String? = "Ada"Rust
let name: Option<String> = None;
let name: Option<String> = Some("Ada".to_string());Handling it — several ergonomic tools that map onto Kotlin habits:
// Kotlin: name?.length // map over Some
let len: Option<usize> = name.map(|n| n.len());
// Kotlin: name ?: "default" // provide a fallback
let n = name.unwrap_or("default".to_string());
let n = name.unwrap_or_else(|| expensive());
// Kotlin: name!! // assert non-null (panics if None)
let n = name.unwrap(); // or .expect("name must be set")
// Kotlin: if (name != null) { use(name) } // smart-cast style
if let Some(n) = &name {
println!("{n}");
}? also works on Option inside a function returning Option — early-returns None.
Last updated on