Rullst AcademyRullst Academy/Lección
Rust II: datos, decisiones y confianza · Lección 09 / 12

Propagar sin esconder

Un registro une nombre y cantidad. Cada etapa puede fallar; ? detiene el recorrido con el error correspondiente.

Rutas de aprendizaje12 min

Vamos a descubrir juntos

  1. 1

    Nuestro formato didáctico es nombre;cantidad, como sensor;3. split_once encuentra el primer separador. ok_or("format") convierte su Option en Result: si falta separador hay un error de formato.

  2. 2

    quantity(raw)? continúa con el número si recibe Ok. Si recibe Err, devuelve inmediatamente ese error desde la función actual. No corrige el texto ni reintenta la llamada.

  3. 3

    Aquí ambas funciones devuelven el mismo tipo de error, &'static str. ? también puede convertir errores compatibles en otros programas; la función necesita un retorno compatible.

  4. 4

    Esto no es un lector CSV general: no hay comillas, escape ni separadores dentro del nombre. Documentar los límites evita prometer demasiado. En el proyecto se validan todos los registros antes de usar la colección.

DE LA LECCIÓN A LA PRÁCTICA

Una guía para seguir a tu ritmo

Lee los pasos antes de usar la referencia de abajo. Los comandos se ejecutan en el terminal del sistema indicado; el registro ocurre en el sitio oficial. Los ejercicios de Rullst Academy son práctica y no verifican tu instalación ni cuenta externa.

fn quantity(text: &str) -> Result<u16, &'static str> {
    let n = text.trim().parse::<u16>().map_err(|_| "number")?;
    if !(1..=20).contains(&n) { return Err("range"); }
    Ok(n)
}
fn parse_line(line: &str) -> Result<u16, &'static str> {
    let (name, raw) = line.split_once(';').ok_or("format")?;
    if name.trim().is_empty() { return Err("name"); }
    let amount = quantity(raw)?;
    Ok(amount)
}
fn main() { println!("{:?}", parse_line("sensor;3")); }

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Leer registros simples y explicar cómo ? propaga errores.

Ahora te toca

Taller de descubrimientos

Lee, predice, investiga

Predice antes de mostrar. Este panel revela resultados preparados; no compila tu código. Los errores se resumen; el texto exacto puede variar con la versión del compilador.
Mini experimento

Simulación didáctica: compara tarjetas y comprueba tus predicciones. El navegador no compila Rust ni inicia un servidor.

fn quantity(text: &str) -> Result<u16, &'static str> {
    let n = text.trim().parse::<u16>().map_err(|_| "number")?;
    if !(1..=20).contains(&n) { return Err("range"); }
    Ok(n)
}
fn parse_line(line: &str) -> Result<u16, &'static str> {
    let (name, raw) = line.split_once(';').ok_or("format")?;
    if name.trim().is_empty() { return Err("name"); }
    let amount = quantity(raw)?;
    Ok(amount)
}
fn main() { println!("{:?}", parse_line("sensor;3")); }
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿Qué ocurre cuando quantity devuelve Err?

Necesito una pista

Observa el retorno anticipado, no solo el Ok final.

Cargando tu camino…

Llévatelo contigo

Añade pruebas para sensor, ;3 y sensor;21. Dibuja las etapas y marca dónde se detiene cada entrada. Decide qué significaría otra línea antes de cambiar el parser.

RUST II · .rs

Tu espacio de práctica Rust II

Lee, predice y responde aquí. Para compilar realmente, extrae el ZIP en una carpeta nueva, abre la terminal junto a Cargo.toml y usa estos comandos. Debes tener instalados Rust y las herramientas de tu sistema.

cargo check --offline
cargo test --offline
cargo run --offline
Mis archivos y GitHub

El editor guarda un borrador en este navegador y permite descargar o publicar tu .rs. Para ejecutarlo en el proyecto, guarda el archivo editado como src/main.rs. El ZIP contiene la versión inicial; los resultados preparados no cambian con tus ediciones. La evaluación online no verifica ejecución local.

A tu ritmo

Mis archivos y GitHub

Cada lección puede convertirse en un registro propio: código, notas o un plan de práctica. Guardar un archivo en GitHub es opcional y no cambia tus XP.

Manual del alumno

El editor y las descargas se abren cuando esta lección esté disponible para tu cuenta. Revisa el acceso indicado abajo o vuelve al mapa de la ruta.

Comprobando tu acceso a esta lección…

Rullstpetbot

La IA puede equivocarse. Consulta el material de la lección.