Structs, enums y 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.

  • Intermedio
  • 3 min de lectura
  • 1 ejemplo ejecutable
Lo que aprenderás
  • 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.

Puntos clave

  1. Option<T> is Some(value) or None.
  2. unwrap_or gives a default.
  3. map changes the value inside Some.

Ejemplo ejecutable de Rust

Rust
Ejecutar código →
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);
}
Obtén un botón Run para este ejemplo Resultado de ejecutar el código
user 1: Ada
user 3: not found
guest
Some(5)

Practica

Abre el ejemplo en el compilador online, cambia un valor o añade una línea y predice la salida antes de ejecutarlo. Después rompe el código a propósito y lee el mensaje del compilador.

¿Terminaste esta lección?

Márcala como aprendida para seguir tu progreso.

Practica con un reto

Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.

Todos los retos