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,
rustupe Cargo; - Variabili, mutabilità e tipi primitivi;
- Funzioni e controllo di flusso;
- Struttura di un progetto;
- Toolchain,
- Ownership e borrowing
- Ownership e move;
- Riferimenti e borrowing;
- Slice;
- Introduzione ai lifetime;
- Struct, enum e pattern matching
- Struct e blocchi
impl; - Enum;
OptioneResult;- Pattern matching;
- Struct e blocchi
- Gestione degli errori
- Errori recuperabili e
panic!; - L'operatore
?; - Tipi di errore personalizzati con
thiserror; - Errori applicativi con
anyhow;
- Errori recuperabili e
- 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,HashMapeString;- 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;
SendeSync;Mutex,RwLockeArc;- Canali;
- Programmazione asincrona
asynceawait;- 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.