typestar

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

  1. Implementar TryFrom te da try_into gratis.
  2. El tipo Error asociado nombra la falla.
  3. La validación vive en un solo lugar, no en cada llamada.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 5 de 5 en Tus propios tipos de error; paso 12 de 15 en Manejo de errores.

← Anterior Siguiente →