typestar

Panic o Result en Rust

Los panics son para bugs; los Results, para condiciones que quien llama puede manejar.

fn parse_index(text: &str, len: usize) -> Option<usize> {
    let idx: usize = text.parse().ok()?;
    if idx < len {
        Some(idx)
    } else {
        None
    }
}

fn main() {
    let items = ["a", "b", "c"];
    assert!(!items.is_empty(), "need at least one item");

    println!("{:?}", parse_index("1", items.len()));
    println!("{:?}", parse_index("9", items.len()));

    let config: Option<&str> = Some("dark");
    println!("{}", config.expect("theme is always set"));
}

Cómo funciona

  1. expect hace panic con tu mensaje cuando el bug es tuyo.
  2. assert! documenta un invariante y lo verifica.
  3. unwrap_or sigue adelante donde un panic sería una grosería.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
430
Tokens
158
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 90 segundos.

Escribe este fragmento

Paso 1 de 2 en Panics y recuperación; paso 13 de 15 en Manejo de errores.

← Anterior Siguiente →