TryFrom para conversiones verificadas en Rust
TryFrom es From para conversiones que pueden fallar, y te regala try_into.
use std::convert::TryFrom;
struct Stars(u8);
impl TryFrom<i64> for Stars {
type Error = String;
fn try_from(value: i64) -> Result<Self, Self::Error> {
match value {
0..=3 => Ok(Stars(value as u8)),
other => Err(format!("{other} is not 0 to 3")),
}
}
}
fn main() {
let ok = Stars::try_from(3).map(|s| s.0);
println!("{:?}", ok);
let bad: Result<Stars, String> = 9_i64.try_into();
println!("{}", bad.err().unwrap());
}
Cómo funciona
- Implementar
TryFromte datry_intogratis. - El tipo
Errorasociado nombra la falla. - La validación vive en un solo lugar, no en cada llamada.
Palabras clave y builtins usados aquí
ErrOkResultSelfStringasfnfori64implletmatchstructtypeu8use
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 421
- Tokens
- 146
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 83 segundos.
Paso 5 de 5 en Tus propios tipos de error; paso 12 de 15 en Manejo de errores.