Corso di formazione professionale su Rust, indirizzato 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 svolta anche da sola.
Il corso è erogabile sia in lingua italiana che in lingua inglese, e può essere tenuto sia in presenza che da remoto.
Per la partecipazione al corso è richiesta un'ottima capacità di programmazione in almeno un altro linguaggio; è anche richiesto l'accesso ad un computer con sistema operativo 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 lo svolgimento dei moduli saranno proposti esercizi propedeutici all'apprendimento degli argomenti trattati. Per ulteriori informazioni o per richiedere un preventivo è possibile utilizzare il modulo di contatto o scrivere a info@gianmarcotoso.com.