Struct, enum e trait
Rust Option: Some and None
Rust has no null. A value that may be missing is an Option, and the compiler makes you handle None.
Cosa imparerai
- Some(value) and None
- match and unwrap_or
- map on an Option
find_user(id)
Some
- id 1 → Some("Ada")
- use the name
None
- id 3 → None
- handle the missing case
A value that may be missing
Rust has no null. A value that may be missing has the type Option<T>, which is either Some(value) or None. The compiler makes you handle the None case before you can use the value.
find_user returns Some for a known id and None otherwise, and match handles both. unwrap_or supplies a default when the value is missing. map changes the value inside Some and leaves None alone.
Punti chiave
- Option<T> is
Some(value)or None. unwrap_orgives a default.- map changes the value inside Some.
Esempio Rust eseguibile
main.rs
fn find_user(id: u32) -> Option<&'static str> {
match id {
1 => Some("Ada"),
2 => Some("Linus"),
_ => None,
}
}
fn main() {
for id in [1, 3] {
match find_user(id) {
Some(name) => println!("user {id}: {name}"),
None => println!("user {id}: not found"),
}
}
let name = find_user(9).unwrap_or("guest");
println!("{name}");
let length = find_user(2).map(|name| name.len());
println!("{:?}", length);
}
user 1: Ada
user 3: not found
guest
Some(5)Esercitati
Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.
Hai finito questa lezione?
Segnala come imparata per tenere traccia dei tuoi progressi.
I tuoi progressi sono salvati in questo browser Accedi per conservarli su ogni dispositivo.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
- Primo Carattere Unico Trova il primo carattere che compare una sola volta. Facile
- Secondo Valore Più Grande Trova il secondo valore distinto più grande. Facile