lezione 08

async

async/await e task.

livello: avanzato durata: 30 min output: task asincroni badge: rust essentials

async

async fn fetch() -> String { "ok".into() }

result e option

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

ownership

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

vec e hashmap

let mut tags = vec!["ai", "film"];
tags.push("photo");

esercizi

definisci una funzione async e chiamala.

async fn load() -> i32 { 42 }
// usa un runtime async per eseguire load()

panoramica

In questo capitolo su async lavoriamo su async, result e option, ownership, vec e hashmap 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 async in uno scenario reale
  • capire e applicare result e option in uno scenario reale
  • capire e applicare ownership in uno scenario reale
  • capire e applicare vec e hashmap in uno scenario reale

scheda rapida

async fn fetch() -> String { "ok".into() }

adatta questo scheletro agli esempi della lezione.

tips

  • gestisci sempre Result
  • preferisci iterators
  • usa cargo fmt
  • separa moduli per dominio
  • riduci mutabilità
  • gestisci timeout e cancellazioni

tip: documenta ogni scelta architetturale.

mini progetto

implementa una funzione async base.

  • scrivi async fn
  • esegui con runtime
  • stampa

output atteso: task completato.

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