Destructuring
Struct, enum e tuple
Destructuring è una lezione Learn Rust Coding gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn Rust Coding, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn Rust Coding include 4 lezioni in totale.
Che cos'è la destrutturazione?
La destrutturazione scompone un valore composto nelle sue parti usando un pattern. Funziona con tuple, struct, enum, array e altro.
Destrutturare le tuple
Associ ogni elemento di una tupla alla propria variabile in un unico let.
fn main() {
let point = (3, 7);
let (x, y) = point;
println!("x = {x}, y = {y}");
}Ignorare parti di una tupla
Usi _ per ignorare un valore e .. per ignorarne diversi.
fn main() {
let data = (1, 2, 3, 4);
let (first, .., last) = data;
println!("{first} ... {last}");
}Destrutturare le struct
Estragga i campi da una struct in base al nome. I nomi delle variabili associate possono coincidere con quelli dei campi oppure essere rinominati.
struct Point {
x: i32,
y: i32,
}
fn main() {
let p = Point { x: 10, y: 20 };
let Point { x, y } = p;
println!("{x}, {y}");
}Rinominare i campi
Usi field: new_name per associare un campo di una struct a una variabile con un nome diverso.
struct Config {
width: u32,
height: u32,
}
fn main() {
let c = Config { width: 800, height: 600 };
let Config { width: w, height: h } = c;
println!("{w} x {h}");
}Ignorare i campi di una struct
.. ignora i campi rimanenti che non servono.
struct User {
name: String,
age: u32,
active: bool,
}
fn main() {
let u = User { name: "Ada".into(), age: 36, active: true };
let User { name, .. } = u;
println!("{name}");
}Destrutturare gli enum
In un match, destrutturi le varianti di un enum per estrarne i dati.
enum Event {
Click { x: i32, y: i32 },
Key(char),
}
fn main() {
let e = Event::Click { x: 5, y: 8 };
match e {
Event::Click { x, y } => println!("click at {x},{y}"),
Event::Key(c) => println!("key {c}"),
}
}Destrutturazione nei parametri
I parametri delle funzioni possono essere destrutturati direttamente, una soluzione utile per tuple e struct piccole.
fn distance((x1, y1): (f64, f64), (x2, y2): (f64, f64)) -> f64 {
((x2 - x1).powi(2) + (y2 - y1).powi(2)).sqrt()
}
fn main() {
println!("{}", distance((0.0, 0.0), (3.0, 4.0)));
}Destrutturazione annidata
I pattern possono essere annidati liberamente, consentendo di raggiungere strutture profonde in un solo passaggio.
struct Line {
start: (i32, i32),
end: (i32, i32),
}
fn main() {
let line = Line { start: (0, 0), end: (4, 5) };
let Line { start: (sx, sy), end: (ex, ey) } = line;
println!("from {sx},{sy} to {ex},{ey}");
}Destrutturare array e slice
È possibile destrutturare array e slice, anche acquisendone la parte centrale con ...
fn main() {
let arr = [1, 2, 3, 4, 5];
let [first, .., last] = arr;
println!("first {first}, last {last}");
}Destrutturazione nei cicli for
La destrutturazione funziona anche nei cicli for, una soluzione ideale per iterare su coppie di valori.
fn main() {
let pairs = [("a", 1), ("b", 2), ("c", 3)];
for (label, value) in pairs {
println!("{label} = {value}");
}
}Verifica rapida
Come si ignorano i campi rimanenti di una struct durante la destrutturazione?
Riepilogo
Ha imparato la destrutturazione:
- Scomporre tuple, struct, enum, array e slice
- Rinominare i campi con
field: name - Ignorare parti con
_e.. - Destrutturare in
let,matche nei parametri delle funzioni - Annidare i pattern per estrarre dati in profondità
Domande Frequenti
La lezione «Destructuring» è gratuita?
Sì — il testo completo di «Destructuring» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn Rust Coding, passa a CoddyKit PRO. Il corso Learn Rust Coding include 4 lezioni in totale.
Cosa imparerò in «Destructuring»?
Struct, enum e tuple Eserciti Learn Rust Coding con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn Rust Coding?
Non è richiesta alcuna esperienza precedente. Learn Rust Coding su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Destructuring»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn Rust Coding?
Sì. Ogni lezione Learn Rust Coding include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.