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
expecthace panic con tu mensaje cuando el bug es tuyo.assert!documenta un invariante y lo verifica.unwrap_orsigue adelante donde un panic sería una grosería.
Palabras clave y builtins usados aquí
NoneOptionSomeelsefnifletstrusize
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.
Paso 1 de 2 en Panics y recuperación; paso 13 de 15 en Manejo de errores.