- Il Linguaggio di Programmazione Rust
- Prefazione
- Introduzione
- 1. Primi Passi
- 1.1. Installazione
- 1.2. Hello, World!
- 1.3. Hello, Cargo!
- 2. Programmare un Gioco di Indovinelli
- 3. Concetti Comuni di Programmazione
- 3.1. Variabili e Mutabilità
- 3.2. Tipi di Dato
- 3.3. Funzioni
- 3.4. Commenti
- 3.5. Controllare il Flusso
- 4. Capire la Ownership
- 4.1. Cos’è la Ownership?
- 4.2. Reference e Borrowing
- 4.3. Il Type Slice
- 5. Utilizzare le Struct per Strutturare Dati Correlati
- 5.1. Definire e Istanziare le Struct
- 5.2. Un Esempio di Programma Che Usa Struct
- 5.3. Metodi
- 6. Enumerazioni e Corrispondenza dei Pattern
- 6.1. Definire un’Enum
- 6.2. Controllare il Flusso col Costrutto match
- 6.3. Controllare il Flusso con if let e let else
- 7. Pacchetti, Crate, e Moduli
- 7.1. Pacchetti e Crate
- 7.2. Controllare Scope e Privacy con i Moduli
- 7.3. Percorsi per Fare Riferimento a un Elemento nell’Albero dei Moduli
- 7.4. Portare i Percorsi in Scope con la Parola Chiave use
- 7.5. Separare i Moduli in File Diversi
- 8. Collezioni Comuni
- 8.1. Memorizzare Elenchi di Valori con Vettori
- 8.2. Memorizzare Testo Codificato UTF-8 con Stringhe
- 8.3. Memorizzare Chiavi con Valori Associati in Mappe Hash
- 9. Gestione degli Errori
- 9.1. Errori Irreversibili con panic!
- 9.2. Errori Reversibili con Result
- 9.3. panic! o non panic!
- 10. Type Generici, Trait e Lifetime
- 10.1. Tipi di Dati Generici
- 10.2. Definire il Comportamento Condiviso con i Trait
- 10.3. Validare i Reference con la Lifetime
- 11. Scrivere Test Automatizzati
- 11.1. Come Scrivere dei Test
- 11.2. Controllare Come Vengono Eseguiti i Test
- 11.3. Organizzare i Test
- 12. Un progetto I/O: Creare un Programma da Riga di Comando
- 12.1. Ricevere Argomenti dalla Riga di Comando
- 12.2. Leggere un File
- 12.3. Refactoring per Migliorare Modularità e Gestione degli Errori
- 12.4. Aggiungere Funzionalità con il Test-Driven Development
- 12.5. Lavorare con le Variabili d’Ambiente
- 12.6. Scrivere Messaggi di Errore su Standard Error
- 13. Funzionalità dei Linguaggi Funzionali: Iteratori e Chiusure
- 13.1. Chiusure
- 13.2. Elaborare una Serie di Elementi con Iteratori
- 13.3. Migliorare il Nostro Progetto I/O
- 13.4. Prestazioni di Cicli e Iteratori
- 14. Maggiori informazioni su Cargo e Crates.io
- 14.1. Personalizzare le Build con i Profili di Rilascio
- 14.2. Pubblicare un Crate su Crates.io
- 14.3. Spazi di Lavoro Cargo
- 14.4. Installazione di Binari con cargo install
- 14.5. Estendere Cargo con Comandi Personalizzati
- 15. Puntatori Intelligenti
- 15.1. Utilizzare Box<T> per Puntare ai Dati nell’Heap
- 15.2. Trattare i Puntatori Intelligenti Come Normali Reference
- 15.3. Eseguire del Codice Durante la Pulizia con il Trait Drop
- 15.4. Rc<T>, il Puntatore Intelligente con Conteggio dei Reference
- 15.5. RefCell<T> e il Modello di Mutabilità Interna
- 15.6. Cicli di Riferimento Possono Causare Perdite di Memoria
- 16. Concorrenza Senza Paura
- 16.1. Usare i Thread Per Eseguire Codice Simultaneamente
- 16.2. Trasferire Dati tra Thread Usando il Passaggio di Messaggi
- 16.3. Concorrenza a Stato Condiviso
- 16.4. Concorrenza Estensibile con Send e Sync
- 17. Fondamenti di Programmazione Asincrona: Async, Await, Future e Stream
- 17.1. Future e la Sintassi Async
- 17.2. Applicare la Concorrenza con Async
- 17.3. Lavorare con un Numero Qualsiasi di Future
- 17.4. Stream: Future in Sequenza
- 17.5. Uno Sguardo Più Da Vicino ai Trait per Async
- 17.6. Future, Task e Thread
- 18. Funzionalità della Programmazione Orientata agli Oggetti
- 18.1. Caratteristiche dei Linguaggi Orientati agli Oggetti
- 18.2. Usare gli Oggetti Trait per Astrarre Comportamenti Condivisi
- 18.3. Implementare un Modello di Design Orientato agli Oggetti
- 19. Patterns and Matching
- 19.1. All the Places Patterns Can Be Used
- 19.2. Refutability: Whether a Pattern Might Fail to Match
- 19.3. Pattern Syntax
- 20. Advanced Features
- 20.1. Unsafe Rust
- 20.2. Advanced Traits
- 20.3. Advanced Types
- 20.4. Advanced Functions and Closures
- 20.5. Macros
- 21. Final Project: Building a Multithreaded Web Server
- 21.1. Building a Single-Threaded Web Server
- 21.2. Turning Our Single-Threaded Server into a Multithreaded Server
- 21.3. Graceful Shutdown and Cleanup
- 22. Appendice
- 22.1. A - Parole Chiave
- 22.2. B - Operators and Symbols
- 22.3. C - Derivable Traits
- 22.4. D - Utili Strumenti di sviluppo
- 22.5. E - Editions
- 22.6. F - Traduzioni del Libro
- 22.7. G - How Rust is Made and “Nightly Rust”
- 22.8. H - Note di Traduzione