Un enum de error propio en Rust
Un enum por modo de falla, con un impl de Display que se lee como una oración.
use std::fmt;
#[derive(Debug)]
enum ConfigError {
Missing(String),
OutOfRange { field: String, value: i64 },
}
impl fmt::Display for ConfigError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
ConfigError::Missing(key) => write!(f, "missing key {key}"),
ConfigError::OutOfRange { field, value } => {
write!(f, "{field} out of range: {value}")
}
}
}
}
fn main() {
let err = ConfigError::OutOfRange {
field: "port".to_string(),
value: 99999,
};
println!("{err}");
println!("{:?}", ConfigError::Missing("host".to_string()));
}
Cómo funciona
- Cada variante lleva el detalle que esa falla necesita.
impl Displayes lo que lo vuelve imprimible.- Hacer match sobre el enum deja a quien llama reaccionar por variante.
Palabras clave y builtins usados aquí
ResultStringenumfnfori64implletmatchselfuse
El intento, en números
- Líneas
- 27
- Caracteres a escribir
- 548
- Tokens
- 153
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 87 segundos.
Paso 1 de 5 en Tus propios tipos de error; paso 8 de 15 en Manejo de errores.