lezione 06

traits e generics

traits, bounds e codice riusabile.

livello: avanzato durata: 32 min output: api generiche badge: rust essentials

traits

trait Render { fn render(&self) -> String; }

generics

fn first<T>(items: Vec<T>) -> Option<T> { items.into_iter().next() }

struct

struct Project { name: String, shots: u32 }
let p = Project { name: "Nova".into(), shots: 12 };

iterators

let out: Vec<i32> = (1..4).map(|x| x * 2).collect();

esercizi

crea una struct e usa vec per salvarla.

struct Item { id: i32, name: String }
let items = vec![Item { id: 1, name: "A".into() }];
println!("{}", items.len());

panoramica

In questo capitolo su traits e generics lavoriamo su traits, generics, struct, iterators per creare micro-pattern riutilizzabili.

lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali.

badge: rust essentials

obiettivi

  • capire e applicare traits in uno scenario reale
  • capire e applicare generics in uno scenario reale
  • capire e applicare struct in uno scenario reale
  • capire e applicare iterators in uno scenario reale

scheda rapida

trait Render { fn render(&self) -> String; }

adatta questo scheletro agli esempi della lezione.

tips

  • gestisci sempre Result
  • preferisci iterators
  • usa cargo fmt
  • separa moduli per dominio
  • riduci mutabilità
  • mantieni traits leggibile

tip: documenta ogni scelta architetturale.

mini progetto

crea un dataset con struct e vec.

  • definisci struct
  • crea vec
  • stampa

output atteso: dataset inizializzato.

checklist

  • ho eseguito gli snippet e controllato l'output
  • ho annotato almeno 2 trade-off
  • ho completato il mini progetto
  • ho salvato un riepilogo personale
start a brief