Skip to Content
Null & Option

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