Corso Rust

Formazione professionale per sviluppatori backend e di sistema

Corso di formazione professionale su Rust, rivolto a sviluppatori con esperienza in altri linguaggi che vogliono usare Rust per lo sviluppo di servizi backend, strumenti a riga di comando e applicazioni distribuite come singolo eseguibile.

Il corso è diviso in due parti: la prima è dedicata al linguaggio, la seconda allo sviluppo di un servizio backend con Tokio, Axum e sqlx. La prima parte può essere seguita anche separatamente.

Il corso si tiene in italiano o in inglese, in presenza a Torino o da remoto.

Per partecipare servono ottime capacità di programmazione in almeno un altro linguaggio e un computer con Linux, Mac o Windows con WSL2.

I moduli previsti, ciascuno della durata di mezza giornata (4 ore), sono i seguenti:

  • Introduzione a Rust
    • Toolchain, rustup e Cargo;
    • Variabili, mutabilità e tipi primitivi;
    • Funzioni e controllo di flusso;
    • Struttura di un progetto;
  • Ownership e borrowing
    • Ownership e move;
    • Riferimenti e borrowing;
    • Slice;
    • Introduzione ai lifetime;
  • Struct, enum e pattern matching
    • Struct e blocchi impl;
    • Enum;
    • Option e Result;
    • Pattern matching;
  • Gestione degli errori
    • Errori recuperabili e panic!;
    • L'operatore ?;
    • Tipi di errore personalizzati con thiserror;
    • Errori applicativi con anyhow;
  • Trait e generics
    • Trait e implementazioni;
    • Generics e trait bound;
    • Trait object e dispatch dinamico;
    • Trait della libreria standard (From, Display, Default, Iterator);
  • Collezioni, iteratori e closure
    • Vec, HashMap e String;
    • Iteratori e adattatori;
    • Closure;
    • Smart pointer (Box, Rc, Arc);
  • Moduli, crate e testing
    • Moduli e visibilità;
    • Crate, dipendenze e workspace;
    • Test unitari e di integrazione;
    • Documentazione con rustdoc;
  • Concorrenza
    • Thread;
    • Send e Sync;
    • Mutex, RwLock e Arc;
    • Canali;
  • Programmazione asincrona
    • async e await;
    • Il runtime Tokio;
    • Task, select! e cancellazione;
    • I/O asincrono;
  • Backend con Axum (prima parte)
    • Routing ed estrattori;
    • Stato condiviso;
    • Serializzazione con Serde;
    • Gestione degli errori nelle risposte;
  • Backend con Axum (seconda parte)
    • Middleware e layer Tower;
    • Accesso al database con sqlx;
    • Migrazioni e transazioni;
    • Documentazione OpenAPI con utoipa;
  • Distribuzione (opzionale)
    • Configurazione dell'applicazione;
    • Build statiche e cross-compilazione;
    • Interfaccia web inclusa nell'eseguibile;
    • Logging e tracing;

Durante i moduli sono previsti esercizi per mettere in pratica gli argomenti trattati.