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

Decisiones que llevan datos

Prestar y devolver son acciones distintas, pero ambas necesitan una cantidad. Un enum expresa estas alternativas.

Rutas de aprendizaje10 min

Vamos a descubrir juntos

  1. 1

    enum Action { Take(u16), Return(u16) } define dos variantes. Cada una lleva una cantidad. Action::Take(2) no es solo el número 2: también expresa la intención de prestar.

  2. 2

    match action elige el brazo correspondiente. En Action::Take(n), n recibe la cantidad de esa variante. El resultado de la expresión puede alimentar let available.

  3. 3

    match debe cubrir todas las posibilidades. Añadir una variante exige revisar los matches sin un brazo genérico. Esto ayuda a encontrar decisiones olvidadas.

  4. 4

    Estos ejemplos usan cantidades previamente válidas. Un enum por sí solo no garantiza existencias ni una devolución legítima. El proyecto final aplica esas reglas con Result antes de cambiar el estado.

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.

enum Action { Take(u16), Return(u16) }
fn change(stock: u16, action: Action) -> u16 {
    match action { Action::Take(n) => stock - n, Action::Return(n) => stock + n }
}
fn main() { println!("{}", change(5, Action::Take(2))); }

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Representar alternativas con enum y tratarlas todas con match.

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.

enum Action { Take(u16), Return(u16) }
fn change(stock: u16, action: Action) -> u16 {
    match action { Action::Take(n) => stock - n, Action::Return(n) => stock + n }
}
fn main() { println!("{}", change(5, Action::Take(2))); }
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿Qué garantiza aquí un match exhaustivo?

Necesito una pista

Cubrir variantes y validar cantidades son responsabilidades distintas.

Cargando tu camino…

Llévatelo contigo

Añade una variante Inspect sin cantidad. Predice el diagnóstico antes de compilar; después añade un brazo que conserve las existencias.

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.