Struct, enum e trait

Rust Enums

A type that is exactly one of several variants, where each variant can carry its own data.

  • Intermedio
  • 3 min di lettura
  • 1 esempio eseguibile
Cosa imparerai
  • Variants with data
  • match on an enum
  • Methods on enums
enum Shape
  • Shape
    • Circle(f64)
    • Rectangle { width, height }
    • Point

One of several shapes

An enum is a type whose value is exactly one of a fixed list of variants. In Rust each variant can carry its own data, so one enum can describe several different shapes of information.

Circle carries one number, Rectangle carries two named fields and Point carries nothing. match must handle every variant, so the compiler reports an error if you add a variant and forget a case. {:.2} prints two digits after the decimal point.

Punti chiave

  1. Each variant can hold different data.
  2. match must cover every variant.
  3. Forgetting one is a compile error.

Esempio Rust eseguibile

Rust
Esegui il codice →
main.rs
enum Shape {
    Circle(f64),
    Rectangle { width: f64, height: f64 },
    Point,
}

impl Shape {
    fn area(&self) -> f64 {
        match self {
            Shape::Circle(radius) => 3.14159 * radius * radius,
            Shape::Rectangle { width, height } => width * height,
            Shape::Point => 0.0,
        }
    }
}

fn main() {
    let shapes = [
        Shape::Circle(1.0),
        Shape::Rectangle { width: 2.0, height: 3.5 },
        Shape::Point,
    ];
    for shape in &shapes {
        println!("{:.2}", shape.area());
    }
}
Crea un pulsante Run per questo esempio Risultato dell'esecuzione
3.14
7.00
0.00

Esercitati

Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.

Hai finito questa lezione?

Segnala come imparata per tenere traccia dei tuoi progressi.

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide