1. Benvenuti a Comprehensive Rust 🦀
  2. Esecuzione del corso
    1. Struttura del corso
    2. Tasti rapidi
    3. Traduzioni
  3. Utilizzo di Cargo
    1. Ecosistema di Rust
    2. Esempi di codice
    3. Eseguire Cargo in locale
  4. Giorno 1: Mattino
  5. Benvenuti
  6. Hello World!
    1. Cos’è Rust?
    2. Hello World!
    3. Benefits of Rust
    4. Playground
  7. Types and Values
    1. Variabili
    2. Values
    3. Arithmetic
    4. Corde
    5. Inferenza del Tipo
    6. Esercizio: Valutazione Espressione
      1. Soluzioni
  8. Flusso di Controllo
    1. Conditionals
    2. cicli for
    3. break e continue
    4. Blocks and Scopes
    5. Funzioni
    6. Macros
    7. Exercise: Collatz Sequence
      1. Soluzioni
  9. Giorno 1: Pomeriggio
  10. Benvenuti
  11. Tuples and Arrays
    1. Tuples and Arrays
    2. Iteratore (Iterator)
    3. Pattern Matching
    4. Destrutturazione di Enum
    5. Exercise: Nested Arrays
      1. Soluzioni
  12. Riferimenti
    1. Riferimenti
    2. Riferimenti pendenti
    3. Exercise: Geometry
      1. Soluzioni
  13. User-Defined Types
    1. Strutture (Struct)
    2. Strutture a Tupla (Tuple Structs)
    3. Enumerazioni (Enums)
    4. static & const
    5. Type Aliases
    6. Esercizio: Valutazione Espressione
      1. Soluzioni
  14. Giorno 2: Mattina
  15. Benvenuti
  16. Pattern Matching
    1. Destrutturazione di Enum
    2. Flusso di Controllo
    3. Esercizio: Valutazione Espressione
      1. Soluzioni
  17. Read e Write
    1. Metodi
    2. Traits
    3. Tratti derivati
    4. Oggetti che implementano Trait (Trait Objects)
    5. Exercise: Generic Logger
      1. Soluzioni
  18. Generics
    1. Funzioni Esterne (Extern)
    2. Tipi di dati Generic
    3. Trait Bounds
    4. Impl Tratto
    5. Exercise: Generic min
      1. Soluzioni
  19. Giorno 2: Pomeriggio
  20. Benvenuti
  21. Libreria standard
    1. Libreria standard
    2. Test nella documentazione
    3. Durata
    4. Opzione, Risultato
    5. Stringa (String)
    6. Vec
    7. Mappa hash
    8. Esercizi
      1. Soluzioni
  22. Libreria standard
    1. Comparazione
    2. Iteratori
    3. Da e Into
    4. Testare
    5. Leggi e Scrivi
    6. Default, struct update syntax
    7. Closures
    8. Esercizi
      1. Soluzioni
  23. Giorno 3: Mattina
  24. Benvenuti
  25. Gestione della Memoria
    1. Review of Program Memory
    2. Gestione automatica della Memoria
    3. Proprietà
    4. Semantica di move
    5. Clone
    6. Tipi Composti
    7. Rilascio (Drop)
    8. Exercise: Builder Type
      1. Soluzioni
  26. Smart Pointers
    1. Scatola
    2. Rc
    3. Exercise: Binary Tree
      1. Soluzioni
  27. Giorno 3: Pomeriggio
  28. Benvenuti
  29. Prestito (Borrowing)
    1. Prestito (Borrowing)
    2. Prestito (Borrowing)
    3. Interoperabilità
    4. Salute (Health) Statistics
      1. Soluzioni
  30. Lifetime
    1. Slices: &\[T\]
    2. Riferimenti pendenti
    3. Lifetime in Chiamate a Funzione
    4. Lifetime
    5. Lifetime
    6. Exercise: Protobuf Parsing
      1. Soluzioni
  31. Giorno 1: Mattino
  32. Benvenuti
  33. Iteratori
    1. Iteratore
    2. IntoIterator
    3. FromIterator
    4. Exercise: Iterator Method Chaining
      1. Soluzioni
  34. Moduli
    1. Moduli
    2. Gerarchia del filesystem
    3. Visibilità
    4. use, super, self
    5. Exercise: Modules for a GUI Library
      1. Soluzioni
  35. Testare
    1. Moduli (Module) di Test
    2. Altri progetti
    3. Crates Utili
    4. GoogleTest
    5. Mocking
    6. Compiler Lints and Clippy
    7. Algoritmo di Luhn
      1. Soluzioni
  36. Giorno 1: Pomeriggio
  37. Benvenuti
  38. Gestione degli errori
    1. Panico (Panics)
    2. Iteratore (Iterator)
    3. Conversione implicita
    4. Errore
    5. Da e Into
    6. Gestione strutturata degli errori con Result
      1. Soluzioni
  39. Unsafe Rust
    1. Unsafe Rust
    2. Dereferenziamento dei Puntatori (Pointers) Grezzi (Raw)
    3. Variabili Statiche Mutabili
    4. Unioni
    5. Chiamare Funzioni Unsafe
    6. Implementare Unsafe Traits
    7. Safe FFI Wrapper
      1. Soluzioni
  40. Android
  41. Benvenuti
  42. Setup
  43. Regole (Rules) di Build
    1. Binario
    2. Libreria (Library)
  44. AIDL
    1. Interfaccia
    2. Implementazione
    3. Server
    4. Deploy
    5. Client
    6. Cambiare API
  45. Logging
  46. Interoperabilità
    1. Con C
      1. Invocare C con Bindgen
      2. Invocare Rust da C
    2. Con C++
      1. Moduli (Module) di Test
      2. Binari Rust
      3. Generated C++
      4. C++ Bridge
      5. Tipi Scalari
      6. Shared Enums
      7. Gestione degli errori
      8. Gestione degli errori
      9. Additional Types
      10. Building for Android: C++
      11. Building for Android: Genrules
      12. Building for Android: Rust
    3. Con Java
  47. Esercizi
  48. Chromium
  49. Benvenuti
  50. Setup
  51. Comparing Chromium and Cargo Ecosystems
  52. Policy
  53. Regole (Rules) di Build
    1. Unsafe Rust
    2. Depending on Rust Code from Chromium C++
    3. Visual Studio Code
    4. Esercizi
  54. Testare
    1. rust_gtest_interop Library
    2. GN Rules for Rust Tests
    3. chromium::import! Macro
    4. Esercizi
  55. Interoperabilità con C
    1. Esempi
    2. Limitations of CXX
    3. Gestione degli errori
      1. Gestione degli errori
      2. Gestione degli errori
    4. Using CXX in Chromium
    5. Esercizi
  56. Adding Third Party Crates
    1. Configuring Cargo.toml
    2. Configuring gnrt_config.toml
    3. Downloading Crates
    4. Generating gn Build Rules
    5. Resolving Problems
      1. Build Scripts Which Generate Code
      2. Build Scripts Which Build C++ or Take Arbitrary Actions
    6. Depending on a Crate
    7. Reviews and Audits
    8. Checking into Chromium Source Code
    9. Keeping Crates Up to Date
    10. Esercizi
  57. Bringing It Together - Exercise
  58. Soluzioni
  59. Bare Metal: Mattino
  60. Benvenuti
  61. no_std
    1. Un Esempio Minimo
    2. alloc
  62. Microcontroller
    1. Raw MMIO
    2. PAC
    3. HAL Crates
    4. Crate di supporto per Board
    5. Il modello (Pattern) di Type State
    6. hal incorporato
    7. probe-rs, cargo-embed
      1. Debugging
    8. Altri Progetti
  63. Esercizi
    1. Bussola
    2. Soluzioni
  64. Bare Metal: Pomeriggio
  65. Processori di Applicazioni
    1. Preparativi per lavorare con Rust
    2. Inline Assembly
    3. MMIO
    4. Scriviamo un driver UART
      1. Traits addizionali
    5. Un migliore driver UART
      1. Bitflag
      2. Registri multipli
      3. Driver
      4. Usandolo
    6. Logging
      1. Usandolo
    7. Eccezioni
    8. Altri Progetti
  66. Crates Utili
    1. zerocopia
    2. aarch64-paging
    3. buddy_system_allocator
    4. tinyvec
    5. gira
  67. Android
    1. vmbase
  68. Esercizi
    1. Driver RTC
    2. Soluzioni
  69. Concorrenza: Mattino
  70. Benvenuti
  71. Threads
    1. Thread con Scope (Scoped Threads)
  72. Canali (Channels)
    1. Canali illimitati (Unbounded Channels)
    2. Canali delimitati (Bounded Channels)
  73. Invia e Sincronizza
    1. Invia
    2. Sincronizza
    3. Esempi
  74. Stato Condiviso
    1. Arco
    2. Mutex
    3. Esempio
  75. Esercizi
    1. Filosofi a tavola
    2. Correttore di Link a Thread multipli
    3. Soluzioni
  76. Concorrenza: Pomeriggio
  77. Nozioni di base sulla programmazione Async (asincrona)
    1. asincrono/aspetta
    2. Futures
    3. Esecutori
      1. Tokio
    4. Compiti (Tasks)
    5. Canali asincroni (Async Channels)
  78. Flusso di Controllo
    1. Giunzione (Join)
    2. Selezione (Select)
  79. Insidie
    1. Blocco dell’Esecutore
    2. Pin
    3. Trait asincroni (Async Trait)
    4. Cancellazione (cancellation)
  80. Esercizi
    1. Filosofi a tavola
    2. Applicazione Chat-Broadcast
    3. Soluzioni
  81. Parole finali
  82. Grazie!
  83. Glossario
  84. Altre risorse
  85. Crediti