0Pricing
Learn Rust Coding · Lección

Definir su primer enum

Cree tipos enumerados sencillos

Definir su primer enum es una lección gratuita de Learn Rust Coding en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn Rust Coding, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn Rust Coding incluye 4 lecciones en total.

What Is an Enum?

Un enum (enumeración) le permite definir un tipo listando sus posibles valores, llamados variantes. Un valor de ese tipo solo puede ser una de esas variantes.

Los enums son útiles cuando algo tiene un conjunto fijo de estados, como los puntos cardinales o los palos de una baraja de cartas.

enum Direction {
    North,
    South,
    East,
    West,
}

Declaring an Enum

Declaras un enum con la palabra clave enum, un nombre y una lista de variantes separadas por comas dentro de llaves.

Por convención, los nombres de los enum utilizan PascalCase (como Direction), al igual que los nombres de las variantes (como North).

enum TrafficLight {
    Red,
    Yellow,
    Green,
}

Creating an Enum Value

Para crear un valor, escribe el nombre de la enumeración, dos dos puntos :: y luego la variante.

Por ejemplo, Direction::North crea un valor de tipo Direction. Los :: le indican a Rust a qué enumeración pertenece la variante.

enum Direction {
    North,
    South,
    East,
    West,
}

fn main() {
    let heading = Direction::East;
    println!("Created a direction value!");
}

Enums Are Types

Una vez definido, un enum es un tipo real al igual que i32 o bool. Puedes almacenar sus valores en variables y pasarlos a funciones.

Una función que recibe un Direction aceptará cualquiera de sus variantes, pero nada más.

enum Direction {
    North,
    South,
}

fn describe(d: Direction) {
    println!("Got a direction");
}

fn main() {
    describe(Direction::North);
}

Why Not Just Use Numbers?

Podrías representar un semáforo con 0, 1 y 2, pero nada te impide usar 7 por error.

Una enumeración (enum) hace que los estados inválidos sean imposibles: el compilador garantiza que el valor sea siempre una de las variantes enumeradas. Esto es más seguro y mucho más fácil de leer.

Derivar Debug para imprimir

De forma predeterminada, Rust no sabe cómo imprimir un enum. Añadir #[derive(Debug)] encima del enum permite imprimirlo con el formateador {:?}.

Esto resulta muy útil para depurar rápidamente mientras aprende.

#[derive(Debug)]
enum Direction {
    North,
    South,
}

fn main() {
    let d = Direction::South;
    println!("{:?}", d);
}

Comparar valores de un enum

Añada #[derive(PartialEq)] para poder comparar variantes con ==.

Esto resulta práctico para comprobaciones sencillas, aunque para comportamientos más complejos, la expresión match (que verá próximamente) suele ser una herramienta mejor.

#[derive(PartialEq)]
enum Light {
    Red,
    Green,
}

fn main() {
    let l = Light::Red;
    if l == Light::Red {
        println!("Stop!");
    }
}

Se permiten muchas variantes

Un enum puede tener tantas variantes como necesite. Todas forman parte del mismo tipo.

Enumerar juntos los estados relacionados mantiene el código organizado y hace evidentes de un vistazo las opciones posibles.

enum Suit {
    Hearts,
    Diamonds,
    Clubs,
    Spades,
}

Enums en la biblioteca estándar

La propia biblioteca estándar de Rust utiliza enums en todas partes. Dos ejemplos famosos son Option (un valor que puede estar presente o ausente) y Result (éxito o error).

Aprender sobre enums ahora le prepara para comprender estos tipos fundamentales más adelante.

// Option is an enum in std:
// enum Option<T> {
//     Some(T),
//     None,
// }

Copiar enums sencillos

Los enums cuyas variantes no contienen datos pueden derivar Clone y Copy. Así, los valores se copian automáticamente en lugar de moverse.

Esto hace que los enums pequeños que representan estados se comporten como valores simples, como los enteros.

#[derive(Clone, Copy)]
enum Coin {
    Heads,
    Tails,
}

fn main() {
    let a = Coin::Heads;
    let b = a; // a is still usable
}

Cómo integrarlo todo

Aquí tiene un programa completo: define un enum, crea un valor y lo imprime mediante Debug.

Ejecútelo y pruebe a cambiar Green por otra variante para ver cómo se actualiza la salida.

#[derive(Debug)]
enum TrafficLight {
    Red,
    Yellow,
    Green,
}

fn main() {
    let current = TrafficLight::Green;
    println!("Light is {:?}", current);
}

Comprobación rápida

Compruebe su comprensión de los conceptos básicos de los enums.

Resumen

Ha aprendido que un enum define un tipo a partir de una lista fija de variantes, declarada con la palabra clave enum.

Los valores se crean con EnumName::Variant, y puede derivar Debug, PartialEq o Copy para imprimirlos, compararlos y copiarlos. A continuación, aprenderá a reaccionar ante cada variante con match.

Preguntas frecuentes

¿La lección «Definir su primer enum» es gratis?

Sí — el texto completo de «Definir su primer enum» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn Rust Coding, actualiza a CoddyKit PRO. El curso de Learn Rust Coding incluye 4 lecciones en total.

¿Qué aprenderé en «Definir su primer enum»?

Cree tipos enumerados sencillos Practicas Learn Rust Coding con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn Rust Coding?

No se requiere experiencia previa. Learn Rust Coding en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Definir su primer enum»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn Rust Coding?

Sí. Cada lección de Learn Rust Coding incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Definir su primer enum
  2. Usar match con variantes de enum
  3. Enums con datos
  4. Guardas y vinculaciones en match
← Volver a Learn Rust Coding