lezione 05

error handling

result, option e match.

livello: intermedio durata: 24 min output: flussi robusti badge: rust essentials

result e option

fn load(ok: bool) -> Result<String, String> {
  if ok { Ok("ok".into()) } else { Err("fail".into()) }
}

match

match s {
  State::Draft => println!("draft"),
  State::Published => println!("pub"),
}

borrowing

let name = String::from("samir");
let view = &name;
println!("{}", view);

ownership

let name = String::from("samir");
let moved = name;

esercizi

gestisci un Result e propaga l'errore.

fn load(ok: bool) -> Result<String, String> {
  if ok { Ok("ok".into()) } else { Err("fail".into()) }
}

panoramica

In questo capitolo su error handling lavoriamo su result e option, match, borrowing, ownership 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 result e option in uno scenario reale
  • capire e applicare match in uno scenario reale
  • capire e applicare borrowing in uno scenario reale
  • capire e applicare ownership in uno scenario reale

scheda rapida

fn load(ok: bool) -> Result<String, String> {
  if ok { Ok("ok".into()) } else { Err("fail".into()) }
}

adatta questo scheletro agli esempi della lezione.

tips

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

tip: documenta ogni scelta architetturale.

mini progetto

propaga errori con Result.

  • crea Result
  • usa ?
  • gestisci

output atteso: error handling pulito.

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