Structs, enums e traits
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.
O que você vai aprender
- 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.
Pontos-chave
- Option<T> is
Some(value)or None. unwrap_orgives a default.- map changes the value inside Some.
Exemplo executável de Rust
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)Pratique
Abra o exemplo no compilador online, mude um valor ou adicione uma linha e tente prever a saída antes de executar. Depois quebre o código de propósito e leia a mensagem do compilador.
Terminou esta lição?
Marque como aprendida para acompanhar seu progresso.
Seu progresso está salvo neste navegador Entre para mantê-lo em todos os dispositivos.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
- Primeiro Caractere Único Encontre o primeiro caractere que aparece apenas uma vez. Fácil
- Segundo Maior Valor Encontre o segundo maior valor distinto. Fácil