diff --git a/po/it.po b/po/it.po
index 7fb27aa9..27e23817 100644
--- a/po/it.po
+++ b/po/it.po
@@ -2,15 +2,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Comprehensive Rust 🦀\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2023-06-07 17:56+0100\n"
-"Last-Translator: \n"
+"PO-Revision-Date: 2023-07-13 07:57+0200\n"
+"Last-Translator: Enrico Rivarola\n"
"Language-Team: \n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.3.1\n"
+"X-Generator: Poedit 3.2.2\n"
#: src/SUMMARY.md:3
msgid "Welcome to Comprehensive Rust 🦀"
@@ -52,8 +52,8 @@ msgstr "Eseguire Cargo in locale"
msgid "Day 1: Morning"
msgstr "Giorno 1: Mattino"
-#: src/SUMMARY.md:18 src/SUMMARY.md:75 src/SUMMARY.md:128 src/SUMMARY.md:185 src/SUMMARY.md:211
-#: src/SUMMARY.md:259
+#: src/SUMMARY.md:18 src/SUMMARY.md:75 src/SUMMARY.md:128 src/SUMMARY.md:185
+#: src/SUMMARY.md:211 src/SUMMARY.md:261
msgid "Welcome"
msgstr "Benvenuti"
@@ -119,7 +119,7 @@ msgstr "Funzioni"
#: src/SUMMARY.md:34
msgid "Rustdoc"
-msgstr "Rustico"
+msgstr "Rustdoc"
#: src/SUMMARY.md:35 src/SUMMARY.md:82
msgid "Methods"
@@ -129,9 +129,9 @@ msgstr "Metodi"
msgid "Overloading"
msgstr "Overloading"
-#: src/SUMMARY.md:37 src/SUMMARY.md:66 src/SUMMARY.md:90 src/SUMMARY.md:119 src/SUMMARY.md:148
-#: src/SUMMARY.md:177 src/SUMMARY.md:204 src/SUMMARY.md:225 src/SUMMARY.md:251 src/SUMMARY.md:273
-#: src/SUMMARY.md:293
+#: src/SUMMARY.md:37 src/SUMMARY.md:66 src/SUMMARY.md:90 src/SUMMARY.md:119
+#: src/SUMMARY.md:148 src/SUMMARY.md:177 src/SUMMARY.md:204 src/SUMMARY.md:225
+#: src/SUMMARY.md:253 src/SUMMARY.md:275 src/SUMMARY.md:296
msgid "Exercises"
msgstr "Esercizi"
@@ -240,8 +240,8 @@ msgid "Lifetimes in Data Structures"
msgstr "Lifetime in Strutture Dati"
#: src/SUMMARY.md:67
-msgid "Designing a Library"
-msgstr "Progettare una Libreria"
+msgid "Storing Books"
+msgstr "Memorizza i libri"
#: src/SUMMARY.md:68
msgid "Iterators and Ownership"
@@ -249,7 +249,7 @@ msgstr "Iteratori (Iterators) e Proprietà (Ownership)"
#: src/SUMMARY.md:71
msgid "Day 2: Morning"
-msgstr "2° giorno: Mattina"
+msgstr "Giorno 2: Mattina"
#: src/SUMMARY.md:76
msgid "Structs"
@@ -279,7 +279,7 @@ msgstr "Dimensione degli Enum"
msgid "Method Receiver"
msgstr "Ricevitore (Receiver) del Metodo"
-#: src/SUMMARY.md:84 src/SUMMARY.md:159 src/SUMMARY.md:272
+#: src/SUMMARY.md:84 src/SUMMARY.md:159 src/SUMMARY.md:274
msgid "Example"
msgstr "Esempio"
@@ -313,9 +313,9 @@ msgstr "Punti e Poligoni"
#: src/SUMMARY.md:94
msgid "Day 2: Afternoon"
-msgstr "2° giorno: Pomeriggio"
+msgstr "Giorno 2: Pomeriggio"
-#: src/SUMMARY.md:96 src/SUMMARY.md:286
+#: src/SUMMARY.md:96 src/SUMMARY.md:288
msgid "Control Flow"
msgstr "Flusso di Controllo"
@@ -417,7 +417,7 @@ msgstr "Stringhe (Strings) e Iteratori (Iterators)"
#: src/SUMMARY.md:124
msgid "Day 3: Morning"
-msgstr "3° giorno: Mattina"
+msgstr "Giorno 3: Mattina"
#: src/SUMMARY.md:129
msgid "Generics"
@@ -501,7 +501,7 @@ msgstr "Una semplice libreria per Interfacce Grafiche"
#: src/SUMMARY.md:151
msgid "Day 3: Afternoon"
-msgstr "3° giorno: Pomeriggio"
+msgstr "Giorno 3: Pomeriggio"
#: src/SUMMARY.md:153
msgid "Error Handling"
@@ -599,7 +599,7 @@ msgstr "Implementare Unsafe Traits"
msgid "Safe FFI Wrapper"
msgstr "Safe FFI Wrapper"
-#: src/SUMMARY.md:181 src/SUMMARY.md:249
+#: src/SUMMARY.md:181 src/SUMMARY.md:251
msgid "Android"
msgstr "Android"
@@ -647,7 +647,7 @@ msgstr "Client"
msgid "Changing API"
msgstr "Cambiare API"
-#: src/SUMMARY.md:197 src/SUMMARY.md:240
+#: src/SUMMARY.md:197 src/SUMMARY.md:241
msgid "Logging"
msgstr "Logging"
@@ -727,7 +727,7 @@ msgstr "probe-rs, cargo-embed"
msgid "Debugging"
msgstr "Debugging"
-#: src/SUMMARY.md:224 src/SUMMARY.md:242
+#: src/SUMMARY.md:224 src/SUMMARY.md:244
msgid "Other Projects"
msgstr "Altri Progetti"
@@ -744,250 +744,262 @@ msgid "Application Processors"
msgstr "Processori di Applicazioni"
#: src/SUMMARY.md:231
+msgid "Getting Ready to Rust"
+msgstr ""
+
+#: src/SUMMARY.md:232
msgid "Inline Assembly"
msgstr "Inline Assembly"
-#: src/SUMMARY.md:232
+#: src/SUMMARY.md:233
msgid "MMIO"
msgstr "MMIO"
-#: src/SUMMARY.md:233
+#: src/SUMMARY.md:234
msgid "Let's Write a UART Driver"
msgstr "Scriviamo un driver UART"
-#: src/SUMMARY.md:234
+#: src/SUMMARY.md:235
msgid "More Traits"
msgstr "Traits addizionali"
-#: src/SUMMARY.md:235
+#: src/SUMMARY.md:236
msgid "A Better UART Driver"
msgstr "Un migliore driver UART"
-#: src/SUMMARY.md:236
+#: src/SUMMARY.md:237
msgid "Bitflags"
msgstr "Bitflag"
-#: src/SUMMARY.md:237
+#: src/SUMMARY.md:238
msgid "Multiple Registers"
msgstr "Registri multipli"
-#: src/SUMMARY.md:238
+#: src/SUMMARY.md:239
msgid "Driver"
msgstr "Driver"
-#: src/SUMMARY.md:239 src/SUMMARY.md:241
+#: src/SUMMARY.md:240 src/SUMMARY.md:242
msgid "Using It"
msgstr "Usandolo"
#: src/SUMMARY.md:243
+msgid "Exceptions"
+msgstr "Eccezioni"
+
+#: src/SUMMARY.md:245
msgid "Useful Crates"
msgstr "Crates Utili"
-#: src/SUMMARY.md:244
+#: src/SUMMARY.md:246
msgid "zerocopy"
msgstr "zerocopy"
-#: src/SUMMARY.md:245
+#: src/SUMMARY.md:247
msgid "aarch64-paging"
msgstr "paginazione aarch64 (aarch64-paging)"
-#: src/SUMMARY.md:246
+#: src/SUMMARY.md:248
msgid "buddy_system_allocator"
msgstr "buddy_system_allocator"
-#: src/SUMMARY.md:247
+#: src/SUMMARY.md:249
msgid "tinyvec"
msgstr "tinyvec"
-#: src/SUMMARY.md:248
+#: src/SUMMARY.md:250
msgid "spin"
msgstr "rotazione (spin)"
-#: src/SUMMARY.md:250
+#: src/SUMMARY.md:252
msgid "vmbase"
msgstr "vmbase"
-#: src/SUMMARY.md:252
+#: src/SUMMARY.md:254
msgid "RTC Driver"
msgstr "Driver RTC"
-#: src/SUMMARY.md:255
+#: src/SUMMARY.md:257
msgid "Concurrency: Morning"
-msgstr "Concurrenzy: Mattino"
+msgstr "Concorrenza: Mattino"
-#: src/SUMMARY.md:260
+#: src/SUMMARY.md:262
msgid "Threads"
msgstr "Threads"
-#: src/SUMMARY.md:261
+#: src/SUMMARY.md:263
msgid "Scoped Threads"
msgstr "Thread con Scope (Scoped Threads)"
-#: src/SUMMARY.md:262
+#: src/SUMMARY.md:264
msgid "Channels"
msgstr "Canali (Channels)"
-#: src/SUMMARY.md:263
+#: src/SUMMARY.md:265
msgid "Unbounded Channels"
msgstr "Canali illimitati (Unbounded Channels)"
-#: src/SUMMARY.md:264
+#: src/SUMMARY.md:266
msgid "Bounded Channels"
msgstr "Canali delimitati (Bounded Channels)"
-#: src/SUMMARY.md:265
+#: src/SUMMARY.md:267
msgid "Send and Sync"
msgstr "Send e Sync"
-#: src/SUMMARY.md:265
+#: src/SUMMARY.md:267
msgid "Send"
msgstr "Send (Inviare)"
-#: src/SUMMARY.md:265
+#: src/SUMMARY.md:267
msgid "Sync"
msgstr "Sync (Sincronizzare)"
-#: src/SUMMARY.md:268
+#: src/SUMMARY.md:270
msgid "Examples"
msgstr "Esempi"
-#: src/SUMMARY.md:269
+#: src/SUMMARY.md:271
msgid "Shared State"
msgstr "Stato Condiviso"
-#: src/SUMMARY.md:270
+#: src/SUMMARY.md:272
msgid "Arc"
msgstr "Arc"
-#: src/SUMMARY.md:271
+#: src/SUMMARY.md:273
msgid "Mutex"
msgstr "Mutex"
-#: src/SUMMARY.md:274 src/SUMMARY.md:294
+#: src/SUMMARY.md:276 src/SUMMARY.md:297
msgid "Dining Philosophers"
msgstr "Filosofi a tavola"
-#: src/SUMMARY.md:275
+#: src/SUMMARY.md:277
msgid "Multi-threaded Link Checker"
msgstr "Correttore di Link a Thread multipli"
-#: src/SUMMARY.md:277
-msgid "Concurrency: Afternoon"
-msgstr "Giorno 1: Pomeriggio"
-
#: src/SUMMARY.md:279
+msgid "Concurrency: Afternoon"
+msgstr "Concorrenza: Pomeriggio"
+
+#: src/SUMMARY.md:281
msgid "Async Basics"
msgstr "Nozioni di base sulla programmazione Async (asincrona)"
-#: src/SUMMARY.md:280
+#: src/SUMMARY.md:282
msgid "async/await"
msgstr "Async/await"
-#: src/SUMMARY.md:281
+#: src/SUMMARY.md:283
msgid "Futures"
msgstr "Futures"
-#: src/SUMMARY.md:282
+#: src/SUMMARY.md:284
msgid "Runtimes"
msgstr "Esecutori"
-#: src/SUMMARY.md:283
+#: src/SUMMARY.md:285
msgid "Tokio"
msgstr "Tokio"
-#: src/SUMMARY.md:284
+#: src/SUMMARY.md:286
msgid "Tasks"
msgstr "Compiti (Tasks)"
-#: src/SUMMARY.md:285
+#: src/SUMMARY.md:287
msgid "Async Channels"
msgstr "Canali asincroni (Async Channels)"
-#: src/SUMMARY.md:287
+#: src/SUMMARY.md:289
msgid "Join"
msgstr "Giunzione (Join)"
-#: src/SUMMARY.md:288
+#: src/SUMMARY.md:290
msgid "Select"
msgstr "Selezione (Select)"
-#: src/SUMMARY.md:289
+#: src/SUMMARY.md:291
msgid "Pitfalls"
msgstr "Insidie"
-#: src/SUMMARY.md:290
+#: src/SUMMARY.md:292
msgid "Blocking the Executor"
msgstr "Blocco dell’Esecutore"
-#: src/SUMMARY.md:291
+#: src/SUMMARY.md:293
msgid "Pin"
msgstr "Spillo (Pin)"
-#: src/SUMMARY.md:292
+#: src/SUMMARY.md:294
msgid "Async Traits"
msgstr "Trait asincroni (Async Trait)"
#: src/SUMMARY.md:295
-msgid "Elevator Operations"
-msgstr "# Operazioni dell’Ascensore"
+msgid "Cancellation"
+msgstr "Cancellazione (cancellation)"
#: src/SUMMARY.md:298
+msgid "Broadcast Chat Application"
+msgstr "Applicazione Chat-Broadcast"
+
+#: src/SUMMARY.md:301
msgid "Final Words"
msgstr "Parole finali"
-#: src/SUMMARY.md:302
+#: src/SUMMARY.md:305
msgid "Thanks!"
msgstr "Grazie!"
-#: src/SUMMARY.md:303
+#: src/SUMMARY.md:306
msgid "Other Resources"
msgstr "Altre risorse"
-#: src/SUMMARY.md:304
+#: src/SUMMARY.md:307
msgid "Credits"
msgstr "Crediti"
-#: src/SUMMARY.md:307
+#: src/SUMMARY.md:310
msgid "Solutions"
msgstr "Soluzioni"
-#: src/SUMMARY.md:312
+#: src/SUMMARY.md:315
msgid "Day 1 Morning"
msgstr "Giorno 1 Mattina"
-#: src/SUMMARY.md:313
+#: src/SUMMARY.md:316
msgid "Day 1 Afternoon"
msgstr "Giorno 1 Pomeriggio"
-#: src/SUMMARY.md:314
+#: src/SUMMARY.md:317
msgid "Day 2 Morning"
msgstr "Giorno 2 Mattina"
-#: src/SUMMARY.md:315
+#: src/SUMMARY.md:318
msgid "Day 2 Afternoon"
msgstr "Giorno 2 Pomeriggio"
-#: src/SUMMARY.md:316
+#: src/SUMMARY.md:319
msgid "Day 3 Morning"
msgstr "Giorno 3 Mattina"
-#: src/SUMMARY.md:317
+#: src/SUMMARY.md:320
msgid "Day 3 Afternoon"
msgstr "Giorno 3 Pomeriggio"
-#: src/SUMMARY.md:318
+#: src/SUMMARY.md:321
msgid "Bare Metal Rust Morning"
msgstr "Mattina su Bare Metal Rust"
-#: src/SUMMARY.md:319
+#: src/SUMMARY.md:322
msgid "Bare Metal Rust Afternoon"
msgstr "Pomeriggio su Bare Metal Rust"
-#: src/SUMMARY.md:320
+#: src/SUMMARY.md:323
msgid "Concurrency Morning"
msgstr "Mattina su Concorrenza"
-#: src/SUMMARY.md:321
+#: src/SUMMARY.md:324
msgid "Concurrency Afternoon"
msgstr "Giorno 1: Pomeriggio"
@@ -996,127 +1008,128 @@ msgid "# Welcome to Comprehensive Rust 🦀"
msgstr "# Benvenuti a Comprehensive Rust 🦀"
#: src/welcome.md:3
-#, fuzzy
msgid ""
-"[](https://github.com/google/comprehensive-rust/actions/workflows/build."
-"yml?query=branch%3Amain)"
+"[](https://github.com/"
+"google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain)"
msgstr ""
-"[](https://github.com /google/comprehensive-rust/"
-"actions/workflows/build.yml)"
#: src/welcome.md:3
msgid "Build workflow"
-msgstr "Crea flusso di lavoro"
+msgstr "Stato Build"
#: src/welcome.md:3
-#, fuzzy
msgid ""
-"[](https://github.com/google/comprehensive-rust/actions/workflows/build."
-"yml?query=branch%3Amain)\n"
-"[](https://github.com/google/comprehensive-rust/graphs/contributors)"
+"[](https://github.com/"
+"google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain)\n"
+"[](https://github.com/google/"
+"comprehensive-rust/graphs/contributors)"
msgstr ""
-"[](https://github.com /google/comprehensive-rust/"
-"actions/workflows/build.yml)\n"
-"[](https://github.com/google/comprehensive-rust/graphs /contributori)"
#: src/welcome.md:4
msgid "GitHub contributors"
msgstr "Collaboratori di GitHub"
#: src/welcome.md:4
-#, fuzzy
msgid ""
-"[](https://github.com/google/comprehensive-rust/graphs/contributors)\n"
-"[]"
-"(https://github.com/google/comprehensive-rust/stargazers)"
+"[](https://github.com/google/"
+"comprehensive-rust/graphs/contributors)\n"
+"[](https://github.com/google/comprehensive-rust/"
+"stargazers)"
msgstr ""
-"[](https://github.com/google/comprehensive-rust/graphs /contributori)\n"
-"[](https://github.com/google/comprehensive-rust/stargazers )"
#: src/welcome.md:5
msgid "GitHub stars"
msgstr "Stelle di GitHub"
#: src/welcome.md:5
-#, fuzzy
msgid ""
-"[]"
-"(https://github.com/google/comprehensive-rust/stargazers)"
+"[](https://github.com/google/comprehensive-rust/"
+"stargazers)"
msgstr ""
-"[](https://github.com/google/comprehensive-rust/stargazers )"
#: src/welcome.md:7
-#, fuzzy
msgid ""
-"This is a three day Rust course developed by the Android team. The course covers\n"
-"the full spectrum of Rust, from basic syntax to advanced topics like generics\n"
-"and error handling. It also includes Android-specific content on the last day."
+"This is a three day Rust course developed by the Android team. The course "
+"covers\n"
+"the full spectrum of Rust, from basic syntax to advanced topics like "
+"generics\n"
+"and error handling. It also includes Android-specific content on the last "
+"day."
msgstr ""
-"Questo è un corso Rust di tre giorni sviluppato dal team Android. Il corso copre\n"
-"l'intero spettro di Rust, dalla sintassi di base ad argomenti avanzati come i generici\n"
-"e gestione degli errori. Include anche contenuti specifici per Android nell'ultimo giorno."
+"Questo è un corso Rust di tre giorni sviluppato dal team Android. Il corso "
+"copre\n"
+"l'intero spettro di Rust, dalla sintassi di base ad argomenti avanzati come "
+"i generici\n"
+"e gestione degli errori. Include anche contenuti specifici per Android "
+"nell'ultimo giorno."
#: src/welcome.md:11
-#, fuzzy
msgid ""
-"The goal of the course is to teach you Rust. We assume you don't know anything\n"
+"The goal of the course is to teach you Rust. We assume you don't know "
+"anything\n"
"about Rust and hope to:"
msgstr ""
-"L'obiettivo del corso è insegnarti Rust. Partiamo dal presupposto che tu non sappia nulla\n"
+"L'obiettivo del corso è insegnarti Rust. Partiamo dal presupposto che tu non "
+"sappia nulla\n"
"su Rust e spero di:"
#: src/welcome.md:14
-#, fuzzy
msgid ""
"* Give you a comprehensive understanding of the Rust syntax and language.\n"
"* Enable you to modify existing programs and write new programs in Rust.\n"
"* Show you common Rust idioms."
msgstr ""
-"* Fornire una comprensione completa della sintassi e del linguaggio di Rust.\n"
-"* Consentono di modificare i programmi esistenti e scrivere nuovi programmi in Rust.\n"
+"* Fornire una comprensione completa della sintassi e del linguaggio di "
+"Rust.\n"
+"* Consentono di modificare i programmi esistenti e scrivere nuovi programmi "
+"in Rust.\n"
"* Mostra i comuni idiomi di Rust."
#: src/welcome.md:18
-#, fuzzy
msgid ""
-"The first three days show you the fundamentals of Rust. Following this, you're\n"
-"invited to dive into one or more spezialized topics:"
+"The first three days show you the fundamentals of Rust. Following this, "
+"you're\n"
+"invited to dive into one or more specialized topics:"
msgstr ""
-"I primi tre giorni ti mostrano i fondamenti di Rust. A seguito di questo, sei\n"
+"I primi tre giorni ti mostrano i fondamenti di Rust. A seguito di questo, "
+"sei\n"
"invitato ad approfondire uno o più argomenti specialistici:"
#: src/welcome.md:21
-#, fuzzy
msgid ""
-"* [Android](android.md): a half-day course on using Rust for Android platform\n"
-" development (AOSP). This includes interoperability wtih C, C++, and Java.\n"
-"* [Bare-metal](bare-metal.md): a full day class on using Rust for bare-metal\n"
-" (embedded) development. Both microcontrollers and application processors are\n"
+"* [Android](android.md): a half-day course on using Rust for Android "
+"platform\n"
+" development (AOSP). This includes interoperability with C, C++, and Java.\n"
+"* [Bare-metal](bare-metal.md): a whole-day class on using Rust for bare-"
+"metal\n"
+" (embedded) development. Both microcontrollers and application processors "
+"are\n"
" covered.\n"
-"* [Concurrency](concurrency.md): a full day class on concurrency in Rust. We\n"
-" cover both classical concurrency (preemptively scheduling using threads and\n"
-" mutextes) and async/await concurrency (cooperative multitasking using\n"
+"* [Concurrency](concurrency.md): a whole-day class on concurrency in Rust. "
+"We\n"
+" cover both classical concurrency (preemptively scheduling using threads "
+"and\n"
+" mutexes) and async/await concurrency (cooperative multitasking using\n"
" futures)."
msgstr ""
-"* [Android](android.md): un corso di mezza giornata sull'utilizzo della piattaforma Rust per "
-"Android\n"
+"* [Android](android.md): un corso di mezza giornata sull'utilizzo della "
+"piattaforma Rust per Android\n"
" sviluppo (AOSP). Ciò include l'interoperabilità con C, C++ e Java.\n"
-"* [Bare-metal](bare-metal.md): una lezione di un'intera giornata sull'utilizzo di Rust per bare-"
-"metal\n"
-" sviluppo (incorporato). Lo sono sia i microcontrollori che i processori applicativi\n"
+"* [Bare-metal](bare-metal.md): una lezione di un'intera giornata "
+"sull'utilizzo di Rust per bare-metal\n"
+" sviluppo (incorporato). Lo sono sia i microcontrollori che i processori "
+"applicativi\n"
" coperto.\n"
-"* [Concurrency](concurrency.md): una lezione di un'intera giornata sulla concorrenza in Rust. Noi\n"
-" coprire sia la concorrenza classica (pianificazione preventiva utilizzando thread e\n"
+"* [Concurrency](concurrency.md): una lezione di un'intera giornata sulla "
+"concorrenza in Rust. Noi\n"
+" coprire sia la concorrenza classica (pianificazione preventiva utilizzando "
+"thread e\n"
" mutextes) e async/await concurrency (multitasking cooperativo tramite\n"
" futuri)."
@@ -1125,218 +1138,281 @@ msgid "## Non-Goals"
msgstr "## Non goal"
#: src/welcome.md:34
-#, fuzzy
msgid ""
-"Rust is a large language and we won't be able to cover all of it in a few days.\n"
+"Rust is a large language and we won't be able to cover all of it in a few "
+"days.\n"
"Some non-goals of this course are:"
msgstr ""
-"Rust è un linguaggio vasto e non saremo in grado di coprirlo tutto in pochi giorni.\n"
+"Rust è un linguaggio vasto e non saremo in grado di coprirlo tutto in pochi "
+"giorni.\n"
"Alcuni non-obiettivi di questo corso sono:"
#: src/welcome.md:37
-#, fuzzy
msgid ""
-"* Learn how to develop macros, please see [Chapter 19.5 in the Rust\n"
+"* Learning how to develop macros: please see [Chapter 19.5 in the Rust\n"
" Book](https://doc.rust-lang.org/book/ch19-06-macros.html) and [Rust by\n"
" Example](https://doc.rust-lang.org/rust-by-example/macros.html) instead."
msgstr ""
-"* Scopri come sviluppare macro, per favore vedi [Capitolo 19.5 in Rust\n"
-" Libro](https://doc.rust-lang.org/book/ch19-06-macros.html) e [Rust by\n"
-" Esempio](https://doc.rust-lang.org/rust-by-example/macros.html) invece."
+"* Imparare come sviluppare le macro, per favore vedi ['Rust "
+"Book' (Capitolo 19.5)](https://doc.rust-lang.org/book/ch19-06-macros.html) e [Rust by\n"
+" Example](https://doc.rust-lang.org/rust-by-example/macros.html)."
#: src/welcome.md:41
msgid "## Assumptions"
msgstr "## Ipotesi"
#: src/welcome.md:43
-#, fuzzy
msgid ""
-"The course assumes that you already know how to program. Rust is a statically\n"
-"typed language and we will sometimes make comparisons with C and C++ to better\n"
+"The course assumes that you already know how to program. Rust is a "
+"statically-\n"
+"typed language and we will sometimes make comparisons with C and C++ to "
+"better\n"
"explain or contrast the Rust approach."
msgstr ""
-"Il corso presuppone che tu sappia già programmare. La ruggine è staticamente\n"
+"Il corso presuppone che tu sappia già programmare. La ruggine è "
+"staticamente\n"
"linguaggio digitato e talvolta faremo confronti migliori con C e C++\n"
"spiegare o contrastare l'approccio di Rust."
#: src/welcome.md:47
-#, fuzzy
msgid ""
-"If you know how to program in a dynamically typed language such as Python or\n"
+"If you know how to program in a dynamically-typed language such as Python "
+"or\n"
"JavaScript, then you will be able to follow along just fine too."
msgstr ""
-"Se sai come programmare in un linguaggio tipizzato dinamicamente come Python o\n"
+"Se sai come programmare in un linguaggio tipizzato dinamicamente come Python "
+"o\n"
"JavaScript, allora sarai anche in grado di seguire bene."
-#: src/welcome.md:50 src/cargo/rust-ecosystem.md:19 src/cargo/code-samples.md:22
-#: src/cargo/running-locally.md:68 src/welcome-day-1.md:14 src/welcome-day-1/what-is-rust.md:19
+#: src/welcome.md:50 src/cargo/rust-ecosystem.md:19
+#: src/cargo/code-samples.md:22 src/cargo/running-locally.md:68
+#: src/welcome-day-1.md:14 src/welcome-day-1/what-is-rust.md:19
#: src/hello-world.md:20 src/hello-world/small-example.md:21 src/why-rust.md:9
-#: src/why-rust/compile-time.md:14 src/why-rust/runtime.md:8 src/why-rust/modern.md:19
-#: src/basic-syntax/scalar-types.md:19 src/basic-syntax/compound-types.md:28
+#: src/why-rust/compile-time.md:14 src/why-rust/runtime.md:8
+#: src/why-rust/modern.md:19 src/basic-syntax/scalar-types.md:19
+#: src/basic-syntax/compound-types.md:28 src/basic-syntax/references.md:21
#: src/basic-syntax/slices.md:18 src/basic-syntax/string-slices.md:25
-#: src/basic-syntax/functions.md:33 src/basic-syntax/rustdoc.md:22 src/basic-syntax/methods.md:32
-#: src/basic-syntax/functions-interlude.md:25 src/exercises/day-1/morning.md:9
-#: src/exercises/day-1/for-loops.md:90 src/basic-syntax/variables.md:15
-#: src/basic-syntax/type-inference.md:24 src/basic-syntax/static-and-const.md:46
+#: src/basic-syntax/functions.md:33 src/basic-syntax/rustdoc.md:22
+#: src/basic-syntax/methods.md:32 src/basic-syntax/functions-interlude.md:25
+#: src/exercises/day-1/morning.md:9 src/exercises/day-1/for-loops.md:90
+#: src/basic-syntax/variables.md:15 src/basic-syntax/type-inference.md:24
+#: src/basic-syntax/static-and-const.md:48
#: src/basic-syntax/scopes-shadowing.md:23 src/memory-management/stack.md:26
#: src/memory-management/rust.md:12 src/ownership/move-semantics.md:20
#: src/ownership/moves-function-calls.md:18 src/ownership/copy-clone.md:33
#: src/ownership/borrowing.md:25 src/ownership/shared-unique-borrows.md:23
-#: src/ownership/lifetimes-function-calls.md:27 src/ownership/lifetimes-data-structures.md:23
+#: src/ownership/lifetimes-function-calls.md:27
+#: src/ownership/lifetimes-data-structures.md:23
#: src/exercises/day-1/afternoon.md:9 src/exercises/day-1/book-library.md:100
-#: src/structs/tuple-structs.md:35 src/structs/field-shorthand.md:25 src/enums.md:31
+#: src/structs.md:29 src/structs/tuple-structs.md:35
+#: src/structs/field-shorthand.md:25 src/enums.md:32
#: src/enums/variant-payloads.md:33 src/enums/sizes.md:27 src/methods.md:28
-#: src/methods/receiver.md:23 src/methods/example.md:44 src/pattern-matching.md:23
-#: src/pattern-matching/destructuring-enums.md:33 src/pattern-matching/destructuring-structs.md:21
-#: src/pattern-matching/destructuring-arrays.md:19 src/pattern-matching/match-guards.md:20
-#: src/exercises/day-2/morning.md:9 src/exercises/day-2/points-polygons.md:115
-#: src/control-flow/blocks.md:40 src/control-flow/if-expressions.md:33
-#: src/control-flow/if-let-expressions.md:21 src/control-flow/while-let-expressions.md:24
-#: src/control-flow/for-expressions.md:23 src/control-flow/loop-expressions.md:25
-#: src/control-flow/match-expressions.md:26 src/std.md:23 src/std/option-result.md:16
-#: src/std/string.md:28 src/std/vec.md:35 src/std/hashmap.md:36 src/std/box.md:32
-#: src/std/box-recursive.md:31 src/std/rc.md:29 src/modules.md:26 src/modules/visibility.md:37
-#: src/modules/filesystem.md:42 src/exercises/day-2/afternoon.md:5 src/generics/data-types.md:19
-#: src/generics/methods.md:23 src/traits/trait-objects.md:70 src/traits/default-methods.md:30
-#: src/traits/trait-bounds.md:33 src/traits/impl-trait.md:21 src/traits/iterator.md:30
-#: src/traits/from-iterator.md:15 src/traits/from-into.md:27 src/traits/drop.md:32
-#: src/traits/default.md:38 src/traits/operators.md:24 src/traits/closures.md:23
+#: src/methods/receiver.md:22 src/methods/example.md:44
+#: src/pattern-matching.md:23 src/pattern-matching/destructuring-enums.md:33
+#: src/pattern-matching/destructuring-structs.md:21
+#: src/pattern-matching/destructuring-arrays.md:19
+#: src/pattern-matching/match-guards.md:20 src/exercises/day-2/morning.md:9
+#: src/exercises/day-2/points-polygons.md:115 src/control-flow/blocks.md:41
+#: src/control-flow/if-expressions.md:33
+#: src/control-flow/if-let-expressions.md:21
+#: src/control-flow/while-let-expressions.md:24
+#: src/control-flow/for-expressions.md:23
+#: src/control-flow/loop-expressions.md:25
+#: src/control-flow/match-expressions.md:26 src/std.md:23
+#: src/std/option-result.md:16 src/std/string.md:28 src/std/vec.md:35
+#: src/std/hashmap.md:36 src/std/box.md:32 src/std/box-recursive.md:31
+#: src/std/rc.md:29 src/modules.md:26 src/modules/visibility.md:37
+#: src/modules/filesystem.md:42 src/exercises/day-2/afternoon.md:5
+#: src/generics/data-types.md:19 src/generics/methods.md:23
+#: src/traits/trait-objects.md:70 src/traits/default-methods.md:30
+#: src/traits/trait-bounds.md:33 src/traits/impl-trait.md:21
+#: src/traits/iterator.md:30 src/traits/from-iterator.md:15
+#: src/traits/from-into.md:27 src/traits/drop.md:32 src/traits/default.md:38
+#: src/traits/operators.md:24 src/traits/closures.md:32
#: src/exercises/day-3/morning.md:5 src/error-handling/result.md:25
-#: src/error-handling/try-operator.md:46 src/error-handling/converting-error-types-example.md:48
-#: src/error-handling/deriving-error-enums.md:37 src/error-handling/dynamic-errors.md:34
-#: src/error-handling/error-contexts.md:33 src/unsafe.md:26 src/unsafe/raw-pointers.md:25
-#: src/unsafe/mutable-static-variables.md:30 src/unsafe/unions.md:19
-#: src/unsafe/writing-unsafe-functions.md:31 src/unsafe/extern-functions.md:19
-#: src/unsafe/unsafe-traits.md:28 src/exercises/day-3/afternoon.md:5
-#: src/android/interoperability/with-c/rust.md:81 src/exercises/android/morning.md:10
-#: src/bare-metal/minimal.md:15 src/bare-metal/alloc.md:37 src/bare-metal/microcontrollers.md:23
-#: src/bare-metal/microcontrollers/mmio.md:62 src/bare-metal/microcontrollers/pacs.md:47
-#: src/bare-metal/microcontrollers/hals.md:37 src/bare-metal/microcontrollers/board-support.md:26
+#: src/error-handling/try-operator.md:46
+#: src/error-handling/converting-error-types-example.md:48
+#: src/error-handling/deriving-error-enums.md:37
+#: src/error-handling/dynamic-errors.md:34
+#: src/error-handling/error-contexts.md:33 src/unsafe.md:26
+#: src/unsafe/raw-pointers.md:25 src/unsafe/mutable-static-variables.md:30
+#: src/unsafe/unions.md:19 src/unsafe/writing-unsafe-functions.md:31
+#: src/unsafe/extern-functions.md:19 src/unsafe/unsafe-traits.md:28
+#: src/exercises/day-3/afternoon.md:12
+#: src/android/interoperability/with-c/rust.md:81
+#: src/exercises/android/morning.md:10 src/bare-metal/minimal.md:15
+#: src/bare-metal/alloc.md:37 src/bare-metal/microcontrollers.md:23
+#: src/bare-metal/microcontrollers/mmio.md:62
+#: src/bare-metal/microcontrollers/pacs.md:47
+#: src/bare-metal/microcontrollers/hals.md:37
+#: src/bare-metal/microcontrollers/board-support.md:26
#: src/bare-metal/microcontrollers/type-state.md:30
-#: src/bare-metal/microcontrollers/embedded-hal.md:17 src/bare-metal/microcontrollers/probe-rs.md:14
+#: src/bare-metal/microcontrollers/embedded-hal.md:17
+#: src/bare-metal/microcontrollers/probe-rs.md:14
#: src/bare-metal/microcontrollers/debugging.md:25
-#: src/bare-metal/microcontrollers/other-projects.md:16 src/exercises/bare-metal/morning.md:5
-#: src/bare-metal/aps.md:7 src/bare-metal/aps/inline-assembly.md:41 src/bare-metal/aps/mmio.md:7
+#: src/bare-metal/microcontrollers/other-projects.md:16
+#: src/exercises/bare-metal/morning.md:5 src/bare-metal/aps.md:7
+#: src/bare-metal/aps/entry-point.md:75
+#: src/bare-metal/aps/inline-assembly.md:41 src/bare-metal/aps/mmio.md:7
#: src/bare-metal/aps/uart.md:53 src/bare-metal/aps/uart/traits.md:22
-#: src/bare-metal/aps/better-uart.md:24 src/bare-metal/aps/better-uart/bitflags.md:35
-#: src/bare-metal/aps/better-uart/registers.md:39 src/bare-metal/aps/better-uart/driver.md:62
+#: src/bare-metal/aps/better-uart.md:24
+#: src/bare-metal/aps/better-uart/bitflags.md:35
+#: src/bare-metal/aps/better-uart/registers.md:39
+#: src/bare-metal/aps/better-uart/driver.md:62
#: src/bare-metal/aps/better-uart/using.md:49 src/bare-metal/aps/logging.md:48
-#: src/bare-metal/aps/logging/using.md:44 src/bare-metal/useful-crates/zerocopy.md:43
+#: src/bare-metal/aps/logging/using.md:44 src/bare-metal/aps/exceptions.md:62
+#: src/bare-metal/aps/other-projects.md:15
+#: src/bare-metal/useful-crates/zerocopy.md:43
#: src/bare-metal/useful-crates/aarch64-paging.md:26
#: src/bare-metal/useful-crates/buddy_system_allocator.md:24
-#: src/bare-metal/useful-crates/tinyvec.md:21 src/bare-metal/useful-crates/spin.md:21
-#: src/bare-metal/android/vmbase.md:19 src/exercises/bare-metal/afternoon.md:5
-#: src/concurrency/threads.md:28 src/concurrency/scoped-threads.md:35 src/concurrency/channels.md:25
-#: src/concurrency/send-sync.md:18 src/concurrency/send-sync/send.md:11
-#: src/concurrency/send-sync/sync.md:12 src/concurrency/shared_state/arc.md:27
-#: src/concurrency/shared_state/mutex.md:29 src/concurrency/shared_state/example.md:21
-#: src/exercises/concurrency/morning.md:10 src/async/async-await.md:23 src/async/futures.md:30
-#: src/async/runtimes.md:18 src/async/runtimes/tokio.md:31 src/async/tasks.md:51
-#: src/async/channels.md:33 src/async/control-flow/join.md:34 src/async/control-flow/select.md:59
+#: src/bare-metal/useful-crates/tinyvec.md:21
+#: src/bare-metal/useful-crates/spin.md:21 src/bare-metal/android/vmbase.md:19
+#: src/exercises/bare-metal/afternoon.md:5 src/concurrency/threads.md:28
+#: src/concurrency/scoped-threads.md:35 src/concurrency/channels.md:25
+#: src/concurrency/channels/bounded.md:29 src/concurrency/send-sync.md:18
+#: src/concurrency/send-sync/send.md:11 src/concurrency/send-sync/sync.md:12
+#: src/concurrency/shared_state/arc.md:27
+#: src/concurrency/shared_state/mutex.md:29
+#: src/concurrency/shared_state/example.md:21
+#: src/exercises/concurrency/morning.md:10 src/async/async-await.md:23
+#: src/async/futures.md:30 src/async/runtimes.md:18
+#: src/async/runtimes/tokio.md:31 src/async/tasks.md:50
+#: src/async/channels.md:33 src/async/control-flow/join.md:34
+#: src/async/control-flow/select.md:60
#: src/async/pitfalls/blocking-executor.md:27 src/async/pitfalls/pin.md:66
+#: src/async/pitfalls/cancellation.md:70
#: src/exercises/concurrency/afternoon.md:11
#: src/exercises/concurrency/dining-philosophers-async.md:75
-#, fuzzy
msgid ""
-msgstr ""
+msgstr ""
#: src/welcome.md:52
-#, fuzzy
msgid ""
"This is an example of a _speaker note_. We will use these to add additional\n"
-"information to the slides. This could be key points which the instructor should\n"
+"information to the slides. This could be key points which the instructor "
+"should\n"
"cover as well as answers to typical questions which come up in class."
msgstr ""
-"Questo è un esempio di _nota del relatore_. Useremo questi per aggiungere ulteriori\n"
-"informazioni alle diapositive. Questi potrebbero essere punti chiave che l'istruttore dovrebbe\n"
+"Questo è un esempio di _nota del relatore_. Useremo questi per aggiungere "
+"ulteriori\n"
+"informazioni alle diapositive. Questi potrebbero essere punti chiave che "
+"l'istruttore dovrebbe\n"
"copertina così come le risposte alle domande tipiche che sorgono in classe."
-#: src/welcome.md:56 src/cargo/rust-ecosystem.md:67 src/cargo/code-samples.md:35
-#: src/cargo/running-locally.md:74 src/welcome-day-1.md:42 src/welcome-day-1/what-is-rust.md:29
-#: src/hello-world.md:40 src/hello-world/small-example.md:44 src/why-rust.md:24
-#: src/why-rust/compile-time.md:35 src/why-rust/runtime.md:22 src/why-rust/modern.md:66
-#: src/basic-syntax/scalar-types.md:43 src/basic-syntax/compound-types.md:62
-#: src/basic-syntax/references.md:28 src/basic-syntax/slices.md:36
-#: src/basic-syntax/string-slices.md:44 src/basic-syntax/functions.md:41
-#: src/basic-syntax/rustdoc.md:33 src/basic-syntax/methods.md:45
-#: src/basic-syntax/functions-interlude.md:30 src/exercises/day-1/morning.md:28
-#: src/exercises/day-1/for-loops.md:95 src/basic-syntax/variables.md:20
-#: src/basic-syntax/type-inference.md:48 src/basic-syntax/static-and-const.md:52
+#: src/welcome.md:56 src/cargo/rust-ecosystem.md:67
+#: src/cargo/code-samples.md:35 src/cargo/running-locally.md:74
+#: src/welcome-day-1.md:42 src/welcome-day-1/what-is-rust.md:29
+#: src/hello-world.md:40 src/hello-world/small-example.md:46 src/why-rust.md:24
+#: src/why-rust/compile-time.md:35 src/why-rust/runtime.md:23
+#: src/why-rust/modern.md:66 src/basic-syntax/scalar-types.md:43
+#: src/basic-syntax/compound-types.md:62 src/basic-syntax/references.md:29
+#: src/basic-syntax/slices.md:36 src/basic-syntax/string-slices.md:44
+#: src/basic-syntax/functions.md:41 src/basic-syntax/rustdoc.md:33
+#: src/basic-syntax/methods.md:45 src/basic-syntax/functions-interlude.md:30
+#: src/exercises/day-1/morning.md:28 src/exercises/day-1/for-loops.md:95
+#: src/basic-syntax/variables.md:20 src/basic-syntax/type-inference.md:48
+#: src/basic-syntax/static-and-const.md:55
#: src/basic-syntax/scopes-shadowing.md:39 src/memory-management/stack.md:49
#: src/memory-management/rust.md:18 src/ownership/move-semantics.md:26
#: src/ownership/moves-function-calls.md:26 src/ownership/copy-clone.md:51
#: src/ownership/borrowing.md:51 src/ownership/shared-unique-borrows.md:29
-#: src/ownership/lifetimes-function-calls.md:60 src/ownership/lifetimes-data-structures.md:30
-#: src/exercises/day-1/afternoon.md:15 src/exercises/day-1/book-library.md:104 src/structs.md:41
-#: src/structs/tuple-structs.md:43 src/structs/field-shorthand.md:72 src/enums.md:41
+#: src/ownership/lifetimes-function-calls.md:60
+#: src/ownership/lifetimes-data-structures.md:30
+#: src/exercises/day-1/afternoon.md:15 src/exercises/day-1/book-library.md:104
+#: src/structs.md:42 src/structs/tuple-structs.md:44
+#: src/structs/field-shorthand.md:72 src/enums.md:42
#: src/enums/variant-payloads.md:45 src/enums/sizes.md:155 src/methods.md:41
-#: src/methods/receiver.md:29 src/methods/example.md:53 src/pattern-matching.md:35
-#: src/pattern-matching/destructuring-enums.md:39 src/pattern-matching/destructuring-structs.md:29
-#: src/pattern-matching/destructuring-arrays.md:46 src/pattern-matching/match-guards.md:28
-#: src/exercises/day-2/morning.md:15 src/exercises/day-2/points-polygons.md:125
-#: src/control-flow/blocks.md:46 src/control-flow/if-expressions.md:37
-#: src/control-flow/if-let-expressions.md:41 src/control-flow/while-let-expressions.md:29
-#: src/control-flow/for-expressions.md:30 src/control-flow/loop-expressions.md:32
-#: src/control-flow/match-expressions.md:33 src/std.md:31 src/std/option-result.md:25
-#: src/std/string.md:42 src/std/vec.md:49 src/std/hashmap.md:66 src/std/box.md:39
-#: src/std/box-recursive.md:41 src/std/rc.md:69 src/modules.md:32 src/modules/visibility.md:48
-#: src/modules/filesystem.md:71 src/exercises/day-2/afternoon.md:11 src/generics/data-types.md:25
-#: src/generics/methods.md:31 src/traits/trait-objects.md:83 src/traits/default-methods.md:41
-#: src/traits/trait-bounds.md:50 src/traits/impl-trait.md:44 src/traits/iterator.md:42
-#: src/traits/from-iterator.md:26 src/traits/from-into.md:33 src/traits/drop.md:42
-#: src/traits/default.md:47 src/traits/operators.md:38 src/traits/closures.md:38
+#: src/methods/receiver.md:28 src/methods/example.md:53
+#: src/pattern-matching.md:35 src/pattern-matching/destructuring-enums.md:39
+#: src/pattern-matching/destructuring-structs.md:29
+#: src/pattern-matching/destructuring-arrays.md:46
+#: src/pattern-matching/match-guards.md:28 src/exercises/day-2/morning.md:15
+#: src/exercises/day-2/points-polygons.md:125 src/control-flow/blocks.md:47
+#: src/control-flow/if-expressions.md:37
+#: src/control-flow/if-let-expressions.md:41
+#: src/control-flow/while-let-expressions.md:29
+#: src/control-flow/for-expressions.md:30
+#: src/control-flow/loop-expressions.md:32
+#: src/control-flow/match-expressions.md:33 src/std.md:31
+#: src/std/option-result.md:25 src/std/string.md:42 src/std/vec.md:49
+#: src/std/hashmap.md:66 src/std/box.md:39 src/std/box-recursive.md:41
+#: src/std/rc.md:69 src/modules.md:32 src/modules/visibility.md:48
+#: src/modules/filesystem.md:71 src/exercises/day-2/afternoon.md:11
+#: src/generics/data-types.md:25 src/generics/methods.md:31
+#: src/traits/trait-objects.md:83 src/traits/default-methods.md:60
+#: src/traits/trait-bounds.md:50 src/traits/impl-trait.md:44
+#: src/traits/iterator.md:42 src/traits/from-iterator.md:26
+#: src/traits/from-into.md:33 src/traits/drop.md:42 src/traits/default.md:47
+#: src/traits/operators.md:40 src/traits/closures.md:63
#: src/exercises/day-3/morning.md:11 src/error-handling/result.md:33
-#: src/error-handling/try-operator.md:53 src/error-handling/converting-error-types-example.md:60
-#: src/error-handling/deriving-error-enums.md:45 src/error-handling/dynamic-errors.md:41
-#: src/error-handling/error-contexts.md:42 src/unsafe.md:32 src/unsafe/raw-pointers.md:43
-#: src/unsafe/mutable-static-variables.md:35 src/unsafe/unions.md:28
-#: src/unsafe/writing-unsafe-functions.md:38 src/unsafe/extern-functions.md:28
-#: src/unsafe/unsafe-traits.md:37 src/exercises/day-3/afternoon.md:11
-#: src/android/interoperability/with-c/rust.md:86 src/exercises/android/morning.md:15
-#: src/bare-metal/no_std.md:65 src/bare-metal/minimal.md:26 src/bare-metal/alloc.md:49
-#: src/bare-metal/microcontrollers.md:29 src/bare-metal/microcontrollers/mmio.md:72
-#: src/bare-metal/microcontrollers/pacs.md:65 src/bare-metal/microcontrollers/hals.md:49
+#: src/error-handling/try-operator.md:53
+#: src/error-handling/converting-error-types-example.md:60
+#: src/error-handling/deriving-error-enums.md:45
+#: src/error-handling/dynamic-errors.md:41
+#: src/error-handling/error-contexts.md:42 src/unsafe.md:32
+#: src/unsafe/raw-pointers.md:43 src/unsafe/mutable-static-variables.md:35
+#: src/unsafe/unions.md:28 src/unsafe/writing-unsafe-functions.md:38
+#: src/unsafe/extern-functions.md:28 src/unsafe/unsafe-traits.md:37
+#: src/exercises/day-3/afternoon.md:18
+#: src/android/interoperability/with-c/rust.md:86
+#: src/exercises/android/morning.md:15 src/bare-metal/no_std.md:65
+#: src/bare-metal/minimal.md:26 src/bare-metal/alloc.md:49
+#: src/bare-metal/microcontrollers.md:29
+#: src/bare-metal/microcontrollers/mmio.md:72
+#: src/bare-metal/microcontrollers/pacs.md:65
+#: src/bare-metal/microcontrollers/hals.md:49
#: src/bare-metal/microcontrollers/board-support.md:40
#: src/bare-metal/microcontrollers/type-state.md:43
-#: src/bare-metal/microcontrollers/embedded-hal.md:23 src/bare-metal/microcontrollers/probe-rs.md:29
+#: src/bare-metal/microcontrollers/embedded-hal.md:23
+#: src/bare-metal/microcontrollers/probe-rs.md:29
#: src/bare-metal/microcontrollers/debugging.md:38
-#: src/bare-metal/microcontrollers/other-projects.md:26 src/exercises/bare-metal/morning.md:11
-#: src/bare-metal/aps.md:15 src/bare-metal/aps/inline-assembly.md:58 src/bare-metal/aps/mmio.md:17
+#: src/bare-metal/microcontrollers/other-projects.md:26
+#: src/exercises/bare-metal/morning.md:11 src/bare-metal/aps.md:15
+#: src/bare-metal/aps/entry-point.md:101
+#: src/bare-metal/aps/inline-assembly.md:58 src/bare-metal/aps/mmio.md:17
#: src/bare-metal/aps/uart/traits.md:27 src/bare-metal/aps/better-uart.md:28
-#: src/bare-metal/aps/better-uart/bitflags.md:40 src/bare-metal/aps/better-uart/registers.md:46
-#: src/bare-metal/aps/better-uart/driver.md:67 src/bare-metal/aps/better-uart/using.md:55
-#: src/bare-metal/aps/logging.md:52 src/bare-metal/aps/logging/using.md:49
-#: src/bare-metal/useful-crates/zerocopy.md:53 src/bare-metal/useful-crates/aarch64-paging.md:33
+#: src/bare-metal/aps/better-uart/bitflags.md:40
+#: src/bare-metal/aps/better-uart/registers.md:46
+#: src/bare-metal/aps/better-uart/driver.md:67
+#: src/bare-metal/aps/better-uart/using.md:55 src/bare-metal/aps/logging.md:52
+#: src/bare-metal/aps/logging/using.md:49 src/bare-metal/aps/exceptions.md:75
+#: src/bare-metal/aps/other-projects.md:29
+#: src/bare-metal/useful-crates/zerocopy.md:53
+#: src/bare-metal/useful-crates/aarch64-paging.md:33
#: src/bare-metal/useful-crates/buddy_system_allocator.md:30
-#: src/bare-metal/useful-crates/tinyvec.md:26 src/bare-metal/useful-crates/spin.md:30
-#: src/bare-metal/android/vmbase.md:25 src/exercises/bare-metal/afternoon.md:11
-#: src/concurrency/threads.md:45 src/concurrency/scoped-threads.md:40 src/concurrency/channels.md:32
-#: src/concurrency/send-sync.md:23 src/concurrency/send-sync/send.md:16
-#: src/concurrency/send-sync/sync.md:18 src/concurrency/shared_state/arc.md:38
-#: src/concurrency/shared_state/mutex.md:45 src/concurrency/shared_state/example.md:56
-#: src/exercises/concurrency/morning.md:16 src/async/async-await.md:48 src/async/futures.md:45
-#: src/async/runtimes.md:29 src/async/runtimes/tokio.md:49 src/async/tasks.md:64
-#: src/async/channels.md:49 src/async/control-flow/join.md:50 src/async/control-flow/select.md:77
+#: src/bare-metal/useful-crates/tinyvec.md:26
+#: src/bare-metal/useful-crates/spin.md:30 src/bare-metal/android/vmbase.md:25
+#: src/exercises/bare-metal/afternoon.md:11 src/concurrency/threads.md:45
+#: src/concurrency/scoped-threads.md:40 src/concurrency/channels.md:32
+#: src/concurrency/channels/bounded.md:35 src/concurrency/send-sync.md:23
+#: src/concurrency/send-sync/send.md:16 src/concurrency/send-sync/sync.md:18
+#: src/concurrency/shared_state/arc.md:38
+#: src/concurrency/shared_state/mutex.md:45
+#: src/concurrency/shared_state/example.md:56
+#: src/exercises/concurrency/morning.md:16 src/async/async-await.md:48
+#: src/async/futures.md:45 src/async/runtimes.md:29
+#: src/async/runtimes/tokio.md:49 src/async/tasks.md:63
+#: src/async/channels.md:49 src/async/control-flow/join.md:50
+#: src/async/control-flow/select.md:79
#: src/async/pitfalls/blocking-executor.md:50 src/async/pitfalls/pin.md:112
-#: src/async/pitfalls/async-traits.md:63 src/exercises/concurrency/afternoon.md:17
+#: src/async/pitfalls/async-traits.md:63 src/async/pitfalls/cancellation.md:114
+#: src/exercises/concurrency/afternoon.md:17
#: src/exercises/concurrency/dining-philosophers-async.md:79
-#, fuzzy
msgid ""
-msgstr ""
+msgstr ""
#: src/running-the-course.md:1
msgid "# Running the Course"
msgstr "# Esecuzione del corso"
#: src/running-the-course.md:3 src/running-the-course/course-structure.md:3
-#, fuzzy
msgid "> This page is for the course instructor."
msgstr "> Questa pagina è per l'istruttore del corso."
#: src/running-the-course.md:5
-#, fuzzy
msgid ""
-"Here is a bit of background information about how we've been running the course\n"
+"Here is a bit of background information about how we've been running the "
+"course\n"
"internally at Google."
msgstr ""
"Ecco alcune informazioni di base su come abbiamo condotto il corso\n"
@@ -1347,99 +1423,129 @@ msgid "Before you run the course, you will want to:"
msgstr "Prima di eseguire il corso, vorrai:"
#: src/running-the-course.md:10
-#, fuzzy
msgid ""
-"1. Make yourself familiar with the course material. We've included speaker notes\n"
-" to help highlight the key points (please help us by contributing more speaker\n"
-" notes!). When presenting, you should make sure to open the speaker notes in a\n"
-" popup (click the link with a little arrow next to \"Speaker Notes\"). This way\n"
+"1. Make yourself familiar with the course material. We've included speaker "
+"notes\n"
+" to help highlight the key points (please help us by contributing more "
+"speaker\n"
+" notes!). When presenting, you should make sure to open the speaker notes "
+"in a\n"
+" popup (click the link with a little arrow next to \"Speaker Notes\"). "
+"This way\n"
" you have a clean screen to present to the class.\n"
"\n"
-"1. Decide on the dates. Since the course takes at least three full days, we recommend that you\n"
+"1. Decide on the dates. Since the course takes at least three full days, we "
+"recommend that you\n"
" schedule the days over two weeks. Course participants have said that\n"
-" they find it helpful to have a gap in the course since it helps them process\n"
+" they find it helpful to have a gap in the course since it helps them "
+"process\n"
" all the information we give them.\n"
"\n"
"1. Find a room large enough for your in-person participants. We recommend a\n"
-" class size of 15-25 people. That's small enough that people are comfortable\n"
-" asking questions --- it's also small enough that one instructor will have\n"
-" time to answer the questions. Make sure the room has _desks_ for yourself and for the\n"
-" students: you will all need to be able to sit and work with your laptops.\n"
-" In particular, you will be doing a lot of live-coding as an instructor, so a lectern won't\n"
+" class size of 15-25 people. That's small enough that people are "
+"comfortable\n"
+" asking questions --- it's also small enough that one instructor will "
+"have\n"
+" time to answer the questions. Make sure the room has _desks_ for yourself "
+"and for the\n"
+" students: you will all need to be able to sit and work with your "
+"laptops.\n"
+" In particular, you will be doing a lot of live-coding as an instructor, "
+"so a lectern won't\n"
" be very helpful for you.\n"
"\n"
-"1. On the day of your course, show up to the room a little early to set things\n"
-" up. We recommend presenting directly using `mdbook serve` running on your\n"
-" laptop (see the [installation instructions][3]). This ensures optimal performance with no lag "
-"as you change pages.\n"
+"1. On the day of your course, show up to the room a little early to set "
+"things\n"
+" up. We recommend presenting directly using `mdbook serve` running on "
+"your\n"
+" laptop (see the [installation instructions][3]). This ensures optimal "
+"performance with no lag as you change pages.\n"
" Using your laptop will also allow you to fix typos as you or the course\n"
" participants spot them.\n"
"\n"
"1. Let people solve the exercises by themselves or in small groups.\n"
-" We typically spend 30-45 minutes on exercises in the morning and in the afternoon (including "
-"time to review the solutions).\n"
+" We typically spend 30-45 minutes on exercises in the morning and in the "
+"afternoon (including time to review the solutions).\n"
" Make sure to\n"
-" ask people if they're stuck or if there is anything you can help with. When\n"
-" you see that several people have the same problem, call it out to the class\n"
+" ask people if they're stuck or if there is anything you can help with. "
+"When\n"
+" you see that several people have the same problem, call it out to the "
+"class\n"
" and offer a solution, e.g., by showing people where to find the relevant\n"
" information in the standard library."
msgstr ""
-"1. Acquisisci familiarità con il materiale del corso. Abbiamo incluso le note del relatore\n"
-" per aiutare a evidenziare i punti chiave (per favore aiutateci contribuendo con più relatori\n"
-" Appunti!). Durante la presentazione, assicurati di aprire le note del relatore in formato a\n"
-" popup (fare clic sul collegamento con una piccola freccia accanto a \"Note del relatore\"). Da "
-"questa parte\n"
+"1. Acquisisci familiarità con il materiale del corso. Abbiamo incluso le "
+"note del relatore\n"
+" per aiutare a evidenziare i punti chiave (per favore aiutateci "
+"contribuendo con più relatori\n"
+" Appunti!). Durante la presentazione, assicurati di aprire le note del "
+"relatore in formato a\n"
+" popup (fare clic sul collegamento con una piccola freccia accanto a "
+"\"Note del relatore\"). Da questa parte\n"
" hai uno schermo pulito da presentare alla classe.\n"
"\n"
-"1. Seleziona il tuo argomento per il pomeriggio del quarto giorno. Questo può essere basato su\n"
+"1. Seleziona il tuo argomento per il pomeriggio del quarto giorno. Questo "
+"può essere basato su\n"
" il pubblico che ti aspetti o sulla tua esperienza.\n"
"\n"
"1. Decidi le date. Poiché il corso è grande, ti consigliamo di farlo\n"
-" programmare i giorni su due settimane. Lo hanno detto i partecipanti al corso\n"
+" programmare i giorni su due settimane. Lo hanno detto i partecipanti al "
+"corso\n"
" trovano utile avere una pausa nel corso poiché li aiuta a elaborare\n"
" tutte le informazioni che diamo loro.\n"
"\n"
-"1. Trova una stanza abbastanza grande per i tuoi partecipanti di persona. Consigliamo un\n"
-" dimensione della classe di 15-20 persone. È abbastanza piccolo da permettere alle persone di "
-"sentirsi a proprio agio\n"
+"1. Trova una stanza abbastanza grande per i tuoi partecipanti di persona. "
+"Consigliamo un\n"
+" dimensione della classe di 15-20 persone. È abbastanza piccolo da "
+"permettere alle persone di sentirsi a proprio agio\n"
" fare domande --- è anche abbastanza piccolo che un istruttore avrà\n"
-" tempo per rispondere alle domande. Assicurati che la stanza abbia _scrivanie_ per te e per il\n"
-" studenti: dovrete essere tutti in grado di sedervi e lavorare con i vostri laptop.\n"
-" In particolare, eseguirai molto codice dal vivo come istruttore, quindi un leggio no\n"
+" tempo per rispondere alle domande. Assicurati che la stanza abbia "
+"_scrivanie_ per te e per il\n"
+" studenti: dovrete essere tutti in grado di sedervi e lavorare con i "
+"vostri laptop.\n"
+" In particolare, eseguirai molto codice dal vivo come istruttore, quindi "
+"un leggio no\n"
" essere molto utile per te.\n"
"\n"
-"1. Il giorno del corso, presentati in aula un po' prima per sistemare le cose\n"
-" su. Ti consigliamo di presentare direttamente utilizzando `mdbook serve` in esecuzione sul tuo\n"
-" laptop (vedere le [istruzioni di installazione][3]). Ciò garantisce prestazioni ottimali senza "
-"ritardi quando si cambiano le pagine.\n"
-" L'uso del tuo laptop ti consentirà anche di correggere errori di battitura come te o il corso\n"
+"1. Il giorno del corso, presentati in aula un po' prima per sistemare le "
+"cose\n"
+" su. Ti consigliamo di presentare direttamente utilizzando `mdbook serve` "
+"in esecuzione sul tuo\n"
+" laptop (vedere le [istruzioni di installazione][3]). Ciò garantisce "
+"prestazioni ottimali senza ritardi quando si cambiano le pagine.\n"
+" L'uso del tuo laptop ti consentirà anche di correggere errori di "
+"battitura come te o il corso\n"
" i partecipanti li individuano.\n"
"\n"
-"1. Lascia che le persone risolvano gli esercizi da sole o in piccoli gruppi. Assicurati che\n"
-" chiedi alle persone se sono bloccate o se c'è qualcosa in cui puoi aiutarle. Quando\n"
+"1. Lascia che le persone risolvano gli esercizi da sole o in piccoli gruppi. "
+"Assicurati che\n"
+" chiedi alle persone se sono bloccate o se c'è qualcosa in cui puoi "
+"aiutarle. Quando\n"
" vedi che diverse persone hanno lo stesso problema, segnalalo alla classe\n"
-" e offrire una soluzione, ad esempio mostrando alle persone dove trovare le informazioni "
-"pertinenti\n"
+" e offrire una soluzione, ad esempio mostrando alle persone dove trovare "
+"le informazioni pertinenti\n"
" informazioni nella libreria standard."
#: src/running-the-course.md:43
-#, fuzzy
msgid ""
-"That is all, good luck running the course! We hope it will be as much fun for\n"
+"That is all, good luck running the course! We hope it will be as much fun "
+"for\n"
"you as it has been for us!"
msgstr ""
-"Questo è tutto, buona fortuna con il corso! Speriamo che sarà altrettanto divertente per\n"
+"Questo è tutto, buona fortuna con il corso! Speriamo che sarà altrettanto "
+"divertente per\n"
"te come lo è stato per noi!"
#: src/running-the-course.md:46
-#, fuzzy
msgid ""
"Please [provide feedback][1] afterwards so that we can keep improving the\n"
"course. We would love to hear what worked well for you and what can be made\n"
"better. Your students are also very welcome to [send us feedback][2]!"
msgstr ""
-"Si prega di [fornire feedback][1] in seguito in modo che possiamo continuare a migliorare il\n"
-"corso. Ci piacerebbe sapere cosa ha funzionato bene per te e cosa si può fare\n"
+"Si prega di [fornire feedback][1] in seguito in modo che possiamo continuare "
+"a migliorare il\n"
+"corso. Ci piacerebbe sapere cosa ha funzionato bene per te e cosa si può "
+"fare\n"
"Meglio. Anche i tuoi studenti sono i benvenuti a [inviarci feedback][2]!"
#: src/running-the-course/course-structure.md:1
@@ -1451,27 +1557,26 @@ msgid "The course is fast paced and covers a lot of ground:"
msgstr "Il corso è veloce e copre un sacco di terreno:"
#: src/running-the-course/course-structure.md:7
-#, fuzzy
msgid ""
"* Day 1: Basic Rust, ownership and the borrow checker.\n"
"* Day 2: Compound data types, pattern matching, the standard library.\n"
"* Day 3: Traits and generics, error handling, testing, unsafe Rust."
msgstr ""
-"* Giorno 1: Basic Rust, proprietà e controllo del prestito.\n"
+"* Giorno 1: Rust base, 'ownership' e 'borrow checker'.\n"
"* Giorno 2: tipi di dati composti, pattern matching, libreria standard.\n"
-"* Giorno 3: Tratti e generici, gestione degli errori, test, Rust non sicuro."
+"* Giorno 3: 'traits' e 'generics', gestione degli errori, test, Rust non sicuro."
#: src/running-the-course/course-structure.md:11
msgid "## Deep Dives"
msgstr "## Immersioni profonde"
#: src/running-the-course/course-structure.md:13
-#, fuzzy
msgid ""
"In addition to the 3-day class on Rust Fundamentals, we cover some more\n"
"specialized topics:"
msgstr ""
-"Oltre alla lezione di 3 giorni sui fondamenti della ruggine, ne copriamo altri\n"
+"Oltre alla lezione di 3 giorni sui fondamenti di Rust, ne copriamo "
+"altri\n"
"argomenti specialistici:"
#: src/running-the-course/course-structure.md:16
@@ -1479,38 +1584,47 @@ msgid "### Android"
msgstr "### Android"
#: src/running-the-course/course-structure.md:18
-#, fuzzy
msgid ""
-"The [Android Deep Dive](../android.md) is a half-day course on using Rust for\n"
-"Android platform development. This includes interoperability wtih C, C++, and\n"
+"The [Android Deep Dive](../android.md) is a half-day course on using Rust "
+"for\n"
+"Android platform development. This includes interoperability with C, C++, "
+"and\n"
"Java."
msgstr ""
-"L'[Android Deep Dive](../android.md) è un corso di mezza giornata sull'utilizzo di Rust per\n"
-"Sviluppo della piattaforma Android. Ciò include l'interoperabilità con C, C++ e\n"
-"Giava."
+"L'[Android Deep Dive](../android.md) è un corso di mezza giornata "
+"sull'utilizzo di Rust per\n"
+"Sviluppo sulla piattaforma Android. Ciò include l'interoperabilità con C, C+"
+"+ e\n"
+"Java."
#: src/running-the-course/course-structure.md:22
-#, fuzzy
msgid ""
"You will need an [AOSP checkout][1]. Make a checkout of the [course\n"
-"repository][2] on the same machine and move the `src/android/` directory into\n"
-"the root of your AOSP checkout. This will ensure that the Android build system\n"
+"repository][2] on the same machine and move the `src/android/` directory "
+"into\n"
+"the root of your AOSP checkout. This will ensure that the Android build "
+"system\n"
"sees the `Android.bp` files in `src/android/`."
msgstr ""
"Avrai bisogno di un [checkout AOSP][1]. Fai un checkout del [corso\n"
-"repository][2] sulla stessa macchina e sposta la directory `src/android/` in\n"
-"la radice del tuo checkout AOSP. Ciò garantirà che il sistema di compilazione Android\n"
+"repository][2] sulla stessa macchina e sposta la directory `src/android/` "
+"in\n"
+"la radice del tuo checkout AOSP. Ciò garantirà che il sistema di "
+"compilazione Android\n"
"vede i file `Android.bp` in `src/android/`."
#: src/running-the-course/course-structure.md:27
-#, fuzzy
msgid ""
-"Ensure that `adb sync` works with your emulator or real device and pre-build all\n"
-"Android examples using `src/android/build_all.sh`. Read the script to see the\n"
+"Ensure that `adb sync` works with your emulator or real device and pre-build "
+"all\n"
+"Android examples using `src/android/build_all.sh`. Read the script to see "
+"the\n"
"commands it runs and make sure they work when you run them by hand."
msgstr ""
-"Assicurati che `adb sync` funzioni con il tuo emulatore o dispositivo reale e precompila tutto\n"
-"Esempi di Android che utilizzano `src/android/build_all.sh`. Leggi lo script per vedere il file\n"
+"Assicurati che `adb sync` funzioni con il tuo emulatore o dispositivo reale "
+"e precompila tutti\n"
+"gli esempi di Android che utilizzano `src/android/build_all.sh`. Leggi lo script "
+"per vedere i\n"
"comandi che esegue e assicurati che funzionino quando li esegui a mano."
#: src/running-the-course/course-structure.md:34
@@ -1518,28 +1632,29 @@ msgid "### Bare-Metal"
msgstr "### Bare-Metal"
#: src/running-the-course/course-structure.md:36
-#, fuzzy
msgid ""
-"The [Bare-Metal Deep Dive](../bare-metal.md): a full day class on using Rust for\n"
+"The [Bare-Metal Deep Dive](../bare-metal.md): a full day class on using Rust "
+"for\n"
"bare-metal (embedded) development. Both microcontrollers and application\n"
"processors are covered."
msgstr ""
-"The [Bare-Metal Deep Dive](../bare-metal.md): una lezione di un'intera giornata sull'uso di Rust "
-"per\n"
-"sviluppo bare metal (incorporato). Sia i microcontrollori che l'applicazione\n"
-"i processori sono coperti."
+"Il [Bare-Metal Deep Dive](../bare-metal.md): una lezione di un'intera "
+"giornata sull'uso di Rust per\n"
+"sviluppo bare metal (embedded). Sono coperti sia i microcontrollori che "
+"i processori applicativi."
#: src/running-the-course/course-structure.md:40
-#, fuzzy
msgid ""
"For the microcontroller part, you will need to buy the [BBC\n"
-"micro:bit](https://microbit.org/) v2 development board ahead of time. Everybody\n"
+"micro:bit](https://microbit.org/) v2 development board ahead of time. "
+"Everybody\n"
"will need to install a number of packages as described on the [welcome\n"
"page](../bare-metal.md)."
msgstr ""
-"Per la parte del microcontrollore, dovrai acquistare il [BBC\n"
-"micro:bit](https://microbit.org/) scheda di sviluppo v2 in anticipo. Tutti\n"
-"dovrà installare un certo numero di pacchetti come descritto nel file [welcome\n"
+"Per la parte del microcontrollore, dovrai acquistare la scheda di sviluppo [BBC "
+"micro:bit v2](https://microbit.org/) in anticipo.\n"
+"Si dovranno installare un certo numero di pacchetti come descritto nel file "
+"[welcome\n"
"page](../bare-metal.md)."
#: src/running-the-course/course-structure.md:45
@@ -1547,24 +1662,27 @@ msgid "### Concurrency"
msgstr "### Concorrenza"
#: src/running-the-course/course-structure.md:47
-#, fuzzy
msgid ""
-"The [Concurrency Deep Dive](../concurrency.md) is a full day class on classical\n"
+"The [Concurrency Deep Dive](../concurrency.md) is a full day class on "
+"classical\n"
"as well as `async`/`await` concurrency."
msgstr ""
-"Il [Concurrency Deep Dive](../concurrency.md) è un corso di un'intera giornata sulla musica "
-"classica\n"
+"L'[approfondimento sulla concorrenza](../concurrency.md) è un corso di un'intera "
+"giornata sulla concorrenza classica in Rust,\n"
"così come la concorrenza `async`/`await`."
#: src/running-the-course/course-structure.md:50
-#, fuzzy
msgid ""
-"You will need a fresh crate set up and the dependencies downloaded and ready to\n"
-"go. You can then copy/paste the examples into `src/main.rs` to experiment with\n"
+"You will need a fresh crate set up and the dependencies downloaded and ready "
+"to\n"
+"go. You can then copy/paste the examples into `src/main.rs` to experiment "
+"with\n"
"them:"
msgstr ""
-"Avrai bisogno di una nuova configurazione della cassa e delle dipendenze scaricate e pronte per\n"
-"andare. Puoi quindi copiare/incollare gli esempi in `src/main.rs` per sperimentare\n"
+"Avrai bisogno di creare un nuovo progetto, con nuove dipendenze "
+"scaricate e pronte per\n"
+"l'utilizzo. Puoi quindi copiare/incollare gli esempi in `src/main.rs` per "
+"sperimentare attraverso di\n"
"loro:"
#: src/running-the-course/course-structure.md:54
@@ -1582,25 +1700,22 @@ msgid "## Format"
msgstr "## Formato"
#: src/running-the-course/course-structure.md:63
-#, fuzzy
msgid ""
"The course is meant to be very interactive and we recommend letting the\n"
"questions drive the exploration of Rust!"
msgstr ""
-"Il corso è pensato per essere molto interattivo e si consiglia di lasciare il\n"
-"le domande guidano l'esplorazione di Rust!"
+"Il corso è pensato per essere molto interattivo e si consiglia di lasciare\n"
+"che siano le domande a guidare l'esplorazione di Rust!"
#: src/running-the-course/keyboard-shortcuts.md:1
msgid "# Keyboard Shortcuts"
msgstr "# Tasti rapidi"
#: src/running-the-course/keyboard-shortcuts.md:3
-#, fuzzy
msgid "There are several useful keyboard shortcuts in mdBook:"
msgstr "Ci sono diverse utili scorciatoie da tastiera in mdBook:"
#: src/running-the-course/keyboard-shortcuts.md:5
-#, fuzzy
msgid ""
"* Arrow-Left: Navigate to the previous page.\n"
"* Arrow-Right: Navigate to the next page.\n"
@@ -1617,7 +1732,6 @@ msgid "# Translations"
msgstr "# Traduzioni"
#: src/running-the-course/translations.md:3
-#, fuzzy
msgid ""
"The course has been translated into other languages by a set of wonderful\n"
"volunteers:"
@@ -1626,7 +1740,6 @@ msgstr ""
"volontari:"
#: src/running-the-course/translations.md:6
-#, fuzzy
msgid ""
"* [Brazilian Portuguese][pt-BR] by [@rastringer] and [@hugojacob].\n"
"* [Korean][ko] by [@keispace], [@jiyongp] and [@jooyunghan]."
@@ -1635,17 +1748,38 @@ msgstr ""
"* [Coreano][ko] di [@keispace], [@jiyongp] e [@jooyunghan]."
#: src/running-the-course/translations.md:9
-#, fuzzy
-msgid "Use the language picker in the top-right corner to switch between languages."
-msgstr "Usa il selettore di lingua nell'angolo in alto a destra per passare da una lingua all'altra."
+msgid ""
+"Use the language picker in the top-right corner to switch between languages."
+msgstr ""
+"Usa il selettore di lingua nell'angolo in alto a destra per passare da una "
+"lingua all'altra."
#: src/running-the-course/translations.md:11
-#, fuzzy
+msgid "## Incomplete Translations"
+msgstr "# Traduzioni"
+
+#: src/running-the-course/translations.md:13
msgid ""
-"If you want to help with this effort, please see [our instructions] for how to\n"
+"There is a large number of in-progress translations. We link to the most\n"
+"recently updated translations:"
+msgstr ""
+
+#: src/running-the-course/translations.md:16
+msgid ""
+"* [Bengali][bn] by [@raselmandol].\n"
+"* [French][fr] by [@KookaS] and [@vcaen].\n"
+"* [German][de] by [@Throvn] and [@ronaldfw].\n"
+"* [Japanese][ja] by [@CoinEZ-JPN] and [@momotaro1105]."
+msgstr ""
+
+#: src/running-the-course/translations.md:21
+msgid ""
+"If you want to help with this effort, please see [our instructions] for how "
+"to\n"
"get going. Translations are coordinated on the [issue tracker]."
msgstr ""
-"Se vuoi aiutare con questo sforzo, consulta [le nostre istruzioni] per sapere come farlo\n"
+"Se vuoi aiutare con questo sforzo, consulta [le nostre istruzioni] per "
+"sapere come farlo\n"
"andare avanti. Le traduzioni sono coordinate su [issue tracker]."
#: src/cargo.md:1
@@ -1653,19 +1787,22 @@ msgid "# Using Cargo"
msgstr "# Utilizzo di Cargo"
#: src/cargo.md:3
-#, fuzzy
msgid ""
-"When you start reading about Rust, you will soon meet [Cargo](https://doc.rust-lang.org/cargo/), "
-"the standard tool\n"
-"used in the Rust ecosystem to build and run Rust applications. Here we want to\n"
-"give a brief overview of what Cargo is and how it fits into the wider ecosystem\n"
+"When you start reading about Rust, you will soon meet [Cargo](https://doc."
+"rust-lang.org/cargo/), the standard tool\n"
+"used in the Rust ecosystem to build and run Rust applications. Here we want "
+"to\n"
+"give a brief overview of what Cargo is and how it fits into the wider "
+"ecosystem\n"
"and how it fits into this training."
msgstr ""
-"Quando inizi a leggere di Rust, incontrerai presto [Cargo](https://doc.rust-lang.org/cargo/), lo "
-"strumento standard\n"
-"utilizzato nell'ecosistema Rust per creare ed eseguire applicazioni Rust. Qui vogliamo\n"
-"fornire una breve panoramica di cos'è Cargo e di come si inserisce nell'ecosistema più ampio\n"
-"e come si inserisce in questa formazione."
+"Quando inizi a leggere su Rust, incontrerai presto [Cargo](https://doc.rust-"
+"lang.org/cargo/), lo strumento standard\n"
+"utilizzato nell'ecosistema Rust per creare ed eseguire applicazioni Rust. "
+"Qui vogliamo\n"
+"fornire una breve panoramica di cos'è Cargo e di come si inserisce "
+"nell'ecosistema\n"
+"e in questa formazione."
#: src/cargo.md:8
msgid "## Installation"
@@ -1676,22 +1813,24 @@ msgid "### Rustup (Recommended)"
msgstr "### Rustup (consigliato)"
#: src/cargo.md:12
-#, fuzzy
msgid ""
-"You can follow the instructions to install cargo and rust compiler, among other standard ecosystem "
-"tools with the [rustup][3] tool, which is maintained by the Rust Foundation."
+"You can follow the instructions to install cargo and rust compiler, among "
+"other standard ecosystem tools with the [rustup][3] tool, which is "
+"maintained by the Rust Foundation."
msgstr ""
-"Puoi seguire le istruzioni per installare il compilatore cargo e rust, tra gli altri strumenti "
-"standard dell'ecosistema con lo strumento [rustup][3], gestito dalla Rust Foundation."
+"Puoi seguire le istruzioni per installare il compilatore rust e cargo, tra "
+"gli altri strumenti standard dell'ecosistema con lo strumento [rustup][3], "
+"gestito dalla Rust Foundation."
#: src/cargo.md:14
-#, fuzzy
msgid ""
-"Along with cargo and rustc, Rustup will install itself as a command line utility that you can use "
-"to install/switch toolchains, setup cross compilation, etc."
+"Along with cargo and rustc, Rustup will install itself as a command line "
+"utility that you can use to install/switch toolchains, setup cross "
+"compilation, etc."
msgstr ""
-"Insieme a cargo e rustc, Rustup si installerà come un'utilità della riga di comando che puoi "
-"utilizzare per installare/cambiare toolchain, configurare la compilazione incrociata, ecc."
+"Insieme a cargo e rustc, Rustup si installerà come un'utilità della riga di "
+"comando che puoi utilizzare per installare/cambiare 'toolchain', configurare "
+"la compilazione trasversale, ecc."
#: src/cargo.md:16
msgid "### Package Managers"
@@ -1702,89 +1841,105 @@ msgid "#### Debian"
msgstr "#### Debian"
#: src/cargo.md:20
-#, fuzzy
-msgid "On Debian/Ubuntu, you can install Cargo, the Rust source and the [Rust formatter][6] with"
-msgstr "Su Debian/Ubuntu, puoi installare Cargo, il sorgente Rust e il [Rust formatter][6] con"
+msgid ""
+"On Debian/Ubuntu, you can install Cargo, the Rust source and the [Rust "
+"formatter][6] with"
+msgstr ""
+"Su Debian/Ubuntu, puoi installare Cargo, i sorgenti di Rust e [Rust "
+"formatter][6] con"
#: src/cargo.md:22
msgid ""
"```shell\n"
-"$ sudo apt install cargo rust-src rustfmt\n"
+"sudo apt install cargo rust-src rustfmt\n"
"```"
msgstr ""
#: src/cargo.md:26
-#, fuzzy
msgid ""
-"This will allow [rust-analyzer][1] to jump to the definitions. We suggest using\n"
+"This will allow [rust-analyzer][1] to jump to the definitions. We suggest "
+"using\n"
"[VS Code][2] to edit the code (but any LSP compatible editor works)."
msgstr ""
-"Ciò consentirà a [rust-analyzer][1] di saltare alle definizioni. Si consiglia di utilizzare\n"
-"[VS Code][2] per modificare il codice (ma qualsiasi editor compatibile con LSP funziona)."
+"Ciò consentirà a [rust-analyzer][1] di identificare le definizioni. Si "
+"consiglia di utilizzare\n"
+"[VS Code][2] per editare il codice sorgente (ma qualsiasi editor compatibile con "
+"LSP funziona)."
#: src/cargo.md:29
-#, fuzzy
msgid ""
-"Some folks also like to use the [JetBrains][4] family of IDEs, which do their own analysis but "
-"have their own tradeoffs. If you prefer them, you can install the [Rust Plugin][5]. Please take "
-"note that as of January 2023 debugging only works on the CLion version of the JetBrains IDEA suite."
+"Some folks also like to use the [JetBrains][4] family of IDEs, which do "
+"their own analysis but have their own tradeoffs. If you prefer them, you can "
+"install the [Rust Plugin][5]. Please take note that as of January 2023 "
+"debugging only works on the CLion version of the JetBrains IDEA suite."
msgstr ""
-"Ad alcune persone piace anche usare la famiglia di IDE [JetBrains][4], che eseguono le proprie "
-"analisi ma hanno i propri compromessi. Se li preferisci, puoi installare il [Rust Plugin][5]. "
-"Tieni presente che a partire da gennaio 2023 il debug funziona solo sulla versione CLion della "
-"suite JetBrains IDEA."
+"Ad alcune persone piace anche usare la famiglia di IDE [JetBrains][4], che "
+"eseguono le proprie analisi ma hanno i propri compromessi. Se li preferisci, "
+"puoi installare il [Rust Plugin][5]. Tieni presente che a partire da gennaio "
+"2023 il debug funziona solo sulla versione CLion della suite JetBrains IDEA."
#: src/cargo/rust-ecosystem.md:1
msgid "# The Rust Ecosystem"
msgstr "# L'ecosistema di Rust"
#: src/cargo/rust-ecosystem.md:3
-#, fuzzy
-msgid "The Rust ecosystem consists of a number of tools, of which the main ones are:"
-msgstr "L'ecosistema Rust è costituito da una serie di strumenti, di cui i principali sono:"
+msgid ""
+"The Rust ecosystem consists of a number of tools, of which the main ones are:"
+msgstr ""
+"L'ecosistema Rust è costituito da una serie di strumenti, di cui i "
+"principali sono:"
#: src/cargo/rust-ecosystem.md:5
-#, fuzzy
msgid ""
-"* `rustc`: the Rust compiler which turns `.rs` files into binaries and other\n"
+"* `rustc`: the Rust compiler which turns `.rs` files into binaries and "
+"other\n"
" intermediate formats.\n"
"\n"
"* `cargo`: the Rust dependency manager and build tool. Cargo knows how to\n"
-" download dependencies hosted on and it will pass them to\n"
+" download dependencies hosted on and it will pass them "
+"to\n"
" `rustc` when building your project. Cargo also comes with a built-in test\n"
" runner which is used to execute unit tests.\n"
"\n"
"* `rustup`: the Rust toolchain installer and updater. This tool is used to\n"
-" install and update `rustc` and `cargo` when new versions of Rust is released.\n"
+" install and update `rustc` and `cargo` when new versions of Rust is "
+"released.\n"
" In addition, `rustup` can also download documentation for the standard\n"
-" library. You can have multiple versions of Rust installed at once and `rustup`\n"
+" library. You can have multiple versions of Rust installed at once and "
+"`rustup`\n"
" will let you switch between them as needed."
msgstr ""
-"* `rustc`: il compilatore Rust che trasforma i file `.rs` in binari e altro\n"
+"* `rustc`: il compilatore Rust che trasforma i file `.rs` in binari e altri\n"
" formati intermedi.\n"
"\n"
-"* `cargo`: il gestore delle dipendenze di Rust e lo strumento di compilazione. Il carico sa come\n"
-" scarica le dipendenze ospitate su e le passerà a\n"
-" `rustc` quando costruisci il tuo progetto. Cargo include anche un test integrato\n"
-" runner che viene utilizzato per eseguire unit test.\n"
+"* `cargo`: il gestore delle dipendenze di Rust e lo strumento di "
+"compilazione. Cargo sa come\n"
+" scaricare le dipendenze ospitate su e le passerà a\n"
+" `rustc` quando costruisci il tuo progetto. Cargo include anche un"
+" gestore di test integrato\n"
+" che viene utilizzato per eseguire i test predisposti per il progetto (_unit tests_).\n"
"\n"
-"* `rustup`: il programma di installazione e aggiornamento della toolchain di Rust. Questo "
-"strumento è utilizzato per\n"
-" installare e aggiornare `rustc` e `cargo` quando vengono rilasciate nuove versioni di Rust.\n"
-" Inoltre, `rustup` può anche scaricare la documentazione per lo standard\n"
-" biblioteca. Puoi avere più versioni di Rust installate contemporaneamente e `rustup`\n"
-" ti permetterà di passare da uno all'altro secondo necessità."
+"* `rustup`: il programma di installazione e aggiornamento della toolchain di "
+"Rust. Questo strumento è utilizzato per\n"
+" installare e aggiornare `rustc` e `cargo` quando vengono rilasciate nuove "
+"versioni di Rust.\n"
+" Inoltre, `rustup` può anche scaricare la documentazione per la libreria\n"
+" standard. Puoi avere più versioni di Rust installate contemporaneamente "
+"e `rustup`\n"
+" ti permetterà di passare da una all'altra secondo le necessità."
-#: src/cargo/rust-ecosystem.md:21 src/hello-world.md:25 src/hello-world/small-example.md:27
-#: src/why-rust/runtime.md:10 src/why-rust/modern.md:21 src/basic-syntax/compound-types.md:30
-#: src/pattern-matching/destructuring-enums.md:35 src/error-handling/try-operator.md:48
-#: src/error-handling/converting-error-types-example.md:50 src/concurrency/threads.md:30
-#: src/async/async-await.md:25
+#: src/cargo/rust-ecosystem.md:21 src/hello-world.md:25
+#: src/hello-world/small-example.md:27 src/why-rust/runtime.md:10
+#: src/why-rust/modern.md:21 src/basic-syntax/compound-types.md:30
+#: src/basic-syntax/references.md:23
+#: src/pattern-matching/destructuring-enums.md:35
+#: src/error-handling/try-operator.md:48
+#: src/error-handling/converting-error-types-example.md:50
+#: src/concurrency/threads.md:30 src/async/async-await.md:25
msgid "Key points:"
msgstr "Punti chiave:"
#: src/cargo/rust-ecosystem.md:23
-#, fuzzy
msgid ""
"* Rust has a rapid release schedule with a new release coming out\n"
" every six weeks. New releases maintain backwards compatibility with\n"
@@ -1807,80 +1962,93 @@ msgid ""
" * To avoid splitting the ecosystem, Rust compilers can mix code\n"
" written for different editions.\n"
"\n"
-" * Mention that it is quite rare to ever use the compiler directly not through `cargo` (most "
-"users never do).\n"
+" * Mention that it is quite rare to ever use the compiler directly not "
+"through `cargo` (most users never do).\n"
"\n"
-" * It might be worth alluding that Cargo itself is an extremely powerful and comprehensive tool. "
-"It is capable of many advanced features including but not limited to: \n"
+" * It might be worth alluding that Cargo itself is an extremely powerful "
+"and comprehensive tool. It is capable of many advanced features including "
+"but not limited to: \n"
" * Project/package structure\n"
" * [workspaces]\n"
" * Dev Dependencies and Runtime Dependency management/caching\n"
" * [build scripting]\n"
" * [global installation]\n"
-" * It is also extensible with sub command plugins as well (such as [cargo clippy]).\n"
+" * It is also extensible with sub command plugins as well (such as "
+"[cargo clippy]).\n"
" * Read more from the [official Cargo Book]"
msgstr ""
"* Rust ha un programma di rilascio rapido con una nuova versione in uscita\n"
-" ogni sei settimane. Le nuove versioni mantengono la retrocompatibilità con\n"
+" ogni sei settimane. Le nuove versioni mantengono la retrocompatibilità "
+"con\n"
" vecchie versioni --- in più abilitano nuove funzionalità.\n"
"\n"
"* Esistono tre canali di rilascio: \"stable\", \"beta\" e \"nightly\".\n"
"\n"
-"* Le nuove funzionalità vengono testate su \"nightly\", \"beta\" è ciò che diventa\n"
+"* Le nuove funzionalità vengono testate su \"nightly\", \"beta\" è ciò che "
+"diventa\n"
" \"stabile\" ogni sei settimane.\n"
"\n"
-"* Rust ha anche [edizioni]: l'edizione attuale è Rust 2021. Precedente\n"
-" le edizioni erano Rust 2015 e Rust 2018.\n"
+"* Rust ha anche le [edizioni]: l'edizione attuale è Rust 2021. Le precedenti\n"
+" edizioni erano Rust 2015 e Rust 2018.\n"
"\n"
-" * Le edizioni possono apportare modifiche incompatibili con le versioni precedenti\n"
-" la lingua.\n"
+" * Le edizioni possono apportare modifiche incompatibili con le versioni "
+"precedenti del linguaggio.\n"
"\n"
-" * Per evitare di violare il codice, le edizioni sono opt-in: selezioni il file\n"
-" edizione per la tua cassa tramite il file `Cargo.toml`.\n"
+" * Per evitare incompatibilità del codice, le edizioni sono opt-in: si può selezionare "
+"l'edizione di riferimento'\n"
+" attraverso il file `Cargo.toml`.\n"
"\n"
-" * Per evitare di dividere l'ecosistema, i compilatori di Rust possono mescolare il codice\n"
+" * Per evitare di dividere l'ecosistema, i compilatori di Rust possono "
+"mescolare il codice\n"
" scritto per diverse edizioni.\n"
"\n"
-" * Menziona che è abbastanza raro usare il compilatore direttamente non attraverso `cargo` (la "
-"maggior parte degli utenti non lo fa mai).\n"
+" * Nota che è abbastanza raro usare il compilatore direttamente non "
+"attraverso `cargo` (la maggior parte degli utenti non lo fa mai).\n"
"\n"
-" * Potrebbe valere la pena accennare al fatto che Cargo stesso è uno strumento estremamente "
-"potente e completo. È in grado di offrire molte funzionalità avanzate, tra cui, a titolo "
-"esemplificativo ma non esaustivo:\n"
+" * Potrebbe valere la pena accennare al fatto che Cargo stesso è uno "
+"strumento estremamente potente e completo. È in grado di offrire molte "
+"funzionalità avanzate, tra cui, a titolo esemplificativo ma non esaustivo:\n"
" * Struttura del progetto/pacchetto\n"
" * [aree di lavoro]\n"
-" * Dipendenze di sviluppo e gestione/memorizzazione nella cache delle dipendenze di runtime\n"
-" * [costruisci script]\n"
+" * Dipendenze di sviluppo e gestione/memorizzazione nella cache delle "
+"dipendenze di runtime\n"
+" * [costruzione script]\n"
" * [installazione globale]\n"
-" * È anche estensibile anche con plug-in di comandi secondari (come [cargo clippy]).\n"
-" * Leggi di più dal [libro ufficiale dei carichi]"
+" * È anche estensibile con plug-in di comandi secondari (come "
+"[cargo clippy]).\n"
+" * Leggi di più dall'[official Cargo Book]"
#: src/cargo/code-samples.md:1
msgid "# Code Samples in This Training"
msgstr "# Esempi di codice in questo Corso"
#: src/cargo/code-samples.md:3
-#, fuzzy
msgid ""
-"For this training, we will mostly explore the Rust language through examples\n"
-"which can be executed through your browser. This makes the setup much easier and\n"
+"For this training, we will mostly explore the Rust language through "
+"examples\n"
+"which can be executed through your browser. This makes the setup much easier "
+"and\n"
"ensures a consistent experience for everyone."
msgstr ""
-"Per questa formazione, esploreremo principalmente il linguaggio Rust attraverso esempi\n"
-"che può essere eseguito tramite il tuo browser. Questo rende la configurazione molto più semplice "
-"e\n"
+"Per questa formazione, esploreremo principalmente il linguaggio Rust "
+"attraverso esempi\n"
+"che possono essere eseguiti tramite il tuo browser. Questo rende la "
+"configurazione molto più semplice e\n"
"garantisce un'esperienza coerente per tutti."
#: src/cargo/code-samples.md:7
-#, fuzzy
msgid ""
-"Installing Cargo is still encouraged: it will make it easier for you to do the\n"
-"exercises. On the last day, we will do a larger exercise which shows you how to\n"
+"Installing Cargo is still encouraged: it will make it easier for you to do "
+"the\n"
+"exercises. On the last day, we will do a larger exercise which shows you how "
+"to\n"
"work with dependencies and for that you need Cargo."
msgstr ""
-"L'installazione di Cargo è ancora incoraggiata: ti renderà più facile fare il\n"
-"esercizi. L'ultimo giorno faremo un esercizio più ampio che ti mostrerà come farlo\n"
-"lavora con le dipendenze e per questo hai bisogno di Cargo."
+"L'installazione di Cargo è ancora incoraggiata: ti renderà più facile fare "
+"gli\n"
+"esercizi. L'ultimo giorno faremo un esercizio più ampio che ti mostrerà come "
+"lavorare\n"
+"con le dipendenze e per questo hai bisogno di Cargo."
#: src/cargo/code-samples.md:11
msgid "The code blocks in this course are fully interactive:"
@@ -1896,26 +2064,25 @@ msgid ""
msgstr ""
#: src/cargo/code-samples.md:19
-#, fuzzy
msgid ""
-"You can use Ctrl + Enter to execute the code when focus is in the\n"
+"You can use Ctrl + Enter to execute the code when focus is in "
+"the\n"
"text box."
msgstr ""
-"Puoi usare Ctrl + Invio per eseguire il codice quando il focus è in\n"
+"Puoi usare Ctrl + Invio per eseguire il codice quando il focus è "
+"sulla\n"
"casella di testo."
#: src/cargo/code-samples.md:24
-#, fuzzy
msgid ""
"Most code samples are editable like shown above. A few code samples\n"
"are not editable for various reasons:"
msgstr ""
-"La maggior parte degli esempi di codice sono modificabili come mostrato sopra. Alcuni esempi di "
-"codice\n"
+"La maggior parte degli esempi di codice sono modificabili come mostrato "
+"sopra. Alcuni esempi di codice\n"
"non sono modificabili per vari motivi:"
#: src/cargo/code-samples.md:27
-#, fuzzy
msgid ""
"* The embedded playgrounds cannot execute unit tests. Copy-paste the\n"
" code and open it in the real Playground to demonstrate unit tests.\n"
@@ -1925,62 +2092,67 @@ msgid ""
" solve the exercises using a local Rust installation or via the\n"
" Playground."
msgstr ""
-"* I playground incorporati non possono eseguire unit test. Copia e incolla il file\n"
-" code e aprilo nel Playground reale per dimostrare i test unitari.\n"
+"* I playground incorporati non possono eseguire unit test. Copia e incolla "
+"il codice\n"
+" e aprilo nel Playground reale per dimostrare le 'unit test'.\n"
"\n"
-"* I playground incorporati perdono il loro stato nel momento in cui navighi\n"
-" via dalla pagina! Questo è il motivo per cui gli studenti dovrebbero\n"
-" risolvere gli esercizi utilizzando un'installazione locale di Rust o tramite il\n"
-" Terreno di gioco."
+"* I playground incorporati perdono il loro stato nel momento in cui esci\n"
+" dalla pagina! Questo è il motivo per cui gli studenti dovrebbero\n"
+" risolvere gli esercizi utilizzando un'installazione locale di Rust o "
+"tramite Playground."
#: src/cargo/running-locally.md:1
msgid "# Running Code Locally with Cargo"
msgstr "# Esecuzione del codice in locale con Cargo"
#: src/cargo/running-locally.md:3
-#, fuzzy
msgid ""
-"If you want to experiment with the code on your own system, then you will need\n"
+"If you want to experiment with the code on your own system, then you will "
+"need\n"
"to first install Rust. Do this by following the [instructions in the Rust\n"
-"Book][1]. This should give you a working `rustc` and `cargo`. At the time of\n"
+"Book][1]. This should give you a working `rustc` and `cargo`. At the time "
+"of\n"
"writing, the latest stable Rust release has these version numbers:"
msgstr ""
"Se vuoi sperimentare il codice sul tuo sistema, avrai bisogno di\n"
-"per installare prima Rust. Fallo seguendo le [istruzioni nel file Rust\n"
-"Libro][1]. Questo dovrebbe darti un `rustc` e un `cargo` funzionanti. Al tempo di\n"
-"scrivendo, l'ultima versione stabile di Rust ha questi numeri di versione:"
+"per installare prima di tutto Rust. Fallo seguendo le [istruzioni nel 'Rust\n"
+"Book][1]. Questo dovrebbe darti un `rustc` e un `cargo` funzionanti. Al "
+"monento della scrittura,\n"
+" l'ultima versione stabile di Rust ha questi numeri di versione:"
#: src/cargo/running-locally.md:8
msgid ""
"```shell\n"
"% rustc --version\n"
-"rustc 1.61.0 (fe5b13d68 2022-05-18)\n"
+"rustc 1.69.0 (84c898d65 2023-04-16)\n"
"% cargo --version\n"
-"cargo 1.61.0 (a028ae4 2022-04-29)\n"
+"cargo 1.69.0 (6e9a83356 2023-04-12)\n"
"```"
msgstr ""
#: src/cargo/running-locally.md:15
-#, fuzzy
msgid ""
-"With this is in place, then follow these steps to build a Rust binary from one\n"
+"With this in place, follow these steps to build a Rust binary from one\n"
"of the examples in this training:"
msgstr ""
-"Con questo è a posto, segui questi passaggi per creare un binario Rust da uno\n"
-"degli esempi in questa formazione:"
+"Con questo è a posto, segui questi passaggi per creare un 'binario Rust' da "
+"uno\n"
+"degli esempi in questo training:"
#: src/cargo/running-locally.md:18
msgid ""
"1. Click the \"Copy to clipboard\" button on the example you want to copy.\n"
"\n"
-"2. Use `cargo new exercise` to create a new `exercise/` directory for your code:\n"
+"2. Use `cargo new exercise` to create a new `exercise/` directory for your "
+"code:\n"
"\n"
" ```shell\n"
" $ cargo new exercise\n"
" Created binary (application) `exercise` package\n"
" ```\n"
"\n"
-"3. Navigate into `exercise/` and use `cargo run` to build and run your binary:\n"
+"3. Navigate into `exercise/` and use `cargo run` to build and run your "
+"binary:\n"
"\n"
" ```shell\n"
" $ cd exercise\n"
@@ -1992,7 +2164,8 @@ msgid ""
" ```\n"
"\n"
"4. Replace the boiler-plate code in `src/main.rs` with your own code. For\n"
-" example, using the example on the previous page, make `src/main.rs` look like\n"
+" example, using the example on the previous page, make `src/main.rs` look "
+"like\n"
"\n"
" ```rust\n"
" fn main() {\n"
@@ -2010,114 +2183,181 @@ msgid ""
" Edit me!\n"
" ```\n"
"\n"
-"6. Use `cargo check` to quickly check your project for errors, use `cargo build`\n"
-" to compile it without running it. You will find the output in `target/debug/`\n"
-" for a normal debug build. Use `cargo build --release` to produce an optimized\n"
+"6. Use `cargo check` to quickly check your project for errors, use `cargo "
+"build`\n"
+" to compile it without running it. You will find the output in `target/"
+"debug/`\n"
+" for a normal debug build. Use `cargo build --release` to produce an "
+"optimized\n"
" release build in `target/release/`.\n"
"\n"
-"7. You can add dependencies for your project by editing `Cargo.toml`. When you\n"
+"7. You can add dependencies for your project by editing `Cargo.toml`. When "
+"you\n"
" run `cargo` commands, it will automatically download and compile missing\n"
" dependencies for you."
msgstr ""
+"1. Click sul bottone \"Copy to clipboard\" nell'esempio che si vuole copiare'.\n"
+"\n"
+"2. Usa `cargo new exercise` per creare una nuova directory `exercise/` per il tuo "
+"codice:\n"
+"\n"
+" ```shell\n"
+" $ cargo new exercise\n"
+" Created binary (application) `exercise` package\n"
+" ```\n"
+"\n"
+"3. Naviga in `exercise/` e usa `cargo run` per compilare ed eseguire "
+"l'esercizio:\n"
+"\n"
+" ```shell\n"
+" $ cd exercise\n"
+" $ cargo run\n"
+" Compiling exercise v0.1.0 (/home/mgeisler/tmp/exercise)\n"
+" Finished dev [unoptimized + debuginfo] target(s) in 0.75s\n"
+" Running `target/debug/exercise`\n"
+" Hello, world!\n"
+" ```\n"
+"\n"
+"4. Sostituisci il codice predefinito in `src/main.rs` con il tuo codice. Per\n"
+" esempio, usando l'esempio della pagina precedente, cambia `src/main.rs` in\n"
+"\n"
+" ```rust\n"
+" fn main() {\n"
+" println!(\"Edit me!\");\n"
+" }\n"
+" ```\n"
+"\n"
+"5. Usa `cargo run` per compilare ed eseguire il codice aggiornato:\n"
+"\n"
+" ```shell\n"
+" $ cargo run\n"
+" Compiling exercise v0.1.0 (/home/mgeisler/tmp/exercise)\n"
+" Finished dev [unoptimized + debuginfo] target(s) in 0.24s\n"
+" Running `target/debug/exercise`\n"
+" Edit me!\n"
+" ```\n"
+"\n"
+"6. Usa `cargo check` per controllare rapidamente gli errori nel tuo progetto, usa `cargo "
+"build`\n"
+" per compilare senza eseguire. Per una compilazione normale di debug l'output si trova in `target/"
+"debug/`.\n"
+" Usa `cargo build --release` per produrre una versione ottimizzata del codice, in questo caso l'output si trova in `target/release/`.\n"
+"\n"
+"7. Puoi aggiungere dipendenze al tuo progetto modificando il file `Cargo.toml`. Quando "
+"si\n"
+" esegue il comando `cargo`, sono automaticamente scaricate e compilate le dipendenze mancanti."
#: src/cargo/running-locally.md:70
-#, fuzzy
msgid ""
"Try to encourage the class participants to install Cargo and use a\n"
"local editor. It will make their life easier since they will have a\n"
"normal development environment."
msgstr ""
-"Cerca di incoraggiare i partecipanti alla classe a installare Cargo e utilizzare a\n"
-"editore locale. Semplificherà la loro vita poiché avranno a\n"
-"normale ambiente di sviluppo."
+"Cerca di incoraggiare i partecipanti alla classe a installare Cargo e "
+"utilizzare un\n"
+"editore locale. Semplificherà la loro vita poiché avranno un\n"
+"ambiente di sviluppo normale."
#: src/welcome-day-1.md:1
msgid "# Welcome to Day 1"
msgstr "# Benvenuto al primo giorno"
#: src/welcome-day-1.md:3
-#, fuzzy
msgid ""
"This is the first day of Comprehensive Rust. We will cover a lot of ground\n"
"today:"
msgstr ""
-"Questo è il primo giorno di Comprehensive Rust. Copriremo molto terreno\n"
-"Oggi:"
+"Questo è il primo giorno di 'Comprehensive Rust'.\n"
+"Oggi copriremo un sacco di strada:"
#: src/welcome-day-1.md:6
-#, fuzzy
msgid ""
"* Basic Rust syntax: variables, scalar and compound types, enums, structs,\n"
" references, functions, and methods.\n"
"\n"
-"* Memory management: stack vs heap, manual memory management, scope-based memory\n"
+"* Memory management: stack vs heap, manual memory management, scope-based "
+"memory\n"
" management, and garbage collection.\n"
"\n"
"* Ownership: move semantics, copying and cloning, borrowing, and lifetimes."
msgstr ""
-"* Sintassi di base di Rust: variabili, tipi scalari e composti, enum, struct,\n"
+"* Sintassi di base di Rust: variabili, tipi scalari e composti, enum, "
+"struct,\n"
" riferimenti, funzioni e metodi.\n"
"\n"
-"* Gestione della memoria: stack vs heap, gestione manuale della memoria, memoria basata "
-"sull'ambito\n"
-" gestione e raccolta dei rifiuti.\n"
+"* Gestione della memoria: stack vs heap, gestione manuale della memoria, "
+"memoria basata sull'ambito (scoped),\n"
+" garbage collection.\n"
"\n"
-"* Proprietà: semantica di spostamento, copia e clonazione, prestito e durata."
+"* Ownership: semantica di spostamento (move), copia e clonazione, prestito (borrowing) e durata (lifetimes)."
#: src/welcome-day-1.md:16
msgid "Please remind the students that:"
-msgstr "Ricorda agli studenti che:"
+msgstr "Si prega di ricordare agli studenti che:"
#: src/welcome-day-1.md:18
-#, fuzzy
msgid ""
"* They should ask questions when they get them, don't save them to the end.\n"
-"* The class is meant to be interactive and discussions are very much encouraged!\n"
-" * As an instructor, you should try to keep the discussions relevant, i.e.,\n"
-" keep the related to how Rust does things vs some other language. It can be\n"
-" hard to find the right balance, but err on the side of allowing discussions\n"
-" since they engage people much more than one-way communication.\n"
-"* The questions will likely mean that we talk about things ahead of the slides.\n"
-" * This is perfectly okay! Repetition is an important part of learning. Remember\n"
+"* The class is meant to be interactive and discussions are very much "
+"encouraged!\n"
+" * As an instructor, you should try to keep the discussions relevant, i."
+"e.,\n"
+" keep the discussions related to how Rust does things vs some other "
+"language. \n"
+" It can be hard to find the right balance, but err on the side of "
+"allowing \n"
+" discussions since they engage people much more than one-way "
+"communication.\n"
+"* The questions will likely mean that we talk about things ahead of the "
+"slides.\n"
+" * This is perfectly okay! Repetition is an important part of learning. "
+"Remember\n"
" that the slides are just a support and you are free to skip them as you\n"
" like."
msgstr ""
-"* Dovrebbero fare domande quando le ricevono, non salvarle fino alla fine.\n"
-"* La lezione è pensata per essere interattiva e le discussioni sono molto incoraggiate!\n"
-" * In qualità di istruttore, dovresti cercare di mantenere le discussioni pertinenti, ad es.\n"
-" mantieni la relazione con il modo in cui Rust fa le cose rispetto a qualche altra lingua. Può "
-"essere\n"
-" difficile trovare il giusto equilibrio, ma peccare per permettere discussioni\n"
-" poiché coinvolgono le persone molto più della comunicazione unidirezionale.\n"
-"* Le domande probabilmente significheranno che parleremo di cose prima delle diapositive.\n"
-" * Questo è perfettamente a posto! La ripetizione è una parte importante dell'apprendimento. "
-"Ricordare\n"
-" che le diapositive sono solo un supporto e sei libero di saltarle come preferisci\n"
-" Piace."
+"* Dovrebbero fare domande quando ne sentono il bisogno, non trattenerle fino alla fine.\n"
+"* La lezione è pensata per essere interattiva e le discussioni sono molto "
+"incoraggiate!\n"
+" * In qualità di istruttore, dovresti cercare di mantenere le discussioni "
+"pertinenti, ad es.\n"
+" mantieni la relazione con il modo in cui Rust fa le cose rispetto a "
+"qualche altro linguaggio. Può essere\n"
+" difficile trovare il giusto equilibrio, ma è meglio permettere "
+"discussioni che\n"
+" coinvolgono le persone piuttosto che una comunicazione "
+"unidirezionale.\n"
+"* Le domande probabilmente significheranno che parleremo di cose prima delle "
+"diapositive.\n"
+" * Questo è perfettamente okay! La ripetizione è una parte importante "
+"dell'apprendimento. Ricordare\n"
+" che le diapositive sono solo un supporto e sei libero di saltarle come "
+"preferisci."
#: src/welcome-day-1.md:29
-#, fuzzy
msgid ""
-"The idea for the first day is to show _just enough_ of Rust to be able to speak\n"
-"about the famous borrow checker. The way Rust handles memory is a major feature\n"
+"The idea for the first day is to show _just enough_ of Rust to be able to "
+"speak\n"
+"about the famous borrow checker. The way Rust handles memory is a major "
+"feature\n"
"and we should show students this right away."
msgstr ""
-"L'idea per il primo giorno è mostrare _quanto basta_ di Rust per poter parlare\n"
-"sul famoso controllo dei prestiti. Il modo in cui Rust gestisce la memoria è una caratteristica "
-"importante\n"
+"L'idea per il primo giorno è mostrare _quanto basta_ di Rust per poter "
+"parlare\n"
+"sul famoso _borrow checker_. Il modo in cui Rust gestisce la memoria è "
+"una caratteristica importante\n"
"e dovremmo mostrarlo subito agli studenti."
#: src/welcome-day-1.md:33
-#, fuzzy
msgid ""
"If you're teaching this in a classroom, this is a good place to go over the\n"
"schedule. We suggest splitting the day into two parts (following the slides):"
msgstr ""
-"Se stai insegnando questo in un'aula, questo è un buon posto per esaminare il\n"
-"programma. Suggeriamo di dividere la giornata in due parti (seguendo le slide):"
+"Se stai insegnando in un'aula, questo è un buon posto per esaminare "
+"il\n"
+"programma. Suggeriamo di dividere la giornata in due parti (seguendo le "
+"slide):"
#: src/welcome-day-1.md:36
-#, fuzzy
msgid ""
"* Morning: 9:00 to 12:00,\n"
"* Afternoon: 13:00 to 16:00."
@@ -2126,9 +2366,9 @@ msgstr ""
"* Pomeriggio: dalle 13:00 alle 16:00."
#: src/welcome-day-1.md:39
-#, fuzzy
msgid ""
-"You can of course adjust this as necessary. Please make sure to include breaks,\n"
+"You can of course adjust this as necessary. Please make sure to include "
+"breaks,\n"
"we recommend a break every hour!"
msgstr ""
"Ovviamente puoi regolarlo se necessario. Assicurati di includere pause,\n"
@@ -2139,17 +2379,19 @@ msgid "# What is Rust?"
msgstr "# Cos'è Rust?"
#: src/welcome-day-1/what-is-rust.md:3
-#, fuzzy
-msgid "Rust is a new programming language which had its [1.0 release in 2015][1]:"
-msgstr "Rust è un nuovo linguaggio di programmazione che ha avuto la sua versione [1.0 nel 2015][1]:"
+msgid ""
+"Rust is a new programming language which had its [1.0 release in 2015][1]:"
+msgstr ""
+"Rust è un nuovo linguaggio di programmazione che ha avuto la sua "
+"[versione 1.0 nel 2015][1]:"
#: src/welcome-day-1/what-is-rust.md:5
-#, fuzzy
msgid ""
"* Rust is a statically compiled language in a similar role as C++\n"
" * `rustc` uses LLVM as its backend.\n"
"* Rust supports many [platforms and\n"
-" architectures](https://doc.rust-lang.org/nightly/rustc/platform-support.html):\n"
+" architectures](https://doc.rust-lang.org/nightly/rustc/platform-support."
+"html):\n"
" * x86, ARM, WebAssembly, ...\n"
" * Linux, Mac, Windows, ...\n"
"* Rust is used for a wide range of devices:\n"
@@ -2159,15 +2401,16 @@ msgid ""
" * desktops,\n"
" * servers."
msgstr ""
-"* Rust è un linguaggio compilato staticamente con un ruolo simile a C++\n"
+"* Rust è un linguaggio compilato staticamente in modo simile a C++\n"
" * `rustc` utilizza LLVM come backend.\n"
"* Rust supporta molte [piattaforme e\n"
-" architetture](https://doc.rust-lang.org/nightly/rustc/platform-support.html):\n"
+" architetture](https://doc.rust-lang.org/nightly/rustc/platform-support."
+"html):\n"
" * x86, ARM, WebAssembly, ...\n"
" * Linux, Mac, Windows, ...\n"
-"* La ruggine viene utilizzata per un'ampia gamma di dispositivi:\n"
-" * firmware e caricatori di avvio,\n"
-" * display intelligenti,\n"
+"* Rust è utilizzato per un'ampia gamma di dispositivi:\n"
+" * firmware e _boot loaders_,\n"
+" * display 'smart',\n"
" * cellulari,\n"
" * desktop,\n"
" * server."
@@ -2177,7 +2420,6 @@ msgid "Rust fits in the same area as C++:"
msgstr "Rust è usato nelle stesse aree di C++:"
#: src/welcome-day-1/what-is-rust.md:23
-#, fuzzy
msgid ""
"* High flexibility.\n"
"* High level of control.\n"
@@ -2187,7 +2429,8 @@ msgid ""
msgstr ""
"* Elevata flessibilità.\n"
"* Alto livello di controllo.\n"
-"* Può essere ridotto a dispositivi molto vincolati come i telefoni cellulari.\n"
+"* Può essere adattato a dispositivi molto particolari come i telefoni "
+"cellulari.\n"
"* Non ha runtime o garbage collection.\n"
"* Si concentra su affidabilità e sicurezza senza sacrificare le prestazioni."
@@ -2196,13 +2439,12 @@ msgid "# Hello World!"
msgstr "# Ciao mondo!"
#: src/hello-world.md:3
-#, fuzzy
msgid ""
"Let us jump into the simplest possible Rust program, a classic Hello World\n"
"program:"
msgstr ""
-"Passiamo al programma Rust più semplice possibile, un classico Hello World\n"
-"programma:"
+"Passiamo al programma Rust più semplice possibile,\n"
+"un classico Hello World:"
#: src/hello-world.md:6
msgid ""
@@ -2215,10 +2457,9 @@ msgstr ""
#: src/hello-world.md:12
msgid "What you see:"
-msgstr "Quello che vedi:"
+msgstr "Quello che si vede:"
#: src/hello-world.md:14
-#, fuzzy
msgid ""
"* Functions are introduced with `fn`.\n"
"* Blocks are delimited by curly braces like in C and C++.\n"
@@ -2229,20 +2470,23 @@ msgstr ""
"* Le funzioni sono introdotte con `fn`.\n"
"* I blocchi sono delimitati da parentesi graffe come in C e C++.\n"
"* La funzione `main` è il punto di ingresso del programma.\n"
-"* Rust ha macro igieniche, `println!` ne è un esempio.\n"
-"* Le stringhe Rust sono codificate in UTF-8 e possono contenere qualsiasi carattere Unicode."
+"* Rust ha macro definite come 'igieniche' (_hygienic macros_), `println!` ne è un esempio.\n"
+"* Le stringhe Rust sono codificate in UTF-8 e possono contenere qualsiasi "
+"carattere Unicode."
#: src/hello-world.md:22
-#, fuzzy
msgid ""
-"This slide tries to make the students comfortable with Rust code. They will see\n"
-"a ton of it over the next four days so we start small with something familiar."
+"This slide tries to make the students comfortable with Rust code. They will "
+"see\n"
+"a ton of it over the next four days so we start small with something "
+"familiar."
msgstr ""
-"Questa diapositiva cerca di mettere gli studenti a proprio agio con il codice Rust. Vedranno\n"
-"un sacco di esso nei prossimi quattro giorni, quindi iniziamo in piccolo con qualcosa di familiare."
+"Questa diapositiva cerca di mettere gli studenti a proprio agio con il "
+"codice Rust. Vedranno\n"
+"un sacco di Rust nei prossimi quattro giorni, quindi iniziamo in piccolo con "
+"qualcosa di familiare."
#: src/hello-world.md:27
-#, fuzzy
msgid ""
"* Rust is very much like other languages in the C/C++/Java tradition. It is\n"
" imperative (not functional) and it doesn't try to reinvent things unless\n"
@@ -2250,25 +2494,33 @@ msgid ""
"\n"
"* Rust is modern with full support for things like Unicode.\n"
"\n"
-"* Rust uses macros for situations where you want to have a variable number of\n"
-" arguments (no function [overloading](basic-syntax/functions-interlude.md)).\n"
+"* Rust uses macros for situations where you want to have a variable number "
+"of\n"
+" arguments (no function [overloading](basic-syntax/functions-interlude."
+"md)).\n"
"\n"
-"* Macros being 'hygienic' means they don't accidentally capture identifiers from\n"
+"* Macros being 'hygienic' means they don't accidentally capture identifiers "
+"from\n"
" the scope they are used in. Rust macros are actually only\n"
-" [partially hygenic](https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene.html)."
+" [partially hygienic](https://veykril.github.io/tlborm/decl-macros/minutiae/"
+"hygiene.html)."
msgstr ""
"* Rust è molto simile ad altri linguaggi della tradizione C/C++/Java. È\n"
" imperativo (non funzionale) e non cerca di reinventare le cose a meno che\n"
-" assolutamente necessario.\n"
+" non sia assolutamente necessario.\n"
"\n"
"* Rust è moderno con pieno supporto per cose come Unicode.\n"
"\n"
-"* Rust utilizza le macro per le situazioni in cui si desidera avere un numero variabile di\n"
-" argomenti (nessuna funzione [sovraccarico](basic-syntax/functions-interlude.md)).\n"
+"* Rust utilizza le macro per le situazioni in cui si desidera avere un "
+"numero variabile di\n"
+" argomenti (nessun [overloading di funzione](basic-syntax/functions-"
+"interlude.md)).\n"
"\n"
-"* Le macro essendo \"igieniche\" significa che non catturano accidentalmente identificatori da\n"
+"* Le macro definite \"igieniche\" significa che non catturano accidentalmente "
+"identificatori da\n"
" l'ambito in cui vengono utilizzate. Le macro di Rust sono in realtà solo\n"
-" [parzialmente igienico](https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene.html)."
+" [parzialmente igieniche](https://veykril.github.io/tlborm/decl-macros/"
+"minutiae/hygiene.html)."
#: src/hello-world/small-example.md:1
msgid "# Small Example"
@@ -2298,49 +2550,63 @@ msgid ""
msgstr ""
#: src/hello-world/small-example.md:23
-#, fuzzy
msgid ""
-"The code implements the Collatz conjecture: it is believed that the loop will\n"
-"always end, but this is not yet proved. Edit the code and play with different\n"
+"The code implements the Collatz conjecture: it is believed that the loop "
+"will\n"
+"always end, but this is not yet proved. Edit the code and play with "
+"different\n"
"inputs."
msgstr ""
-"Il codice implementa la congettura di Collatz: si ritiene che il ciclo lo farà\n"
-"finiscono sempre, ma questo non è ancora provato. Modifica il codice e gioca con diversi\n"
+"Il codice implementa la congettura di Collatz: si ritiene che il ciclo\n"
+"finirà sempre, ma questo non è ancora provato. Modifica il codice e gioca "
+"con diversi\n"
"ingressi."
#: src/hello-world/small-example.md:29
-#, fuzzy
msgid ""
-"* Explain that all variables are statically typed. Try removing `i32` to trigger\n"
-" type inference. Try with `i8` instead and trigger a runtime integer overflow.\n"
+"* Explain that all variables are statically typed. Try removing `i32` to "
+"trigger\n"
+" type inference. Try with `i8` instead and trigger a runtime integer "
+"overflow.\n"
"\n"
"* Change `let mut x` to `let x`, discuss the compiler error.\n"
"\n"
-"* Show how `print!` gives a compilation error if the arguments don't match the\n"
+"* Show how `print!` gives a compilation error if the arguments don't match "
+"the\n"
" format string.\n"
"\n"
"* Show how you need to use `{}` as a placeholder if you want to print an\n"
" expression which is more complex than just a single variable.\n"
"\n"
-"* Show the students the standard library, show them how to search for `std::fmt`\n"
-" which has the rules of the formatting mini-language. It's important that the\n"
-" students become familiar with searching in the standard library."
+"* Show the students the standard library, show them how to search for `std::"
+"fmt`\n"
+" which has the rules of the formatting mini-language. It's important that "
+"the\n"
+" students become familiar with searching in the standard library.\n"
+" \n"
+" * In a shell `rustup doc std::fmt` will open a browser on the local std::"
+"fmt documentation"
msgstr ""
-"* Spiegare che tutte le variabili sono tipizzate staticamente. Prova a rimuovere \"i32\" per "
-"attivare\n"
-" inferenza di tipo. Prova invece con `i8` e attiva un overflow di runtime integer.\n"
+"* Spiegare che tutte le variabili sono tipizzate staticamente. Prova a "
+"rimuovere `i32` per attivare\n"
+" l'inferenza di tipo. Prova invece con `i8` e attiva un overflow di runtime "
+"integer.\n"
"\n"
"* Modificare `let mut x` in `let x`, discutere l'errore del compilatore.\n"
"\n"
-"* Mostra come `print!` restituisce un errore di compilazione se gli argomenti non corrispondono a\n"
-" stringa di formato.\n"
+"* Mostra come `print!` restituisce un errore di compilazione se gli "
+"argomenti non corrispondono al\n"
+" formato della stringa.\n"
"\n"
-"* Mostra come devi usare `{}` come segnaposto se vuoi stampare un file\n"
+"* Mostra come devi usare `{}` come segnaposto se vuoi stampare un'\n"
" espressione che è più complessa di una singola variabile.\n"
"\n"
-"* Mostra agli studenti la libreria standard, mostra loro come cercare `std::fmt`\n"
-" che ha le regole del mini-linguaggio di formattazione. È importante che il\n"
-" gli studenti acquisiscono familiarità con la ricerca nella libreria standard."
+"* Mostra agli studenti la libreria standard, mostra loro come cercare `std::"
+"fmt`\n"
+" che ha le regole del mini-linguaggio di formattazione. È importante che "
+"il\n"
+" gli studenti acquisiscono familiarità con la ricerca nella libreria "
+"standard."
#: src/why-rust.md:1
msgid "# Why Rust?"
@@ -2351,47 +2617,59 @@ msgid "Some unique selling points of Rust:"
msgstr "Alcuni punti di forza unici di Rust:"
#: src/why-rust.md:5
-#, fuzzy
msgid ""
"* Compile time memory safety.\n"
"* Lack of undefined runtime behavior.\n"
"* Modern language features."
msgstr ""
-"* Sicurezza della memoria del tempo di compilazione.\n"
+"* Sicurezza della memoria al tempo di compilazione.\n"
"* Mancanza di comportamento runtime non definito.\n"
"* Funzionalità del linguaggio moderno."
#: src/why-rust.md:11
-#, fuzzy
msgid ""
-"Make sure to ask the class which languages they have experience with. Depending\n"
+"Make sure to ask the class which languages they have experience with. "
+"Depending\n"
"on the answer you can highlight different features of Rust:"
msgstr ""
-"Assicurati di chiedere alla classe con quali lingue ha esperienza. Dipendente\n"
-"nella risposta puoi evidenziare diverse caratteristiche di Rust:"
+"Assicurati di chiedere alla classe con quali linguaggi hanno esperienza. "
+"In base alla\n"
+"risposta puoi evidenziare diverse caratteristiche di Rust:"
#: src/why-rust.md:14
-#, fuzzy
msgid ""
-"* Experience with C or C++: Rust eliminates a whole class of _runtime errors_\n"
-" via the borrow checker. You get performance like in C and C++, but you don't\n"
-" have the memory unsafety issues. In addition, you get a modern language with\n"
+"* Experience with C or C++: Rust eliminates a whole class of _runtime "
+"errors_\n"
+" via the borrow checker. You get performance like in C and C++, but you "
+"don't\n"
+" have the memory unsafety issues. In addition, you get a modern language "
+"with\n"
" constructs like pattern matching and built-in dependency management.\n"
"\n"
-"* Experience with Java, Go, Python, JavaScript...: You get the same memory safety\n"
-" as in those languages, plus a similar high-level language feeling. In addition\n"
-" you get fast and predictable performance like C and C++ (no garbage collector)\n"
+"* Experience with Java, Go, Python, JavaScript...: You get the same memory "
+"safety\n"
+" as in those languages, plus a similar high-level language feeling. In "
+"addition\n"
+" you get fast and predictable performance like C and C++ (no garbage "
+"collector)\n"
" as well as access to low-level hardware (should you need it)"
msgstr ""
-"* Esperienza con C o C++: Rust elimina un'intera classe di _errori di runtime_\n"
-" tramite il controllo del prestito. Ottieni prestazioni come in C e C++, ma non lo fai\n"
-" hanno i problemi di sicurezza della memoria. Inoltre, ottieni un linguaggio moderno con\n"
-" costrutti come il pattern matching e la gestione delle dipendenze incorporata.\n"
+"* Esperienza con C o C++: Rust elimina un'intera classe di _errori di "
+"runtime_\n"
+" tramite il _borrow checker_. Ottiene prestazioni come in C e C++, ma "
+"non\n"
+" hai i problemi di sicurezza della memoria. Inoltre, si ha un "
+"linguaggio moderno con\n"
+" costrutti come il pattern matching e la gestione delle dipendenze "
+"incorporata.\n"
"\n"
-"* Esperienza con Java, Go, Python, JavaScript...: Ottieni la stessa sicurezza della memoria\n"
-" come in quelle lingue, più una simile sensazione linguistica di alto livello. Inoltre\n"
-" ottieni prestazioni veloci e prevedibili come C e C++ (nessun Garbage Collector)\n"
-" così come l'accesso all'hardware di basso livello (se ne hai bisogno)"
+"* Esperienza con Java, Go, Python, JavaScript...: Ottiene la stessa "
+"sicurezza della memoria\n"
+" come in quei linguaggi, più una sensazione simile ad un linguaggio di alto "
+"livello. Inoltre\n"
+" raggiunge prestazioni veloci e prevedibili come C e C++ (nessun Garbage "
+"Collector)\n"
+" così come l'accesso all'hardware di basso livello (quando serve)"
#: src/why-rust/compile-time.md:1
msgid "# Compile Time Guarantees"
@@ -2402,7 +2680,6 @@ msgid "Static memory management at compile time:"
msgstr "Gestione statica della memoria in fase di compilazione:"
#: src/why-rust/compile-time.md:5
-#, fuzzy
msgid ""
"* No uninitialized variables.\n"
"* No memory leaks (_mostly_, see notes).\n"
@@ -2414,27 +2691,25 @@ msgid ""
"* No iterator invalidation."
msgstr ""
"* Nessuna variabile non inizializzata.\n"
-"* Nessuna perdita di memoria (_principalmente_, vedi note).\n"
-"* Nessuna doppia libera.\n"
-"* Nessun utilizzo dopo-gratis.\n"
+"* Nessun _memory leaks_ (_principalmente_, vedi note).\n"
+"* Nessun _double-frees_.\n"
+"* Nessun _use-after-free_.\n"
"* Nessun puntatore `NULL`.\n"
-"* Nessun mutex bloccato dimenticato.\n"
-"* Nessuna gara di dati tra i thread.\n"
+"* Nessun mutex dimenticato bloccato.\n"
+"* Nessuna 'situazione di corsa' (_race condition_) di dati tra i thread.\n"
"* Nessuna invalidazione dell'iteratore."
#: src/why-rust/compile-time.md:16
-#, fuzzy
msgid ""
"It is possible to produce memory leaks in (safe) Rust. Some examples\n"
"are:"
msgstr ""
-"È possibile produrre perdite di memoria in (sicuro) Rust. Qualche esempio\n"
+"È possibile produrre perdite di memoria in Rust sicuro (Safe Rust). Qualche esempio\n"
"Sono:"
#: src/why-rust/compile-time.md:19
-#, fuzzy
msgid ""
-"* You can for use [`Box::leak`] to leak a pointer. A use of this could\n"
+"* You can use [`Box::leak`] to leak a pointer. A use of this could\n"
" be to get runtime-initialized and runtime-sized static variables\n"
"* You can use [`std::mem::forget`] to make the compiler \"forget\" about\n"
" a value (meaning the destructor is never run).\n"
@@ -2443,23 +2718,26 @@ msgid ""
"* In fact, some will consider infinitely populating a collection a memory\n"
" leak and Rust does not protect from those."
msgstr ""
-"* Puoi usare [`Box::leak`] per far trapelare un puntatore. Un uso di questo potrebbe\n"
-" be per ottenere variabili statiche inizializzate in runtime e di dimensioni runtime\n"
-"* Puoi usare [`std::mem::forget`] per fare in modo che il compilatore \"dimentichi\"\n"
+"* Puoi usare [`Box::leak`] per far trapelare un puntatore. Un uso di questo "
+"potrebbe\n"
+" essere quello di ottenere variabili statiche inizializzate/dimensionate in runtime\n"
+"* Puoi usare [`std::mem::forget`] per fare in modo che il compilatore "
+"\"dimentichi\"\n"
" un valore (il che significa che il distruttore non viene mai eseguito).\n"
-"* Puoi anche creare accidentalmente un [ciclo di riferimento] con `Rc` o\n"
-" 'Arco'.\n"
-"* In effetti, alcuni considereranno il popolamento infinito di una raccolta un ricordo\n"
-" perdite e la ruggine non protegge da quelle."
+"* Puoi anche creare accidentalmente un _[reference cycle]_ con `Rc` o\n"
+" `Arc`.\n"
+"* In effetti, alcuni considereranno il popolamento infinito di una raccolta "
+"un _memory leak_\n"
+" e Rust non protegge da quello."
#: src/why-rust/compile-time.md:28
-#, fuzzy
msgid ""
"For the purpose of this course, \"No memory leaks\" should be understood\n"
"as \"Pretty much no *accidental* memory leaks\"."
msgstr ""
-"Ai fini di questo corso, si dovrebbe intendere \"Nessuna perdita di memoria\".\n"
-"come \"Praticamente nessuna perdita di memoria * accidentale *\"."
+"Ai fini di questo corso, si dovrebbe intendere \"Nessuna perdita di "
+"memoria\".\n"
+"come \"Praticamente nessuna perdita di memoria *accidentale*\"."
#: src/why-rust/runtime.md:1
msgid "# Runtime Guarantees"
@@ -2470,19 +2748,19 @@ msgid "No undefined behavior at runtime:"
msgstr "Nessun comportamento indefinito in fase di esecuzione:"
#: src/why-rust/runtime.md:5
-#, fuzzy
msgid ""
"* Array access is bounds checked.\n"
-"* Integer overflow is defined."
+"* Integer overflow is defined (panic or wrap-around)."
msgstr ""
-"* L'accesso all'array è controllato dai limiti.\n"
-"* L'overflow di numeri interi è definito."
+"* L'accesso agli array è controllato dai loro limiti.\n"
+"* L'overflow di numeri interi è definito (panic or wrap-around)."
#: src/why-rust/runtime.md:12
-#, fuzzy
msgid ""
-"* Integer overflow is defined via a compile-time flag. The options are\n"
-" either a panic (a controlled crash of the program) or wrap-around\n"
+"* Integer overflow is defined via the [`overflow-checks`](https://doc.rust-"
+"lang.org/rustc/codegen-options/index.html#overflow-checks)\n"
+" compile-time flag. If enabled, the program will panic (a controlled\n"
+" crash of the program), otherwise you get wrap-around\n"
" semantics. By default, you get panics in debug mode (`cargo build`)\n"
" and wrap-around in release mode (`cargo build --release`).\n"
"\n"
@@ -2491,13 +2769,18 @@ msgid ""
" `unsafe` allows you to call functions such as `slice::get_unchecked`\n"
" which does not do bounds checking."
msgstr ""
-"* L'overflow di numeri interi è definito tramite un flag in fase di compilazione. Le opzioni sono\n"
-" o un panico (un crash controllato del programma) o un wrap-around\n"
-" semantica. Per impostazione predefinita, ottieni il panico in modalità di debug (`cargo build`)\n"
+"* L'overflow di numeri interi è definito tramite il flag [`overflow-checks`](https://doc.rust-"
+"lang.org/rustc/codegen-options/index.html#overflow-checks) in fase di "
+"compilazione. Se abilitato il programma _va in panico_ (crash controllato del programma),\n"
+" altrimenti si ha un _wrap-around_.\n"
+" Per impostazione predefinita, si ottiene il panico in modalità di "
+"debug (`cargo build`)\n"
" e wrap-around in modalità rilascio (`cargo build --release`).\n"
"\n"
-"* Il controllo dei limiti non può essere disabilitato con un flag del compilatore. Io posso anche\n"
-" non essere disabilitato direttamente con la parola chiave `unsafe`. Tuttavia,\n"
+"* Il controllo dei limiti non può essere disabilitato con un flag del "
+"compilatore. Può anche\n"
+" non essere disabilitato direttamente con la parola chiave `unsafe`. "
+"Tuttavia,\n"
" `unsafe` ti permette di chiamare funzioni come `slice::get_unchecked`\n"
" che non esegue il controllo dei limiti."
@@ -2506,7 +2789,6 @@ msgid "# Modern Features"
msgstr "# Funzionalità moderne"
#: src/why-rust/modern.md:3
-#, fuzzy
msgid "Rust is built with all the experience gained in the last 40 years."
msgstr "Rust è costruito con tutta l'esperienza maturata negli ultimi 40 anni."
@@ -2515,112 +2797,135 @@ msgid "## Language Features"
msgstr "## Caratteristiche del linguaggio"
#: src/why-rust/modern.md:7
-#, fuzzy
msgid ""
"* Enums and pattern matching.\n"
"* Generics.\n"
"* No overhead FFI.\n"
"* Zero-cost abstractions."
msgstr ""
-"* Enumerazioni e pattern matching.\n"
-"* Generici.\n"
-"* Nessun FFI in testa.\n"
-"* Astrazioni a costo zero."
+"* Enumerazioni (_Enums_) e pattern matching.\n"
+"* Generici (_generic_).\n"
+"* Nessun _overhead_ FFI.\n"
+"* Astrazioni a costo zero (_Zero-cost abstractions_)."
#: src/why-rust/modern.md:12
msgid "## Tooling"
msgstr "## Tooling"
#: src/why-rust/modern.md:14
-#, fuzzy
msgid ""
"* Great compiler errors.\n"
"* Built-in dependency manager.\n"
"* Built-in support for testing.\n"
"* Excellent Language Server Protocol support."
msgstr ""
-"* Grandi errori del compilatore.\n"
+"* Ottimi errori del compilatore.\n"
"* Gestore delle dipendenze integrato.\n"
"* Supporto integrato per i test.\n"
"* Eccellente supporto del protocollo Language Server."
#: src/why-rust/modern.md:23
-#, fuzzy
msgid ""
-"* Zero-cost abstractions, similar to C++, means that you don't have to 'pay'\n"
+"* Zero-cost abstractions, similar to C++, means that you don't have to "
+"'pay'\n"
" for higher-level programming constructs with memory or CPU. For example,\n"
" writing a loop using `for` should result in roughly the same low level\n"
" instructions as using the `.iter().fold()` construct.\n"
"\n"
-"* It may be worth mentioning that Rust enums are 'Algebraic Data Types', also\n"
+"* It may be worth mentioning that Rust enums are 'Algebraic Data Types', "
+"also\n"
" known as 'sum types', which allow the type system to express things like\n"
" `Option` and `Result`.\n"
"\n"
"* Remind people to read the errors --- many developers have gotten used to\n"
" ignore lengthy compiler output. The Rust compiler is significantly more\n"
-" talkative than other compilers. It will often provide you with _actionable_\n"
+" talkative than other compilers. It will often provide you with "
+"_actionable_\n"
" feedback, ready to copy-paste into your code.\n"
"\n"
-"* The Rust standard library is small compared to languages like Java, Python,\n"
-" and Go. Rust does not come with several things you might consider standard and\n"
+"* The Rust standard library is small compared to languages like Java, "
+"Python,\n"
+" and Go. Rust does not come with several things you might consider standard "
+"and\n"
" essential:\n"
"\n"
" * a random number generator, but see [rand].\n"
" * support for SSL or TLS, but see [rusttls].\n"
" * support for JSON, but see [serde_json].\n"
"\n"
-" The reasoning behind this is that functionality in the standard library cannot\n"
+" The reasoning behind this is that functionality in the standard library "
+"cannot\n"
" go away, so it has to be very stable. For the examples above, the Rust\n"
-" community is still working on finding the best solution --- and perhaps there\n"
+" community is still working on finding the best solution --- and perhaps "
+"there\n"
" isn't a single \"best solution\" for some of these things.\n"
"\n"
-" Rust comes with a built-in package manager in the form of Cargo and this makes\n"
-" it trivial to download and compile third-party crates. A consequence of this\n"
+" Rust comes with a built-in package manager in the form of Cargo and this "
+"makes\n"
+" it trivial to download and compile third-party crates. A consequence of "
+"this\n"
" is that the standard library can be smaller.\n"
"\n"
" Discovering good third-party crates can be a problem. Sites like\n"
-" help with this by letting you compare health metrics for\n"
+" help with this by letting you compare health metrics "
+"for\n"
" crates to find a good and trusted one.\n"
" \n"
"* [rust-analyzer] is a well supported LSP implementation used in major\n"
" IDEs and text editors."
msgstr ""
"* Astrazioni a costo zero, simili a C++, significa che non devi \"pagare\"\n"
-" per costrutti di programmazione di livello superiore con memoria o CPU. Per esempio,\n"
-" scrivere un ciclo usando `for` dovrebbe comportare all'incirca lo stesso livello basso\n"
+" per costrutti di programmazione di livello superiore con memoria o CPU. "
+"Per esempio,\n"
+" scrivere un ciclo usando `for` dovrebbe comportare all'incirca lo stesso "
+"livello di\n"
" istruzioni come usare il costrutto `.iter().fold()`.\n"
"\n"
-"* Potrebbe valere la pena ricordare che anche le enum di Rust sono \"tipi di dati algebrici\".\n"
-" noti come \"tipi di somma\", che consentono al sistema di tipi di esprimere cose come\n"
-" `Opzione` e `Risultato`.\n"
+"* Potrebbe valere la pena ricordare che anche le enum di Rust sono \"tipi di "
+"dati algebrici\"\n"
+" noti come \"tipi di somma\", che consentono al sistema di tipi di "
+"esprimere cose come\n"
+" `Option` e `Result`.\n"
"\n"
-"* Ricorda alle persone di leggere gli errori --- a cui molti sviluppatori si sono abituati\n"
-" ignora il lungo output del compilatore. Il compilatore Rust è molto di più\n"
-" loquace rispetto ad altri compilatori. Ti fornirà spesso _actionable_\n"
-" feedback, pronto per il copia-incolla nel tuo codice.\n"
+"* Ricordare alle persone di leggere gli errori --- molti sviluppatori si "
+"sono abituati a\n"
+" ignorare l'output del compilatore. Il compilatore Rust è molto "
+"più\n"
+" \"loquace\" rispetto ad altri compilatori. Spesso fornirà feedback\n"
+" _pronti all'uso_, pronti per il copia-incolla nel tuo codice.\n"
"\n"
-"* La libreria standard di Rust è piccola rispetto a linguaggi come Java, Python,\n"
-" e vai. Rust non viene fornito con molte cose che potresti considerare standard e\n"
-" essenziale:\n"
+"* La libreria standard di Rust è piccola rispetto a linguaggi come Java, "
+"Python,\n"
+" e Go. Rust non viene fornito con molte cose che potresti considerare "
+"standard e\n"
+" essenziali:\n"
"\n"
" * un generatore di numeri casuali, ma vedi [rand].\n"
" * supporto per SSL o TLS, ma vedi [rusttls].\n"
" * supporto per JSON, ma vedi [serde_json].\n"
"\n"
-" Il ragionamento alla base di ciò è che la funzionalità nella libreria standard non può\n"
-" andare via, quindi deve essere molto stabile. Per gli esempi precedenti, Rust\n"
-" la comunità sta ancora lavorando per trovare la soluzione migliore --- e forse lì\n"
-" non è un'unica \"soluzione migliore\" per alcune di queste cose.\n"
+" Il ragionamento alla base di ciò è che una funzionalità nella libreria "
+"standard non può\n"
+" essere tolta, quindi deve essere molto stabile. Per gli esempi precedenti, "
+"la comunità Rust\n"
+" sta ancora lavorando per trovare la soluzione migliore --- e "
+"forse \n"
+" non c'è un'unica \"soluzione migliore\" per alcune di queste cose.\n"
"\n"
-" Rust viene fornito con un gestore di pacchetti integrato sotto forma di Cargo e questo rende\n"
-" è banale scaricare e compilare casse di terze parti. Una conseguenza di ciò\n"
+" Rust viene fornito con un gestore di pacchetti integrato sotto forma di "
+"Cargo e questo rende\n"
+" banale scaricare e compilare pacchetti di terze parti (_crates_). Una conseguenza di "
+"ciò\n"
" è che la libreria standard può essere più piccola.\n"
"\n"
-" La scoperta di buone casse di terze parti può essere un problema. Siti come\n"
-" aiuta in questo consentendoti di confrontare le metriche di salute per\n"
-" casse per trovarne una buona e fidata.\n"
+" La ricerca di buoni 'pacchetti' (_crates_) di terze parti può essere un problema. Siti "
+"come\n"
+" aiutano in questo consentendo di confrontare le metriche "
+"per specifiche\n"
+" _crate_ per trovarne uno buona e affidabile.\n"
" \n"
-"* [rust-analyzer] è un'implementazione LSP ben supportata utilizzata in major\n"
+"* [rust-analyzer] è un'implementazione LSP ben supportata utilizzata nei"
+"maggiori\n"
" IDE ed editor di testo."
#: src/basic-syntax.md:1
@@ -2628,53 +2933,55 @@ msgid "# Basic Syntax"
msgstr "# Sintassi di base"
#: src/basic-syntax.md:3
-#, fuzzy
msgid "Much of the Rust syntax will be familiar to you from C, C++ or Java:"
msgstr "Gran parte della sintassi di Rust ti sarà familiare da C, C++ o Java:"
#: src/basic-syntax.md:5
-#, fuzzy
msgid ""
"* Blocks and scopes are delimited by curly braces.\n"
-"* Line comments are started with `//`, block comments are delimited by `/* ...\n"
+"* Line comments are started with `//`, block comments are delimited by `/"
+"* ...\n"
" */`.\n"
"* Keywords like `if` and `while` work the same.\n"
"* Variable assignment is done with `=`, comparison is done with `==`."
msgstr ""
"* I blocchi e gli ambiti sono delimitati da parentesi graffe.\n"
-"* I commenti di riga iniziano con `//`, i commenti di blocco sono delimitati da `/* ...\n"
+"* I commenti di riga iniziano con `//`, i commenti di blocco sono delimitati "
+"da `/* ...\n"
" */'.\n"
-"* Parole chiave come \"if\" e \"while\" funzionano allo stesso modo.\n"
-"* L'assegnazione delle variabili viene eseguita con `=`, il confronto viene eseguito con `==`."
+"* Parole chiave come `if` e `while` funzionano allo stesso modo.\n"
+"* L'assegnazione delle variabili viene eseguita con `=`, il confronto viene "
+"eseguito con `==`."
#: src/basic-syntax/scalar-types.md:1
msgid "# Scalar Types"
msgstr "# Tipi scalari"
#: src/basic-syntax/scalar-types.md:3
-#, fuzzy
msgid ""
"| | Types | "
"Literals |\n"
"|------------------------|--------------------------------------------|-------------------------------|\n"
-"| Signed integers | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | `-10`, `0`, `1_000`, "
-"`123i64` |\n"
-"| Unsigned integers | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | `0`, `123`, "
-"`10u16` |\n"
-"| Floating point numbers | `f32`, `f64` | `3.14`, `-10.0e20`, "
-"`2f32` |\n"
-"| Strings | `&str` | `\"foo\"`, "
-"`\"two\\nlines\"` |\n"
-"| Unicode scalar values | `char` | `'a'`, `'α'`, "
-"`'∞'` |\n"
-"| Booleans | `bool` | `true`, "
-"`false` |"
+"| Signed integers | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | "
+"`-10`, `0`, `1_000`, `123i64` |\n"
+"| Unsigned integers | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | `0`, "
+"`123`, `10u16` |\n"
+"| Floating point numbers | `f32`, `f64` | "
+"`3.14`, `-10.0e20`, `2f32` |\n"
+"| Strings | `&str` | "
+"`\"foo\"`, `\"two\\nlines\"` |\n"
+"| Unicode scalar values | `char` | "
+"`'a'`, `'α'`, `'∞'` |\n"
+"| Booleans | `bool` | "
+"`true`, `false` |"
msgstr ""
"| | Tipi | Letterali |\n"
"|------------------------|------------------------ "
"---------------------|---------------------------- --|\n"
-"| Interi con segno | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | `-10`, `0`, `1_000`, `123i64` |\n"
-"| Interi senza segno | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | `0`, `123`, `10u16` |\n"
+"| Interi con segno | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | `-10`, "
+"`0`, `1_000`, `123i64` |\n"
+"| Interi senza segno | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | `0`, "
+"`123`, `10u16` |\n"
"| Numeri in virgola mobile | `f32`, `f64` | `3.14`, `-10.0e20`, `2f32` |\n"
"| Corde | `&str` | `\"pippo\"`, `\"due\\nrighe\"` |\n"
"| Valori scalari Unicode | `char` | `'a'`, `'α'`, `'∞'` |\n"
@@ -2685,12 +2992,11 @@ msgid "The types have widths as follows:"
msgstr "I tipi hanno larghezze come segue:"
#: src/basic-syntax/scalar-types.md:14
-#, fuzzy
msgid ""
"* `iN`, `uN`, and `fN` are _N_ bits wide,\n"
"* `isize` and `usize` are the width of a pointer,\n"
-"* `char` is 32 bit wide,\n"
-"* `bool` is 8 bit wide."
+"* `char` is 32 bits wide,\n"
+"* `bool` is 8 bits wide."
msgstr ""
"* `iN`, `uN` e `fN` sono larghi _N_ bit,\n"
"* `isize` e `usize` sono la larghezza di un puntatore,\n"
@@ -2703,8 +3009,10 @@ msgstr "Ci sono alcune sintassi che non sono mostrate sopra:"
#: src/basic-syntax/scalar-types.md:23
msgid ""
-"- Raw strings allow you to create a `&str` value with escapes disabled: `r\"\\n\"\n"
-" == \"\\\\\\\\n\"`. You can embed double-quotes by using an equal amount of `#` on\n"
+"- Raw strings allow you to create a `&str` value with escapes disabled: "
+"`r\"\\n\"\n"
+" == \"\\\\\\\\n\"`. You can embed double-quotes by using an equal amount of "
+"`#` on\n"
" either side of the quotes:\n"
"\n"
" ```rust,editable\n"
@@ -2723,6 +3031,28 @@ msgid ""
" }\n"
" ```"
msgstr ""
+"- Le stringhe non elaborate (_raw_) consentono di creare un valore `&str` con i caratteri"
+" di escape disabilitati: "
+"`r\"\\n\"\n"
+" == \"\\\\\\\\n\"`. Puoi racchiudere le doppie virgolette usando una quantità uguale di "
+"`#` su\n"
+" entrambi i lati delle virgolette:\n"
+"\n"
+" ```rust,editable\n"
+" fn main() {\n"
+" println!(r#\"link\"#);\n"
+" println!(\"link\");\n"
+" }\n"
+" ```\n"
+"\n"
+"- Le stringhe di byte consentono di creare direttamente un valore `&[u8]`:\n"
+"\n"
+" ```rust,editable\n"
+" fn main() {\n"
+" println!(\"{:?}\", b\"abc\");\n"
+" println!(\"{:?}\", &[97, 98, 99]);\n"
+" }\n"
+" ```"
#: src/basic-syntax/compound-types.md:1
msgid "# Compound Types"
@@ -2730,11 +3060,21 @@ msgstr "# Tipi Composti (Compound)"
#: src/basic-syntax/compound-types.md:3
msgid ""
-"| | Types | Literals |\n"
+"| | Types | Literals "
+"|\n"
"|--------|-------------------------------|-----------------------------------|\n"
-"| Arrays | `[T; N]` | `[20, 30, 40]`, `[0; 3]` |\n"
-"| Tuples | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... |"
+"| Arrays | `[T; N]` | `[20, 30, 40]`, `[0; 3]` "
+"|\n"
+"| Tuples | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... "
+"|"
msgstr ""
+"| | Tipi | Letterali "
+"|\n"
+"|--------|-------------------------------|-----------------------------------|\n"
+"| Array | `[T; N]` | `[20, 30, 40]`, `[0; 3]` "
+"|\n"
+"| Tuple | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... "
+"|"
#: src/basic-syntax/compound-types.md:8
msgid "Array assignment and access:"
@@ -2772,36 +3112,61 @@ msgstr "Array:"
#: src/basic-syntax/compound-types.md:34
msgid ""
-"* Arrays have elements of the same type, `T`, and length, `N`, which is a compile-time constant.\n"
-" Note that the length of the array is *part of its type*, which means that `[u8; 3]` and\n"
+"* A value of the array type `[T; N]` holds `N` (a compile-time constant) "
+"elements of the same type `T`.\n"
+" Note that the length of the array is *part of its type*, which means that "
+"`[u8; 3]` and\n"
" `[u8; 4]` are considered two different types.\n"
"\n"
"* We can use literals to assign values to arrays.\n"
"\n"
-"* In the main function, the print statement asks for the debug implementation with the `?` format\n"
-" parameter: `{}` gives the default output, `{:?}` gives the debug output. We\n"
-" could also have used `{a}` and `{a:?}` without specifying the value after the\n"
+"* In the main function, the print statement asks for the debug "
+"implementation with the `?` format\n"
+" parameter: `{}` gives the default output, `{:?}` gives the debug output. "
+"We\n"
+" could also have used `{a}` and `{a:?}` without specifying the value after "
+"the\n"
" format string.\n"
"\n"
-"* Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be easier to read."
+"* Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can "
+"be easier to read."
msgstr ""
+"* Un valore di un array tipo `[T; N]` contiene `N` (una costante _compile-time_) "
+"elementi dello stesso tipo `T`.\n"
+" Nota che la lunghezza dell'array è *parte del suo tipo*, il che significa che "
+"`[u8; 3]` e\n"
+" `[u8; 4]` sono considerati due tipi diversi.\n"
+"\n"
+"* Si possono usare i letterali per assegnare i valori agli array.\n"
+"\n"
+"* Nalla funzione main, l'istruzione print richiede l'implementazione 'debug' "
+"con il parametro `?`:\n"
+" `{}` da l'output predefinito (_default_), `{:?}` da l'output tipo debug. "
+"Si sarebbe\n"
+" anche potuto usare `{a}` e `{a:?}` senza specificare il valore dopo la stringa formattata.\n"
+"\n"
+"* Aggiungendo `#`, eg `{a:#?}`, si invoca un formato \"pretty printing\", il quale può "
+"essere più facile da leggere."
#: src/basic-syntax/compound-types.md:47
msgid "Tuples:"
msgstr "Tuple:"
#: src/basic-syntax/compound-types.md:49
-#, fuzzy
msgid ""
"* Like arrays, tuples have a fixed length.\n"
"\n"
"* Tuples group together values of different types into a compound type.\n"
"\n"
-"* Fields of a tuple can be accessed by the period and the index of the value, e.g. `t.0`, `t.1`.\n"
+"* Fields of a tuple can be accessed by the period and the index of the "
+"value, e.g. `t.0`, `t.1`.\n"
"\n"
-"* The empty tuple `()` is also known as the \"unit type\". It is both a type, and\n"
-" the only valid value of that type - that is to say both the type and its value\n"
-" are expressed as `()`. It is used to indicate, for example, that a function or\n"
+"* The empty tuple `()` is also known as the \"unit type\". It is both a "
+"type, and\n"
+" the only valid value of that type - that is to say both the type and its "
+"value\n"
+" are expressed as `()`. It is used to indicate, for example, that a "
+"function or\n"
" expression has no return value, as we'll see in a future slide. \n"
" * You can think of it as `void` that can be familiar to you from other \n"
" programming languages."
@@ -2810,13 +3175,17 @@ msgstr ""
"\n"
"* Le tuple raggruppano valori di tipi diversi in un tipo composto.\n"
"\n"
-"* È possibile accedere ai campi di una tupla tramite il punto e l'indice del valore, ad es. `t.0`, "
-"`t.1`.\n"
+"* È possibile accedere ai campi di una tupla tramite il punto e l'indice del "
+"valore, ad es. `t.0`, `t.1`.\n"
"\n"
-"* La tupla vuota `()` è anche nota come \"tipo di unità\". È sia un tipo che\n"
-" l'unico valore valido di quel tipo, vale a dire sia il tipo che il suo valore\n"
-" sono espressi come `()`. Viene utilizzato per indicare, ad esempio, che una funzione o\n"
-" expression non ha alcun valore di ritorno, come vedremo in una diapositiva futura.\n"
+"* La tupla vuota `()` è anche nota come \"tipo di unità\". È sia un tipo "
+"che\n"
+" l'unico valore valido di quel tipo, vale a dire sia il tipo che il suo "
+"valore\n"
+" sono espressi come `()`. Viene utilizzato per indicare, ad esempio, che "
+"una funzione o\n"
+" espressione che non ha alcun valore di ritorno, come vedremo in una diapositiva "
+"futura.\n"
" * Puoi pensarlo come un \"vuoto\" che può esserti familiare da altri\n"
" linguaggi di programmazione."
@@ -2845,44 +3214,43 @@ msgid "Some notes:"
msgstr "Alcune note:"
#: src/basic-syntax/references.md:16
-#, fuzzy
msgid ""
-"* We must dereference `ref_x` when assigning to it, similar to C and C++ pointers.\n"
+"* We must dereference `ref_x` when assigning to it, similar to C and C++ "
+"pointers.\n"
"* Rust will auto-dereference in some cases, in particular when invoking\n"
" methods (try `ref_x.count_ones()`).\n"
-"* References that are declared as `mut` can be bound to different values over their lifetime."
+"* References that are declared as `mut` can be bound to different values "
+"over their lifetime."
msgstr ""
-"* Dobbiamo dereferenziare `ref_x` quando lo assegni, in modo simile ai puntatori C e C++.\n"
-"* In alcuni casi Rust dereferenzia automaticamente, in particolare durante l'invocazione\n"
-" metodi (prova `ref_x.count_ones()`).\n"
-"* I riferimenti dichiarati come `mut` possono essere associati a valori diversi nel corso della "
-"loro durata."
+"* Dobbiamo dereferenziare `ref_x` quando lo assegni, in modo simile ai "
+"puntatori C e C++.\n"
+"* In alcuni casi Rust dereferenzia automaticamente, in particolare durante "
+"l'invocazione\n"
+" di metodi (prova `ref_x.count_ones()`).\n"
+"* I riferimenti dichiarati come `mut` possono essere associati a valori "
+"diversi nel corso della loro durata."
-#: src/basic-syntax/references.md:21
+#: src/basic-syntax/references.md:25
msgid ""
-"\n"
-"Key points:"
+"* Be sure to note the difference between `let mut ref_x: &i32` and `let "
+"ref_x:\n"
+" &mut i32`. The first one represents a mutable reference which can be bound "
+"to\n"
+" different values, while the second represents a reference to a mutable "
+"value."
msgstr ""
-"\n"
-"Punti chiave:"
-
-#: src/basic-syntax/references.md:24
-#, fuzzy
-msgid ""
-"* Be sure to note the difference between `let mut ref_x: &i32` and `let ref_x:\n"
-" &mut i32`. The first one represents a mutable reference which can be bound to\n"
-" different values, while the second represents a reference to a mutable value."
-msgstr ""
-"* Assicurati di notare la differenza tra `let mut ref_x: &i32` e `let ref_x:\n"
-" &mut i32`. Il primo rappresenta un riferimento mutevole a cui può essere associato\n"
-" valori diversi, mentre il secondo rappresenta un riferimento a un valore mutabile."
+"* Assicurati di notare la differenza tra `let mut ref_x: &i32` e `let "
+"ref_x:\n"
+" &mut i32`. Il primo rappresenta un riferimento mutevole a cui può essere "
+"associato\n"
+" valori diversi, mentre il secondo rappresenta un riferimento a un valore "
+"mutabile."
#: src/basic-syntax/references-dangling.md:1
msgid "# Dangling References"
msgstr "# Riferimenti Penzolanti (Dangling References)"
#: src/basic-syntax/references-dangling.md:3
-#, fuzzy
msgid "Rust will statically forbid dangling references:"
msgstr "Rust proibirà staticamente i riferimenti penzolanti:"
@@ -2901,32 +3269,31 @@ msgid ""
msgstr ""
#: src/basic-syntax/references-dangling.md:16
-#, fuzzy
msgid ""
"* A reference is said to \"borrow\" the value it refers to.\n"
"* Rust is tracking the lifetimes of all references to ensure they live long\n"
" enough.\n"
"* We will talk more about borrowing when we get to ownership."
msgstr ""
-"* Si dice che un riferimento \"prenda in prestito\" il valore a cui si riferisce.\n"
-"* Rust tiene traccia delle vite di tutti i riferimenti per assicurarsi che durino a lungo\n"
-" Abbastanza.\n"
-"* Parleremo di più del prestito quando arriveremo alla proprietà."
+"* Si dice che un riferimento \"prenda in prestito\" (_borrow_) il valore a cui si "
+"riferisce.\n"
+"* Rust tiene traccia delle vite di tutti i riferimenti per assicurarsi che "
+"durino abbastanza a lungo.\n"
+"* Parleremo di più del _borrowing_ quando arriveremo alla proprietà (_ownership_)."
#: src/basic-syntax/slices.md:1
msgid "# Slices"
msgstr "# Slices"
#: src/basic-syntax/slices.md:3
-#, fuzzy
msgid "A slice gives you a view into a larger collection:"
-msgstr "Una sezione ti offre una vista in una raccolta più ampia:"
+msgstr "Una _slice_ ti offre una vista in una raccolta più ampia:"
#: src/basic-syntax/slices.md:5
msgid ""
"```rust,editable\n"
"fn main() {\n"
-" let a: [i32; 6] = [10, 20, 30, 40, 50, 60];\n"
+" let mut a: [i32; 6] = [10, 20, 30, 40, 50, 60];\n"
" println!(\"a: {a:?}\");\n"
"\n"
" let s: &[i32] = &a[2..4];\n"
@@ -2936,59 +3303,66 @@ msgid ""
msgstr ""
#: src/basic-syntax/slices.md:15
-#, fuzzy
msgid ""
"* Slices borrow data from the sliced type.\n"
"* Question: What happens if you modify `a[3]`?"
msgstr ""
-"* Le sezioni prendono in prestito i dati dal tipo a fette.\n"
+"* Le sezioni prendono in prestito i dati dal tipo della raccolta.\n"
"* Domanda: Cosa succede se modifichi `a[3]`?"
#: src/basic-syntax/slices.md:20
-#, fuzzy
msgid ""
-"* We create a slice by borrowing `a` and specifying the starting and ending indexes in brackets.\n"
+"* We create a slice by borrowing `a` and specifying the starting and ending "
+"indexes in brackets.\n"
"\n"
-"* If the slice starts at index 0, Rust’s range syntax allows us to drop the starting index, "
-"meaning that `&a[0..a.len()]` and `&a[..a.len()]` are identical.\n"
+"* If the slice starts at index 0, Rust’s range syntax allows us to drop the "
+"starting index, meaning that `&a[0..a.len()]` and `&a[..a.len()]` are "
+"identical.\n"
" \n"
-"* The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are identical.\n"
+"* The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are "
+"identical.\n"
"\n"
-"* To easily create a slice of the full array, we can therefore use `&a[..]`.\n"
+"* To easily create a slice of the full array, we can therefore use "
+"`&a[..]`.\n"
"\n"
-"* `s` is a reference to a slice of `i32`s. Notice that the type of `s` (`&[i32]`) no longer "
-"mentions the array length. This allows us to perform computation on slices of different sizes.\n"
+"* `s` is a reference to a slice of `i32`s. Notice that the type of `s` "
+"(`&[i32]`) no longer mentions the array length. This allows us to perform "
+"computation on slices of different sizes.\n"
" \n"
-"* Slices always borrow from another object. In this example, `a` has to remain 'alive' (in scope) "
-"for at least as long as our slice. \n"
+"* Slices always borrow from another object. In this example, `a` has to "
+"remain 'alive' (in scope) for at least as long as our slice. \n"
" \n"
-"* The question about modifying `a[3]` can spark an interesting discussion, but the answer is that "
-"for memory safety reasons\n"
-" you cannot do it through `a` after you created a slice, but you can read the data from both `a` "
-"and `s` safely. \n"
+"* The question about modifying `a[3]` can spark an interesting discussion, "
+"but the answer is that for memory safety reasons\n"
+" you cannot do it through `a` after you created a slice, but you can read "
+"the data from both `a` and `s` safely. \n"
" More details will be explained in the borrow checker section."
msgstr ""
-"* Creiamo una sezione prendendo in prestito `a` e specificando gli indici iniziale e finale tra "
-"parentesi.\n"
+"* Creiamo una sezione prendendo in prestito `a` e specificando gli indici "
+"iniziale e finale tra parentesi.\n"
"\n"
-"* Se la slice inizia all'indice 0, la sintassi dell'intervallo di Rust ci consente di eliminare "
-"l'indice iniziale, il che significa che `&a[0..a.len()]` e `&a[..a.len()]` sono identici .\n"
+"* Se la slice inizia all'indice 0, la sintassi dell'intervallo di Rust ci "
+"consente di eliminare l'indice iniziale, il che significa che `&a[0..a."
+"len()]` e `&a[..a.len()]` sono identici .\n"
" \n"
-"* Lo stesso vale per l'ultimo indice, quindi `&a[2..a.len()]` e `&a[2..]` sono identici.\n"
+"* Lo stesso vale per l'ultimo indice, quindi `&a[2..a.len()]` e `&a[2..]` "
+"sono identici.\n"
"\n"
-"* Per creare facilmente una porzione dell'array completo, possiamo quindi utilizzare `&a[..]`.\n"
+"* Per creare facilmente una porzione dell'array completo, possiamo quindi "
+"utilizzare `&a[..]`.\n"
"\n"
-"* `s` è un riferimento a una porzione di `i32`s. Si noti che il tipo di `s` (`&[i32]`) non "
-"menziona più la lunghezza dell'array. Questo ci permette di eseguire il calcolo su fette di "
-"diverse dimensioni.\n"
+"* `s` è un riferimento a una porzione di `i32`s. Si noti che il tipo di `s` "
+"(`&[i32]`) non menziona più la lunghezza dell'array. Questo ci permette di "
+"eseguire il calcolo su fette di diverse dimensioni.\n"
" \n"
-"* Le fette prendono sempre in prestito da un altro oggetto. In questo esempio, `a` deve rimanere "
-"'vivo' (nello scope) almeno quanto la nostra fetta.\n"
+"* Le fette prendono sempre in prestito da un altro oggetto. In questo "
+"esempio, `a` deve rimanere 'vivo' (nello scope) almeno quanto la nostra "
+"fetta.\n"
" \n"
-"* La domanda sulla modifica di `a[3]` può innescare una discussione interessante, ma la risposta è "
-"che per motivi di sicurezza della memoria\n"
-" non puoi farlo tramite \"a\" dopo aver creato una sezione, ma puoi leggere i dati sia da \"a\" "
-"che da \"s\" in modo sicuro.\n"
+"* La domanda sulla modifica di `a[3]` può innescare una discussione "
+"interessante, ma la risposta è che per motivi di sicurezza della memoria\n"
+" non puoi farlo tramite \"a\" dopo aver creato una sezione, ma puoi leggere "
+"i dati sia da \"a\" che da \"s\" in modo sicuro.\n"
" Maggiori dettagli saranno spiegati nella sezione controllo del prestito."
#: src/basic-syntax/string-slices.md:1
@@ -2996,7 +3370,6 @@ msgid "# `String` vs `str`"
msgstr "# `String` vs `str`"
#: src/basic-syntax/string-slices.md:3
-#, fuzzy
msgid "We can now understand the two string types in Rust:"
msgstr "Ora possiamo comprendere i due tipi di stringhe in Rust:"
@@ -3023,50 +3396,81 @@ msgid "Rust terminology:"
msgstr "Terminologia di Rust:"
#: src/basic-syntax/string-slices.md:22
-#, fuzzy
msgid ""
"* `&str` an immutable reference to a string slice.\n"
"* `String` a mutable string buffer."
msgstr ""
"* `&str` un riferimento immutabile a uno slice di stringa.\n"
-"* `String` un buffer di stringa mutabile."
+"* `String` è un buffer di stringa mutabile."
#: src/basic-syntax/string-slices.md:27
msgid ""
-"* `&str` introduces a string slice, which is an immutable reference to UTF-8 encoded string data \n"
-" stored in a block of memory. String literals (`”Hello”`), are stored in the program’s binary.\n"
+"* `&str` introduces a string slice, which is an immutable reference to UTF-8 "
+"encoded string data \n"
+" stored in a block of memory. String literals (`”Hello”`), are stored in "
+"the program’s binary.\n"
"\n"
-"* Rust’s `String` type is a wrapper around a vector of bytes. As with a `Vec`, it is owned.\n"
+"* Rust’s `String` type is a wrapper around a vector of bytes. As with a "
+"`Vec`, it is owned.\n"
" \n"
-"* As with many other types `String::from()` creates a string from a string literal; `String::"
-"new()` \n"
-" creates a new empty string, to which string data can be added using the `push()` and "
-"`push_str()` methods.\n"
+"* As with many other types `String::from()` creates a string from a string "
+"literal; `String::new()` \n"
+" creates a new empty string, to which string data can be added using the "
+"`push()` and `push_str()` methods.\n"
"\n"
-"* The `format!()` macro is a convenient way to generate an owned string from dynamic values. It \n"
+"* The `format!()` macro is a convenient way to generate an owned string from "
+"dynamic values. It \n"
" accepts the same format specification as `println!()`.\n"
" \n"
-"* You can borrow `&str` slices from `String` via `&` and optionally range selection.\n"
+"* You can borrow `&str` slices from `String` via `&` and optionally range "
+"selection.\n"
" \n"
-"* For C++ programmers: think of `&str` as `const char*` from C++, but the one that always points \n"
-" to a valid string in memory. Rust `String` is a rough equivalent of `std::string` from C++ \n"
-" (main difference: it can only contain UTF-8 encoded bytes and will never use a small-string "
-"optimization).\n"
+"* For C++ programmers: think of `&str` as `const char*` from C++, but the "
+"one that always points \n"
+" to a valid string in memory. Rust `String` is a rough equivalent of `std::"
+"string` from C++ \n"
+" (main difference: it can only contain UTF-8 encoded bytes and will never "
+"use a small-string optimization).\n"
" "
msgstr ""
+"* `&str` introduce una _string slice_, che è un riferimento immutabile a una "
+" stringa codificata UTF-8\n"
+" memorizzata in un blocco di memoria. Le Stringhe letterali (`”Hello”`), sono memorizzate "
+"all'interno del programma binario.\n"
+"\n"
+"* Il tipo Rust `String` è costruito attorno a un vettore di bytes. Come con un "
+"`Vec`, possiede i dati.\n"
+" \n"
+"* Come con molti altri tipi, `String::from()` crea una stringa da un "
+"carattere letterale; `String::new()` \n"
+" crea una stringa vuota a cui è possibile aggiungere dati utilizzando i metodi "
+"`push()` and `push_str()`.\n"
+"\n"
+"* La macro `format!()` è un modo conveniente per generare una "
+"stringa da valori dinamici.\n"
+" Accetta la stessa specifica di formato di `println!()`.\n"
+" \n"
+"* Puoi prendere in prestito le sezioni `&str` da `String` con `&` "
+"e la selezione dell'intervallo opzionale.\n"
+" \n"
+"* Per i programmatori C++: pensa a `&str` come a `const char*` da C++ "
+"ma che punta sempre a una stringa valida in memoria. \n"
+" Rust `String` è approssimativamente equivalente a `std::string` da C++ \n"
+" (differenza principale: può contenere solo byte codificati UTF-8 "
+" e non utilizzerà mai l'ottimizzazione di stringhe piccole).\n"
+" "
#: src/basic-syntax/functions.md:1
msgid "# Functions"
msgstr "# Funzioni"
#: src/basic-syntax/functions.md:3
-#, fuzzy
msgid ""
-"A Rust version of the famous [FizzBuzz](https://en.wikipedia.org/wiki/Fizz_buzz) interview "
-"question:"
+"A Rust version of the famous [FizzBuzz](https://en.wikipedia.org/wiki/"
+"Fizz_buzz) interview question:"
msgstr ""
-"Una versione Rust della famosa domanda dell'intervista [FizzBuzz](https://en.wikipedia.org/wiki/"
-"Fizz_buzz):"
+"Una versione Rust del famoso gioco [FizzBuzz](https://en."
+"wikipedia.org/wiki/Fizz_buzz):"
#: src/basic-syntax/functions.md:5
msgid ""
@@ -3101,91 +3505,110 @@ msgstr ""
#: src/basic-syntax/functions.md:35
msgid ""
-"* We refer in `main` to a function written below. Neither forward declarations nor headers are "
-"necessary. \n"
-"* Declaration parameters are followed by a type (the reverse of some programming languages), then "
-"a return type.\n"
-"* The last expression in a function body (or any block) becomes the return value. Simply omit the "
-"`;` at the end of the expression.\n"
-"* Some functions have no return value, and return the 'unit type', `()`. The compiler will infer "
-"this if the `-> ()` return type is omitted.\n"
-"* The range expression in the `for` loop in `print_fizzbuzz_to()` contains `=n`, which causes it "
-"to include the upper bound."
+"* We refer in `main` to a function written below. Neither forward "
+"declarations nor headers are necessary. \n"
+"* Declaration parameters are followed by a type (the reverse of some "
+"programming languages), then a return type.\n"
+"* The last expression in a function body (or any block) becomes the return "
+"value. Simply omit the `;` at the end of the expression.\n"
+"* Some functions have no return value, and return the 'unit type', `()`. The "
+"compiler will infer this if the `-> ()` return type is omitted.\n"
+"* The range expression in the `for` loop in `print_fizzbuzz_to()` contains "
+"`=n`, which causes it to include the upper bound."
msgstr ""
+"* In `main` ci si riferisce a una funzione scritta di seguito. "
+" Non sono necessarie né pre-dichiarazioni né intestazioni.\n"
+"* I parametri di dichiarazione sono seguiti da un tipo "
+"(il contrario di alcuni linguaggi di programmazione) e quindi da un tipo restituito.\n"
+"* L'ultima espressione nel corpo di una funzione (o in qualsiasi blocco) "
+"diventa il valore restituito. Basta omettere `;` alla fine dell'espressione.\n"
+"* Alcune funzioni non hanno alcun valore di ritorno e restituiscono il 'tipo di unità', `()`."
+" Il compilatore lo dedurrà se il tipo restituito `->()` viene omesso.\n"
+"* L'espressione di intervallo nel ciclo `for` in `fizzbuzz to()` contiene `=n` "
+"che include il limite superiore."
#: src/basic-syntax/rustdoc.md:1
msgid "# Rustdoc"
msgstr "# Rustdoc"
#: src/basic-syntax/rustdoc.md:3
-#, fuzzy
-msgid "All language items in Rust can be documented using special `///` syntax."
+msgid ""
+"All language items in Rust can be documented using special `///` syntax."
msgstr ""
-"Tutti gli elementi del linguaggio in Rust possono essere documentati usando la sintassi speciale "
-"`///`."
+"Tutti gli elementi del linguaggio in Rust possono essere documentati usando "
+"la sintassi speciale `///`."
#: src/basic-syntax/rustdoc.md:5
msgid ""
"```rust,editable\n"
-"/// Determine whether the first argument is divisible by the second argument.\n"
+"/// Determine whether the first argument is divisible by the second "
+"argument.\n"
"///\n"
"/// If the second argument is zero, the result is false.\n"
"fn is_divisible_by(lhs: u32, rhs: u32) -> bool {\n"
" if rhs == 0 {\n"
" return false; // Corner case, early return\n"
" }\n"
-" lhs % rhs == 0 // The last expression in a block is the return value\n"
+" lhs % rhs == 0 // The last expression in a block is the return "
+"value\n"
"}\n"
"```"
msgstr ""
#: src/basic-syntax/rustdoc.md:17
-#, fuzzy
msgid ""
"The contents are treated as Markdown. All published Rust library crates are\n"
"automatically documented at [`docs.rs`](https://docs.rs) using the\n"
-"[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html) tool. It is\n"
+"[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html) tool. It "
+"is\n"
"idiomatic to document all public items in an API using this pattern."
msgstr ""
-"I contenuti sono trattati come Markdown. Tutti i crate della libreria Rust pubblicati lo sono\n"
-"documentato automaticamente in [`docs.rs`](https://docs.rs) utilizzando il file\n"
-"[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html) strumento. È\n"
-"idiomatico per documentare tutti gli elementi pubblici in un'API utilizzando questo modello."
+"I contenuti sono trattati come Markdown. Tutti i _crate_ pubblicati della libreria Rust "
+"sono\n"
+"automaticamente documentati in [`docs.rs`](https://docs.rs) utilizzando lo "
+"strumento \n"
+"[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html). "
+"È\n"
+"idiomatico per documentare tutti gli elementi pubblici in un'API utilizzando "
+"questo modello."
#: src/basic-syntax/rustdoc.md:24
-#, fuzzy
msgid ""
"* Show students the generated docs for the `rand` crate at\n"
" [`docs.rs/rand`](https://docs.rs/rand).\n"
"\n"
-"* This course does not include rustdoc on slides, just to save space, but in\n"
+"* This course does not include rustdoc on slides, just to save space, but "
+"in\n"
" real code they should be present.\n"
"\n"
-"* Inner doc comments are discussed later (in the page on modules) and need not\n"
+"* Inner doc comments are discussed later (in the page on modules) and need "
+"not\n"
" be addressed here."
msgstr ""
-"* Mostra agli studenti i documenti generati per la cassa `rand` su\n"
+"* Mostra agli studenti i documenti generati per il _crate_ `rand` su\n"
" [`docs.rs/rand`](https://docs.rs/rand).\n"
"\n"
-"* Questo corso non include rustdoc sulle diapositive, solo per risparmiare spazio, ma in\n"
-" codice reale dovrebbero essere presenti.\n"
+"* Questo corso non include rustdoc sulle diapositive, solo per risparmiare "
+"spazio, ma nel contesto\n"
+" reale dovrebbe essere presente.\n"
"\n"
-"* I commenti interni al documento sono discussi più avanti (nella pagina sui moduli) e non sono "
-"necessari\n"
-" essere affrontato qui."
+"* I commenti interni al documento sono discussi più avanti (nella pagina sui "
+"moduli) e non è necessario\n"
+" affrontarli qui."
#: src/basic-syntax/methods.md:1 src/methods.md:1
msgid "# Methods"
msgstr "# Metodi"
#: src/basic-syntax/methods.md:3
-#, fuzzy
msgid ""
-"Methods are functions associated with a type. The `self` argument of a method is\n"
+"Methods are functions associated with a type. The `self` argument of a "
+"method is\n"
"an instance of the type it is associated with:"
msgstr ""
-"I metodi sono funzioni associate a un tipo. L'argomento `self` di un metodo è\n"
-"un'istanza del tipo a cui è associata:"
+"I metodi sono funzioni associate a un tipo. L'argomento `self` di un metodo "
+"è\n"
+"un'istanza del tipo a cui è associato:"
#: src/basic-syntax/methods.md:6
msgid ""
@@ -3215,9 +3638,12 @@ msgid ""
msgstr ""
#: src/basic-syntax/methods.md:30
-#, fuzzy
-msgid "* We will look much more at methods in today's exercise and in tomorrow's class."
-msgstr "* Approfondiremo maggiormente i metodi nell'esercizio di oggi e nella lezione di domani."
+msgid ""
+"* We will look much more at methods in today's exercise and in tomorrow's "
+"class."
+msgstr ""
+"* Approfondiremo maggiormente i metodi nell'esercizio di oggi e nella "
+"lezione di domani."
#: src/basic-syntax/methods.md:34
msgid ""
@@ -3232,6 +3658,16 @@ msgid ""
"- Add a `Rectangle::new_square(width: u32)` constructor to illustrate that\n"
" constructors can take arbitrary parameters."
msgstr ""
+"- Aggiungi un costruttore `Rectangle::new` e chiamalo da `main`:\n"
+"\n"
+" ```rust,editable,compile_fail\n"
+" fn new(width: u32, height: u32) -> Rectangle {\n"
+" Rectangle { width, height }\n"
+" }\n"
+" ```\n"
+"\n"
+"- Aggiungi un costruttore `Rectangle::new_square(width: u32)` per illustrare\n"
+" che i costruttori possono accettare parametri arbitrari."
#: src/basic-syntax/functions-interlude.md:1
msgid "# Function Overloading"
@@ -3239,10 +3675,9 @@ msgstr "# Overloading di Funzione"
#: src/basic-syntax/functions-interlude.md:3
msgid "Overloading is not supported:"
-msgstr "Overloading non è supportato:"
+msgstr "L'Overloading non è supportato:"
#: src/basic-syntax/functions-interlude.md:5
-#, fuzzy
msgid ""
"* Each function has a single implementation:\n"
" * Always takes a fixed number of parameters.\n"
@@ -3259,7 +3694,6 @@ msgstr ""
" * Le macro sono talvolta utilizzate come alternativa."
#: src/basic-syntax/functions-interlude.md:12
-#, fuzzy
msgid "However, function parameters can be generic:"
msgstr "Tuttavia, i parametri delle funzioni possono essere generici:"
@@ -3278,25 +3712,26 @@ msgid ""
msgstr ""
#: src/basic-syntax/functions-interlude.md:27
-#, fuzzy
msgid ""
-"* When using generics, the standard library's `Into` can provide a kind of limited\n"
-" polymorphism on argument types. We will see more details in a later section."
+"* When using generics, the standard library's `Into` can provide a kind "
+"of limited\n"
+" polymorphism on argument types. We will see more details in a later "
+"section."
msgstr ""
-"* Quando si usano i generici, `Into` della libreria standard può fornire una sorta di limited\n"
-" polimorfismo sui tipi di argomento. Vedremo maggiori dettagli in una sezione successiva."
+"* Quando si usano i generici, `Into` della libreria standard può fornire "
+"una sorta di\n"
+" polimorfismo limitato sui tipi dell'argomento. Vedremo maggiori dettagli in una "
+"sezione successiva."
#: src/exercises/day-1/morning.md:1
msgid "# Day 1: Morning Exercises"
msgstr "# Giorno 1: Esercizi Mattutini"
#: src/exercises/day-1/morning.md:3
-#, fuzzy
msgid "In these exercises, we will explore two parts of Rust:"
msgstr "In questi esercizi esploreremo due parti di Rust:"
#: src/exercises/day-1/morning.md:5
-#, fuzzy
msgid ""
"* Implicit conversions between types.\n"
"\n"
@@ -3307,54 +3742,58 @@ msgstr ""
"* Array e cicli `for`."
#: src/exercises/day-1/morning.md:11
-#, fuzzy
msgid "A few things to consider while solving the exercises:"
msgstr "Alcune cose da considerare durante la risoluzione degli esercizi:"
#: src/exercises/day-1/morning.md:13
-#, fuzzy
msgid ""
"* Use a local Rust installation, if possible. This way you can get\n"
-" auto-completion in your editor. See the page about [Using Cargo] for details\n"
+" auto-completion in your editor. See the page about [Using Cargo] for "
+"details\n"
" on installing Rust.\n"
"\n"
"* Alternatively, use the Rust Playground."
msgstr ""
-"* Utilizzare un'installazione locale di Rust, se possibile. In questo modo puoi ottenere\n"
-" completamento automatico nel tuo editor. Vedi la pagina su [Utilizzo del carico] per i dettagli\n"
+"* Utilizzare un'installazione locale di Rust, se possibile. In questo modo "
+"puoi ottenere\n"
+" completamento automatico nel tuo editor. Vedi la pagina su [Using Cargo] per i dettagli\n"
" sull'installazione di Rust.\n"
"\n"
"* In alternativa, usa Rust Playground."
#: src/exercises/day-1/morning.md:19
-#, fuzzy
msgid ""
-"The code snippets are not editable on purpose: the inline code snippets lose\n"
+"The code snippets are not editable on purpose: the inline code snippets "
+"lose\n"
"their state if you navigate away from the page."
msgstr ""
-"Gli snippet di codice non sono modificabili di proposito: gli snippet di codice in linea perdono\n"
+"Gli snippet di codice non sono modificabili di proposito: gli snippet di "
+"codice in linea perdono\n"
"il loro stato se esci dalla pagina."
#: src/exercises/day-1/morning.md:22 src/exercises/day-1/afternoon.md:11
#: src/exercises/day-2/morning.md:11 src/exercises/day-2/afternoon.md:7
#: src/exercises/day-3/morning.md:7 src/exercises/bare-metal/morning.md:7
-#: src/exercises/bare-metal/afternoon.md:7 src/exercises/concurrency/morning.md:12
+#: src/exercises/bare-metal/afternoon.md:7
+#: src/exercises/concurrency/morning.md:12
#: src/exercises/concurrency/afternoon.md:13
-#, fuzzy
-msgid "After looking at the exercises, you can look at the [solutions] provided."
-msgstr "Dopo aver esaminato gli esercizi, puoi esaminare le [soluzioni] fornite."
+msgid ""
+"After looking at the exercises, you can look at the [solutions] provided."
+msgstr ""
+"Dopo aver esaminato gli esercizi, puoi esaminare le [solutions] fornite."
#: src/exercises/day-1/implicit-conversions.md:1
msgid "# Implicit Conversions"
msgstr "# Conversioni Implicite"
#: src/exercises/day-1/implicit-conversions.md:3
-#, fuzzy
msgid ""
-"Rust will not automatically apply _implicit conversions_ between types ([unlike\n"
+"Rust will not automatically apply _implicit conversions_ between types "
+"([unlike\n"
"C++][3]). You can see this in a program like this:"
msgstr ""
-"Rust non applicherà automaticamente le _conversioni implicite_ tra i tipi ([a differenza di\n"
+"Rust non applicherà automaticamente le _conversioni implicite_ tra i tipi "
+"([a differenza di\n"
"C++][3]). Puoi vederlo in un programma come questo:"
#: src/exercises/day-1/implicit-conversions.md:6
@@ -3374,46 +3813,52 @@ msgid ""
msgstr ""
#: src/exercises/day-1/implicit-conversions.md:19
-#, fuzzy
msgid ""
"The Rust integer types all implement the [`From`][1] and [`Into`][2]\n"
-"traits to let us convert between them. The `From` trait has a single `from()`\n"
+"traits to let us convert between them. The `From` trait has a single "
+"`from()`\n"
"method and similarly, the `Into` trait has a single `into()` method.\n"
-"Implementing these traits is how a type expresses that it can be converted into\n"
+"Implementing these traits is how a type expresses that it can be converted "
+"into\n"
"another type."
msgstr ""
-"Tutti i tipi interi di Rust implementano [`From`][1] e [`Into`][2]\n"
-"tratti per farci convertire tra di loro. Il tratto `From` ha un singolo `from()`\n"
-"e allo stesso modo, il tratto `Into` ha un singolo metodo `into()`.\n"
-"L'implementazione di questi tratti è il modo in cui un tipo esprime ciò in cui può essere "
-"convertito\n"
-"un altro tipo."
+"Tutti i tipi interi in Rust implementano i _traits_ [`From`][1] e [`Into`][2]\n"
+"consentendo la conversione tra di loro. Il _trait_ `From` ha un singolo metodo "
+"`from()`\n"
+" e allo stesso modo, il _trait_ `Into` ha un singolo metodo `into()`.\n"
+"L'implementazione di questi _traits_ esprime il modo in cui un tipo consente "
+" di essere convertito in\n"
+" un altro tipo."
#: src/exercises/day-1/implicit-conversions.md:25
-#, fuzzy
msgid ""
-"The standard library has an implementation of `From for i16`, which means\n"
+"The standard library has an implementation of `From for i16`, which "
+"means\n"
"that we can convert a variable `x` of type `i8` to an `i16` by calling \n"
"`i16::from(x)`. Or, simpler, with `x.into()`, because `From for i16`\n"
"implementation automatically create an implementation of `Into for i8`."
msgstr ""
-"La libreria standard ha un'implementazione di `From for i16`, che significa\n"
-"che possiamo convertire una variabile `x` di tipo `i8` in una `i16` chiamando\n"
-"`i16::da(x)`. O, più semplicemente, con `x.into()`, perché `From for i16`\n"
-"l'implementazione crea automaticamente un'implementazione di `Into per i8`."
+"La libreria standard ha un'implementazione di `From for i16`, che "
+"significa\n"
+"che possiamo convertire una variabile `x` di tipo `i8` in una `i16` "
+"chiamando\n"
+"`i16::from(x)`. O, più semplicemente, con `x.into()`, perché l'implementazione `From for "
+"i16`\n"
+" crea automaticamente un'implementazione di `Into per "
+"i8`."
#: src/exercises/day-1/implicit-conversions.md:30
-#, fuzzy
msgid ""
-"The same applies for your own `From` implementations for your own types, so it is\n"
-"sufficient to only implement `From` to get a respective `Into` implementation automatically."
+"The same applies for your own `From` implementations for your own types, so "
+"it is\n"
+"sufficient to only implement `From` to get a respective `Into` "
+"implementation automatically."
msgstr ""
"Lo stesso vale per le tue implementazioni `From` per i tuoi tipi, così è\n"
-"sufficiente implementare solo `From` per ottenere automaticamente una rispettiva implementazione "
-"`Into`."
+"sufficiente implementare solo `From` per ottenere automaticamente una "
+"rispettiva implementazione `Into`."
#: src/exercises/day-1/implicit-conversions.md:33
-#, fuzzy
msgid ""
"1. Execute the above program and look at the compiler error.\n"
"\n"
@@ -3422,17 +3867,22 @@ msgid ""
"3. Change the types of `x` and `y` to other things (such as `f32`, `bool`,\n"
" `i128`) to see which types you can convert to which other types. Try\n"
" converting small types to big types and the other way around. Check the\n"
-" [standard library documentation][1] to see if `From` is implemented for\n"
+" [standard library documentation][1] to see if `From` is implemented "
+"for\n"
" the pairs you check."
msgstr ""
"1. Eseguire il programma precedente e osservare l'errore del compilatore.\n"
"\n"
-"2. Aggiorna il codice sopra per utilizzare `into()` per eseguire la conversione.\n"
+"2. Aggiornare il codice per utilizzare `into()` per eseguire la "
+"conversione.\n"
"\n"
-"3. Cambia i tipi di `x` e `y` in altre cose (come `f32`, `bool`,\n"
-" `i128`) per vedere quali tipi è possibile convertire in quali altri tipi. Tentativo\n"
-" convertire caratteri piccoli in caratteri grandi e viceversa. Controlla il\n"
-" [documentazione della libreria standard][1] per vedere se `From` è implementato per\n"
+"3. Cambiare i tipi di `x` e `y` in altre cose (come `f32`, `bool`,\n"
+" `i128`) per vedere quali tipi è possibile convertire in quali altri tipi. "
+"Provare a\n"
+" convertire tipi \"piccoli\" in tipi \"grandi\" e viceversa. Controlla "
+"la\n"
+" [documentazione della libreria standard][1] per vedere se `From` è "
+"implementato per\n"
" le coppie che controlli."
#: src/exercises/day-1/for-loops.md:1
@@ -3440,7 +3890,6 @@ msgid "# Arrays and `for` Loops"
msgstr "# Array e Cicli `for`"
#: src/exercises/day-1/for-loops.md:3
-#, fuzzy
msgid "We saw that an array can be declared like this:"
msgstr "Abbiamo visto che un array può essere dichiarato in questo modo:"
@@ -3452,9 +3901,12 @@ msgid ""
msgstr ""
#: src/exercises/day-1/for-loops.md:9
-#, fuzzy
-msgid "You can print such an array by asking for its debug representation with `{:?}`:"
-msgstr "Puoi stampare un tale array chiedendo la sua rappresentazione di debug con `{:?}`:"
+msgid ""
+"You can print such an array by asking for its debug representation with `{:?}"
+"`:"
+msgstr ""
+"Puoi stampare un tale array chiedendo la sua rappresentazione di debug con "
+"`{:?}`:"
#: src/exercises/day-1/for-loops.md:11
msgid ""
@@ -3467,13 +3919,11 @@ msgid ""
msgstr ""
#: src/exercises/day-1/for-loops.md:18
-#, fuzzy
msgid ""
"Rust lets you iterate over things like arrays and ranges using the `for`\n"
"keyword:"
msgstr ""
-"Rust ti consente di iterare cose come array e intervalli usando il `for`\n"
-"parola chiave:"
+"Rust ti consente di iterare cose come array e intervalli usando la parola chiave `for`:"
#: src/exercises/day-1/for-loops.md:21
msgid ""
@@ -3496,14 +3946,16 @@ msgid ""
msgstr ""
#: src/exercises/day-1/for-loops.md:38
-#, fuzzy
msgid ""
-"Use the above to write a function `pretty_print` which pretty-print a matrix and\n"
-"a function `transpose` which will transpose a matrix (turn rows into columns):"
+"Use the above to write a function `pretty_print` which pretty-print a matrix "
+"and\n"
+"a function `transpose` which will transpose a matrix (turn rows into "
+"columns):"
msgstr ""
-"Usa quanto sopra per scrivere una funzione `pretty_print` che stampa in modo grazioso una matrice "
-"e\n"
-"una funzione `transpose` che traspone una matrice (trasforma le righe in colonne):"
+"Usa quanto sopra per scrivere una funzione `pretty_print` che stampa in modo "
+"efficace una matrice e\n"
+"una funzione `transpose` che traspone una matrice (trasforma le righe in "
+"colonne):"
#: src/exercises/day-1/for-loops.md:41
msgid ""
@@ -3515,17 +3967,15 @@ msgid ""
msgstr ""
#: src/exercises/day-1/for-loops.md:47
-#, fuzzy
msgid "Hard-code both functions to operate on 3 × 3 matrices."
-msgstr "Hard-code entrambe le funzioni per operare su matrici 3 × 3."
+msgstr "Implementa entrambe le funzioni per operare su matrici 3 × 3."
#: src/exercises/day-1/for-loops.md:49
-#, fuzzy
msgid ""
"Copy the code below to and implement the\n"
"functions:"
msgstr ""
-"Copia il codice qui sotto in e implementa il file\n"
+"Copia il codice qui sotto in e implementa le "
"funzioni:"
#: src/exercises/day-1/for-loops.md:52
@@ -3564,33 +4014,32 @@ msgid "## Bonus Question"
msgstr "## Domanda bonus"
#: src/exercises/day-1/for-loops.md:82
-#, fuzzy
msgid ""
"Could you use `&[i32]` slices instead of hard-coded 3 × 3 matrices for your\n"
"argument and return types? Something like `&[&[i32]]` for a two-dimensional\n"
"slice-of-slices. Why or why not?"
msgstr ""
-"Potresti usare fette `&[i32]` invece di matrici 3 × 3 codificate per il tuo\n"
-"argomenti e tipi restituiti? Qualcosa come \"&[&[i32]]\" per un oggetto bidimensionale\n"
-"fetta di fette. Perché o perché no?"
+"Potresti usare _slices_ `&[i32]` invece di matrici 3 × 3 codificate per il tuo\n"
+"argomento e tipi restituiti? Qualcosa come `&[&[i32]]` per un oggetto "
+"bidimensionale\n"
+"_slice-di-slices_. Perché o perché no?"
#: src/exercises/day-1/for-loops.md:87
-#, fuzzy
msgid ""
-"See the [`ndarray` crate](https://docs.rs/ndarray/) for a production quality\n"
+"See the [`ndarray` crate](https://docs.rs/ndarray/) for a production "
+"quality\n"
"implementation."
msgstr ""
-"Guarda la [cassa `ndarray`](https://docs.rs/ndarray/) per una qualità di produzione\n"
-"implementazione."
+"Guarda il _crate_ [`ndarray`](https://docs.rs/ndarray/) per una implementazione di livello "
+"produzione (_production_)."
#: src/exercises/day-1/for-loops.md:92
-#, fuzzy
msgid ""
"The solution and the answer to the bonus section are available in the \n"
"[Solution](solutions-morning.md#arrays-and-for-loops) section."
msgstr ""
-"La soluzione e la risposta alla sezione bonus sono disponibili nel\n"
-"[Soluzione](solutions-morning.md#arrays-and-for-loops)."
+"La soluzione e la risposta alla sezione bonus sono disponibili nella\n"
+"sezione [Soluzione](solutions-morning.md#arrays-and-for-loops)."
#: src/basic-syntax/variables.md:1
msgid "# Variables"
@@ -3599,11 +4048,12 @@ msgstr "# Variabili"
#: src/basic-syntax/variables.md:3
#, fuzzy
msgid ""
-"Rust provides type safety via static typing. Variable bindings are immutable by\n"
+"Rust provides type safety via static typing. Variable bindings are immutable "
+"by\n"
"default:"
msgstr ""
-"Rust fornisce sicurezza di tipo tramite tipizzazione statica. Le associazioni variabili sono "
-"immutabili da\n"
+"Rust fornisce sicurezza di tipo tramite tipizzazione statica. Le "
+"associazioni variabili sono immutabili da\n"
"predefinito:"
#: src/basic-syntax/variables.md:6
@@ -3621,15 +4071,15 @@ msgstr ""
#: src/basic-syntax/variables.md:17
#, fuzzy
msgid ""
-"* Due to type inference the `i32` is optional. We will gradually show the types less and less as "
-"the course progresses.\n"
-"* Note that since `println!` is a macro, `x` is not moved, even using the function like syntax of "
-"`println!(\"x: {}\", x)`"
+"* Due to type inference the `i32` is optional. We will gradually show the "
+"types less and less as the course progresses.\n"
+"* Note that since `println!` is a macro, `x` is not moved, even using the "
+"function like syntax of `println!(\"x: {}\", x)`"
msgstr ""
-"* A causa dell'inferenza del tipo, `i32` è facoltativo. Mostreremo gradualmente i tipi sempre meno "
-"man mano che il corso procede.\n"
-"* Nota che poiché `println!` è una macro, `x` non viene spostata, anche usando la sintassi di "
-"funzione simile a `println!(\"x: {}\", x)`"
+"* A causa dell'inferenza del tipo, `i32` è facoltativo. Mostreremo "
+"gradualmente i tipi sempre meno man mano che il corso procede.\n"
+"* Nota che poiché `println!` è una macro, `x` non viene spostata, anche "
+"usando la sintassi di funzione simile a `println!(\"x: {}\", x)`"
#: src/basic-syntax/type-inference.md:1
#, fuzzy
@@ -3639,7 +4089,8 @@ msgstr "# Digitare Inferenza"
#: src/basic-syntax/type-inference.md:3
#, fuzzy
msgid "Rust will look at how the variable is _used_ to determine the type:"
-msgstr "Rust esaminerà come la variabile viene _usata_ per determinare il tipo:"
+msgstr ""
+"Rust esaminerà come la variabile viene _usata_ per determinare il tipo:"
#: src/basic-syntax/type-inference.md:5
msgid ""
@@ -3666,35 +4117,37 @@ msgstr ""
#: src/basic-syntax/type-inference.md:26
#, fuzzy
msgid ""
-"This slide demonstrates how the Rust compiler infers types based on constraints given by variable "
-"declarations and usages."
+"This slide demonstrates how the Rust compiler infers types based on "
+"constraints given by variable declarations and usages."
msgstr ""
-"Questa diapositiva mostra come il compilatore Rust deduce i tipi in base ai vincoli dati dalle "
-"dichiarazioni e dagli usi delle variabili."
+"Questa diapositiva mostra come il compilatore Rust deduce i tipi in base ai "
+"vincoli dati dalle dichiarazioni e dagli usi delle variabili."
#: src/basic-syntax/type-inference.md:28
#, fuzzy
msgid ""
-"It is very important to emphasize that variables declared like this are not of some sort of "
-"dynamic \"any type\" that can\n"
-"hold any data. The machine code generated by such declaration is identical to the explicit "
-"declaration of a type.\n"
+"It is very important to emphasize that variables declared like this are not "
+"of some sort of dynamic \"any type\" that can\n"
+"hold any data. The machine code generated by such declaration is identical "
+"to the explicit declaration of a type.\n"
"The compiler does the job for us and helps us write more concise code."
msgstr ""
-"È molto importante sottolineare che le variabili dichiarate in questo modo non sono di una sorta "
-"di \"qualsiasi tipo\" dinamico che può\n"
-"detenere alcun dato. Il codice macchina generato da tale dichiarazione è identico alla "
-"dichiarazione esplicita di un tipo.\n"
+"È molto importante sottolineare che le variabili dichiarate in questo modo "
+"non sono di una sorta di \"qualsiasi tipo\" dinamico che può\n"
+"detenere alcun dato. Il codice macchina generato da tale dichiarazione è "
+"identico alla dichiarazione esplicita di un tipo.\n"
"Il compilatore fa il lavoro per noi e ci aiuta a scrivere codice più conciso."
#: src/basic-syntax/type-inference.md:32
#, fuzzy
msgid ""
-"The following code tells the compiler to copy into a certain generic container without the code "
-"ever explicitly specifying the contained type, using `_` as a placeholder:"
+"The following code tells the compiler to copy into a certain generic "
+"container without the code ever explicitly specifying the contained type, "
+"using `_` as a placeholder:"
msgstr ""
-"Il codice seguente indica al compilatore di copiare in un determinato contenitore generico senza "
-"che il codice specifichi mai esplicitamente il tipo contenuto, utilizzando `_` come segnaposto:"
+"Il codice seguente indica al compilatore di copiare in un determinato "
+"contenitore generico senza che il codice specifichi mai esplicitamente il "
+"tipo contenuto, utilizzando `_` come segnaposto:"
#: src/basic-syntax/type-inference.md:34
msgid ""
@@ -3714,13 +4167,13 @@ msgstr ""
#: src/basic-syntax/type-inference.md:46
#, fuzzy
msgid ""
-"[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect) relies "
-"on `FromIterator`, which [`HashSet`](https://doc.rust-lang.org/std/iter/trait.FromIterator.html) "
-"implements."
+"[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator."
+"html#method.collect) relies on `FromIterator`, which [`HashSet`](https://doc."
+"rust-lang.org/std/iter/trait.FromIterator.html) implements."
msgstr ""
-"[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect) si basa "
-"su `FromIterator`, che [`HashSet`](https:/ /doc.rust-lang.org/std/iter/trait.FromIterator.html) "
-"implementa."
+"[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator."
+"html#method.collect) si basa su `FromIterator`, che [`HashSet`](https:/ /doc."
+"rust-lang.org/std/iter/trait.FromIterator.html) implementa."
#: src/basic-syntax/static-and-const.md:1
#, fuzzy
@@ -3728,9 +4181,10 @@ msgid "# Static and Constant Variables"
msgstr "# Variabili statiche e costanti"
#: src/basic-syntax/static-and-const.md:3
-#, fuzzy
-msgid "Global state is managed with static and constant variables."
-msgstr "Lo stato globale è gestito con variabili statiche e costanti."
+msgid ""
+"Globally-scoped names for values can be given with static variables and "
+"constant definitions."
+msgstr ""
#: src/basic-syntax/static-and-const.md:5
msgid "## `const`"
@@ -3750,7 +4204,8 @@ msgid ""
"fn compute_digest(text: &str) -> [u8; DIGEST_SIZE] {\n"
" let mut digest = [ZERO.unwrap_or(0); DIGEST_SIZE];\n"
" for (idx, &b) in text.as_bytes().iter().enumerate() {\n"
-" digest[idx % DIGEST_SIZE] = digest[idx % DIGEST_SIZE].wrapping_add(b);\n"
+" digest[idx % DIGEST_SIZE] = digest[idx % DIGEST_SIZE]."
+"wrapping_add(b);\n"
" }\n"
" digest\n"
"}\n"
@@ -3764,7 +4219,7 @@ msgstr ""
#: src/basic-syntax/static-and-const.md:27
#, fuzzy
-msgid "According the the [Rust RFC Book][1] these are inlined upon use."
+msgid "According to the [Rust RFC Book][1] these are inlined upon use."
msgstr "Secondo il [Rust RFC Book][1] questi sono incorporati dopo l'uso."
#: src/basic-syntax/static-and-const.md:29
@@ -3789,32 +4244,43 @@ msgstr ""
#: src/basic-syntax/static-and-const.md:41
#, fuzzy
msgid ""
-"As noted in the [Rust RFC Book][1], these are not inlined upon use and have an actual associated "
-"memory location. This is useful for unsafe and embedded code, and the variable lives through the "
-"entirety of the program execution."
+"As noted in the [Rust RFC Book][1], these are not inlined upon use and have "
+"an actual associated memory location. This is useful for unsafe and "
+"embedded code, and the variable lives through the entirety of the program "
+"execution.\n"
+"When a globally-scoped value does not have a reason to need object identity, "
+"`const` is generally preferred."
msgstr ""
-"Come notato nel [Rust RFC Book][1], questi non sono allineati durante l'uso e hanno una posizione "
-"di memoria associata effettiva. Questo è utile per il codice non sicuro e incorporato e la "
-"variabile vive per tutta l'esecuzione del programma."
+"Come notato nel [Rust RFC Book][1], questi non sono allineati durante l'uso "
+"e hanno una posizione di memoria associata effettiva. Questo è utile per il "
+"codice non sicuro e incorporato e la variabile vive per tutta l'esecuzione "
+"del programma."
-#: src/basic-syntax/static-and-const.md:44
-#, fuzzy
-msgid "We will look at mutating static data in the [chapter on Unsafe Rust](../unsafe.md)."
-msgstr "Esamineremo la modifica dei dati statici nel [capitolo su Unsafe Rust](../unsafe.md)."
+#: src/basic-syntax/static-and-const.md:45
+msgid ""
+"We will look at [mutating static data](../unsafe/mutable-static-variables."
+"md) in the chapter on Unsafe Rust.\n"
+"Because `static` variables are accessible from any thread, mutable static "
+"variables require manual, unsafe, synchronization of accesses."
+msgstr ""
-#: src/basic-syntax/static-and-const.md:48
+#: src/basic-syntax/static-and-const.md:50
#, fuzzy
msgid ""
"* Mention that `const` behaves semantically similar to C++'s `constexpr`.\n"
-"* `static`, on the other hand, is much more similar to a `const` or mutable global variable in C+"
-"+.\n"
-"* It isn't super common that one would need a runtime evaluated constant, but it is helpful and "
-"safer than using a static."
+"* `static`, on the other hand, is much more similar to a `const` or mutable "
+"global variable in C++.\n"
+"* `static` provides object identity: an address in memory and state as "
+"required by types with interior mutability such as `Mutex`.\n"
+"* It isn't super common that one would need a runtime evaluated constant, "
+"but it is helpful and safer than using a static."
msgstr ""
-"* Menziona che `const` si comporta semanticamente in modo simile a `constexpr` del C++.\n"
-"* `static`, d'altra parte, è molto più simile a una `const` o variabile globale mutabile in C++.\n"
-"* Non è molto comune che si abbia bisogno di una costante valutata in fase di esecuzione, ma è "
-"utile e più sicura rispetto all'utilizzo di una statica."
+"* Menziona che `const` si comporta semanticamente in modo simile a "
+"`constexpr` del C++.\n"
+"* `static`, d'altra parte, è molto più simile a una `const` o variabile "
+"globale mutabile in C++.\n"
+"* Non è molto comune che si abbia bisogno di una costante valutata in fase "
+"di esecuzione, ma è utile e più sicura rispetto all'utilizzo di una statica."
#: src/basic-syntax/scopes-shadowing.md:1
msgid "# Scopes and Shadowing"
@@ -3823,10 +4289,12 @@ msgstr "# Scopes (Ambiti) e Shadowing"
#: src/basic-syntax/scopes-shadowing.md:3
#, fuzzy
msgid ""
-"You can shadow variables, both those from outer scopes and variables from the\n"
+"You can shadow variables, both those from outer scopes and variables from "
+"the\n"
"same scope:"
msgstr ""
-"Puoi ombreggiare le variabili, sia quelle degli ambiti esterni che le variabili del file\n"
+"Puoi ombreggiare le variabili, sia quelle degli ambiti esterni che le "
+"variabili del file\n"
"stessa portata:"
#: src/basic-syntax/scopes-shadowing.md:6
@@ -3852,22 +4320,26 @@ msgstr ""
#: src/basic-syntax/scopes-shadowing.md:25
#, fuzzy
msgid ""
-"* Definition: Shadowing is different from mutation, because after shadowing both variable's memory "
-"locations exist at the same time. Both are available under the same name, depending where you use "
-"it in the code. \n"
+"* Definition: Shadowing is different from mutation, because after shadowing "
+"both variable's memory locations exist at the same time. Both are available "
+"under the same name, depending where you use it in the code. \n"
"* A shadowing variable can have a different type. \n"
-"* Shadowing looks obscure at first, but is convenient for holding on to values after `.unwrap()`.\n"
-"* The following code demonstrates why the compiler can't simply reuse memory locations when "
-"shadowing an immutable variable in a scope, even if the type does not change."
+"* Shadowing looks obscure at first, but is convenient for holding on to "
+"values after `.unwrap()`.\n"
+"* The following code demonstrates why the compiler can't simply reuse memory "
+"locations when shadowing an immutable variable in a scope, even if the type "
+"does not change."
msgstr ""
-"* Definizione: l'ombreggiatura è diversa dalla mutazione, perché dopo l'ombreggiatura le locazioni "
-"di memoria di entrambe le variabili esistono contemporaneamente. Entrambi sono disponibili con lo "
-"stesso nome, a seconda di dove lo usi nel codice.\n"
+"* Definizione: l'ombreggiatura è diversa dalla mutazione, perché dopo "
+"l'ombreggiatura le locazioni di memoria di entrambe le variabili esistono "
+"contemporaneamente. Entrambi sono disponibili con lo stesso nome, a seconda "
+"di dove lo usi nel codice.\n"
"* Una variabile di ombreggiatura può avere un tipo diverso.\n"
-"* L'ombreggiatura all'inizio sembra oscura, ma è utile per conservare i valori dopo `.unwrap()`.\n"
-"* Il codice seguente dimostra perché il compilatore non può semplicemente riutilizzare le "
-"posizioni di memoria durante lo shadowing di una variabile immutabile in un ambito, anche se il "
-"tipo non cambia."
+"* L'ombreggiatura all'inizio sembra oscura, ma è utile per conservare i "
+"valori dopo `.unwrap()`.\n"
+"* Il codice seguente dimostra perché il compilatore non può semplicemente "
+"riutilizzare le posizioni di memoria durante lo shadowing di una variabile "
+"immutabile in un ambito, anche se il tipo non cambia."
#: src/basic-syntax/scopes-shadowing.md:30
msgid ""
@@ -3888,17 +4360,20 @@ msgstr "# Gestione della Memoria"
#: src/memory-management.md:3
#, fuzzy
msgid "Traditionally, languages have fallen into two broad categories:"
-msgstr "Tradizionalmente, le lingue sono state suddivise in due grandi categorie:"
+msgstr ""
+"Tradizionalmente, le lingue sono state suddivise in due grandi categorie:"
#: src/memory-management.md:5
#, fuzzy
msgid ""
"* Full control via manual memory management: C, C++, Pascal, ...\n"
-"* Full safety via automatic memory management at runtime: Java, Python, Go, Haskell, ..."
+"* Full safety via automatic memory management at runtime: Java, Python, Go, "
+"Haskell, ..."
msgstr ""
-"* Controllo completo tramite gestione manuale della memoria: C, C++, Pascal, ...\n"
-"* Piena sicurezza tramite la gestione automatica della memoria in fase di esecuzione: Java, "
-"Python, Go, Haskell, ..."
+"* Controllo completo tramite gestione manuale della memoria: C, C++, "
+"Pascal, ...\n"
+"* Piena sicurezza tramite la gestione automatica della memoria in fase di "
+"esecuzione: Java, Python, Go, Haskell, ..."
#: src/memory-management.md:8
msgid "Rust offers a new mix:"
@@ -3910,8 +4385,8 @@ msgid ""
"> Full control *and* safety via compile time enforcement of correct memory\n"
"> management."
msgstr ""
-"> Pieno controllo *e* sicurezza tramite applicazione in fase di compilazione della memoria "
-"corretta\n"
+"> Pieno controllo *e* sicurezza tramite applicazione in fase di compilazione "
+"della memoria corretta\n"
"> gestione."
#: src/memory-management.md:13
@@ -3921,7 +4396,8 @@ msgstr "Lo fa con un concetto di ownership (proprietà) esplicito."
#: src/memory-management.md:15
#, fuzzy
msgid "First, let's refresh how memory management works."
-msgstr "Innanzitutto, aggiorniamo il funzionamento della gestione della memoria."
+msgstr ""
+"Innanzitutto, aggiorniamo il funzionamento della gestione della memoria."
#: src/memory-management/stack-vs-heap.md:1
msgid "# The Stack vs The Heap"
@@ -3959,11 +4435,12 @@ msgstr "# Memoria sullo Stack"
#: src/memory-management/stack.md:3
#, fuzzy
msgid ""
-"Creating a `String` puts fixed-sized data on the stack and dynamically sized\n"
+"Creating a `String` puts fixed-sized data on the stack and dynamically "
+"sized\n"
"data on the heap:"
msgstr ""
-"La creazione di una `Stringa` mette i dati di dimensioni fisse nello stack e dimensionati "
-"dinamicamente\n"
+"La creazione di una `Stringa` mette i dati di dimensioni fisse nello stack e "
+"dimensionati dinamicamente\n"
"dati sull'heap:"
#: src/memory-management/stack.md:6
@@ -3994,14 +4471,15 @@ msgstr ""
#: src/memory-management/stack.md:28
msgid ""
-"* Mention that a `String` is backed by a `Vec`, so it has a capacity and length and can grow if "
-"mutable via reallocation on the heap.\n"
+"* Mention that a `String` is backed by a `Vec`, so it has a capacity and "
+"length and can grow if mutable via reallocation on the heap.\n"
"\n"
-"* If students ask about it, you can mention that the underlying memory is heap allocated using the "
-"[System Allocator] and custom allocators can be implemented using the [Allocator API]\n"
+"* If students ask about it, you can mention that the underlying memory is "
+"heap allocated using the [System Allocator] and custom allocators can be "
+"implemented using the [Allocator API]\n"
"\n"
-"* We can inspect the memory layout with `unsafe` code. However, you should point out that this is "
-"rightfully unsafe!\n"
+"* We can inspect the memory layout with `unsafe` code. However, you should "
+"point out that this is rightfully unsafe!\n"
"\n"
" ```rust,editable\n"
" fn main() {\n"
@@ -4009,11 +4487,14 @@ msgid ""
" s1.push(' ');\n"
" s1.push_str(\"world\");\n"
" // DON'T DO THIS AT HOME! For educational purposes only.\n"
-" // String provides no guarantees about its layout, so this could lead to\n"
+" // String provides no guarantees about its layout, so this could "
+"lead to\n"
" // undefined behavior.\n"
" unsafe {\n"
-" let (capacity, ptr, len): (usize, usize, usize) = std::mem::transmute(s1);\n"
-" println!(\"ptr = {ptr:#x}, len = {len}, capacity = {capacity}\");\n"
+" let (capacity, ptr, len): (usize, usize, usize) = std::mem::"
+"transmute(s1);\n"
+" println!(\"ptr = {ptr:#x}, len = {len}, capacity = "
+"{capacity}\");\n"
" }\n"
" }\n"
" ```"
@@ -4030,10 +4511,11 @@ msgstr "Allocate e de-allocate voi stessi la memoria dell'heap."
#: src/memory-management/manual.md:5
#, fuzzy
msgid ""
-"If not done with care, this can lead to crashes, bugs, security vulnerabilities, and memory leaks."
+"If not done with care, this can lead to crashes, bugs, security "
+"vulnerabilities, and memory leaks."
msgstr ""
-"Se non fatto con cura, ciò può portare a arresti anomali, bug, vulnerabilità di sicurezza e "
-"perdite di memoria."
+"Se non fatto con cura, ciò può portare a arresti anomali, bug, vulnerabilità "
+"di sicurezza e perdite di memoria."
#: src/memory-management/manual.md:7
msgid "## C Example"
@@ -4048,7 +4530,7 @@ msgstr "Devi chiamare `free` su ogni puntatore allocato con `malloc`:"
msgid ""
"```c\n"
"void foo(size_t n) {\n"
-" int* int_array = (int*)malloc(n * sizeof(int));\n"
+" int* int_array = malloc(n * sizeof(int));\n"
" //\n"
" // ... lots of code\n"
" //\n"
@@ -4060,10 +4542,12 @@ msgstr ""
#: src/memory-management/manual.md:21
#, fuzzy
msgid ""
-"Memory is leaked if the function returns early between `malloc` and `free`: the\n"
+"Memory is leaked if the function returns early between `malloc` and `free`: "
+"the\n"
"pointer is lost and we cannot deallocate the memory."
msgstr ""
-"La memoria viene persa se la funzione ritorna in anticipo tra `malloc` e `free`: the\n"
+"La memoria viene persa se la funzione ritorna in anticipo tra `malloc` e "
+"`free`: the\n"
"puntatore è perso e non possiamo deallocare la memoria."
#: src/memory-management/scope-based.md:1
@@ -4072,27 +4556,35 @@ msgstr "# Gestione della memoria basata sullo Scope (ambito)"
#: src/memory-management/scope-based.md:3
#, fuzzy
-msgid "Constructors and destructors let you hook into the lifetime of an object."
-msgstr "Costruttori e distruttori ti consentono di agganciarti alla vita di un oggetto."
+msgid ""
+"Constructors and destructors let you hook into the lifetime of an object."
+msgstr ""
+"Costruttori e distruttori ti consentono di agganciarti alla vita di un "
+"oggetto."
#: src/memory-management/scope-based.md:5
#, fuzzy
msgid ""
"By wrapping a pointer in an object, you can free memory when the object is\n"
-"destroyed. The compiler guarantees that this happens, even if an exception is\n"
+"destroyed. The compiler guarantees that this happens, even if an exception "
+"is\n"
"raised."
msgstr ""
-"Avvolgendo un puntatore in un oggetto, puoi liberare memoria quando l'oggetto è\n"
-"distrutto. Il compilatore garantisce che ciò accada, anche se lo è un'eccezione\n"
+"Avvolgendo un puntatore in un oggetto, puoi liberare memoria quando "
+"l'oggetto è\n"
+"distrutto. Il compilatore garantisce che ciò accada, anche se lo è "
+"un'eccezione\n"
"sollevato."
#: src/memory-management/scope-based.md:9
#, fuzzy
msgid ""
-"This is often called _resource acquisition is initialization_ (RAII) and gives\n"
+"This is often called _resource acquisition is initialization_ (RAII) and "
+"gives\n"
"you smart pointers."
msgstr ""
-"Questo è spesso chiamato _l'acquisizione delle risorse è l'inizializzazione_ (RAII) e dà\n"
+"Questo è spesso chiamato _l'acquisizione delle risorse è l'inizializzazione_ "
+"(RAII) e dà\n"
"puntatori intelligenti."
#: src/memory-management/scope-based.md:12
@@ -4118,14 +4610,17 @@ msgid ""
msgstr ""
"* L'oggetto `std::unique_ptr` è allocato nello stack e punta a\n"
" memoria allocata nell'heap.\n"
-"* Alla fine di `say_hello`, verrà eseguito il distruttore `std::unique_ptr`.\n"
+"* Alla fine di `say_hello`, verrà eseguito il distruttore `std::"
+"unique_ptr`.\n"
"* Il distruttore libera l'oggetto `Person` a cui punta."
#: src/memory-management/scope-based.md:25
#, fuzzy
-msgid "Special move constructors are used when passing ownership to a function:"
+msgid ""
+"Special move constructors are used when passing ownership to a function:"
msgstr ""
-"I costruttori di mosse speciali vengono utilizzati quando si passa la proprietà a una funzione:"
+"I costruttori di mosse speciali vengono utilizzati quando si passa la "
+"proprietà a una funzione:"
#: src/memory-management/scope-based.md:27
msgid ""
@@ -4142,20 +4637,24 @@ msgstr "# Gestione automatica della Memoria"
#: src/memory-management/garbage-collection.md:3
#, fuzzy
msgid ""
-"An alternative to manual and scope-based memory management is automatic memory\n"
+"An alternative to manual and scope-based memory management is automatic "
+"memory\n"
"management:"
msgstr ""
-"Un'alternativa alla gestione della memoria manuale e basata sull'ambito è la memoria automatica\n"
+"Un'alternativa alla gestione della memoria manuale e basata sull'ambito è la "
+"memoria automatica\n"
"gestione:"
#: src/memory-management/garbage-collection.md:6
#, fuzzy
msgid ""
"* The programmer never allocates or deallocates memory explicitly.\n"
-"* A garbage collector finds unused memory and deallocates it for the programmer."
+"* A garbage collector finds unused memory and deallocates it for the "
+"programmer."
msgstr ""
"* Il programmatore non alloca o dealloca mai la memoria in modo esplicito.\n"
-"* Un Garbage Collector trova la memoria inutilizzata e la dealloca per il programmatore."
+"* Un Garbage Collector trova la memoria inutilizzata e la dealloca per il "
+"programmatore."
#: src/memory-management/garbage-collection.md:9
msgid "## Java Example"
@@ -4164,7 +4663,8 @@ msgstr "## Esempio Java"
#: src/memory-management/garbage-collection.md:11
#, fuzzy
msgid "The `person` object is not deallocated after `sayHello` returns:"
-msgstr "L'oggetto `person` non viene deallocato dopo che `sayHello` restituisce:"
+msgstr ""
+"L'oggetto `person` non viene deallocato dopo che `sayHello` restituisce:"
#: src/memory-management/garbage-collection.md:13
msgid ""
@@ -4187,38 +4687,44 @@ msgstr "La gestione della memoria in Rust è un mix:"
#, fuzzy
msgid ""
"* Safe and correct like Java, but without a garbage collector.\n"
-"* Depending on which abstraction (or combination of abstractions) you choose, can be a single "
-"unique pointer, reference counted, or atomically reference counted.\n"
+"* Depending on which abstraction (or combination of abstractions) you "
+"choose, can be a single unique pointer, reference counted, or atomically "
+"reference counted.\n"
"* Scope-based like C++, but the compiler enforces full adherence.\n"
-"* A Rust user can choose the right abstraction for the situation, some even have no cost at "
-"runtime like C."
+"* A Rust user can choose the right abstraction for the situation, some even "
+"have no cost at runtime like C."
msgstr ""
"* Sicuro e corretto come Java, ma senza un garbage collector.\n"
-"* A seconda dell'astrazione (o combinazione di astrazioni) scelta, può trattarsi di un singolo "
-"puntatore univoco, del conteggio dei riferimenti o del conteggio dei riferimenti atomici.\n"
+"* A seconda dell'astrazione (o combinazione di astrazioni) scelta, può "
+"trattarsi di un singolo puntatore univoco, del conteggio dei riferimenti o "
+"del conteggio dei riferimenti atomici.\n"
"* Basato sull'ambito come C++, ma il compilatore applica la piena aderenza.\n"
-"* Un utente Rust può scegliere l'astrazione giusta per la situazione, alcuni addirittura non hanno "
-"alcun costo in fase di esecuzione come C."
+"* Un utente Rust può scegliere l'astrazione giusta per la situazione, alcuni "
+"addirittura non hanno alcun costo in fase di esecuzione come C."
#: src/memory-management/rust.md:10
#, fuzzy
-msgid "It achieves this by modeling _ownership_ explicitly."
+msgid "Rust achieves this by modeling _ownership_ explicitly."
msgstr "Raggiunge questo modellando _ownership_ in modo esplicito."
#: src/memory-management/rust.md:14
#, fuzzy
msgid ""
-"* If asked how at this point, you can mention that in Rust this is usually handled by RAII wrapper "
-"types such as [Box], [Vec], [Rc], or [Arc]. These encapsulate ownership and memory allocation via "
-"various means, and prevent the potential errors in C.\n"
+"* If asked how at this point, you can mention that in Rust this is usually "
+"handled by RAII wrapper types such as [Box], [Vec], [Rc], or [Arc]. These "
+"encapsulate ownership and memory allocation via various means, and prevent "
+"the potential errors in C.\n"
"\n"
-"* You may be asked about destructors here, the [Drop] trait is the Rust equivalent."
+"* You may be asked about destructors here, the [Drop] trait is the Rust "
+"equivalent."
msgstr ""
-"* Se ti viene chiesto come a questo punto, puoi menzionare che in Rust questo è solitamente "
-"gestito da tipi di wrapper RAII come [Box], [Vec], [Rc] o [Arc]. Questi incapsulano la proprietà e "
-"l'allocazione della memoria tramite vari mezzi e prevengono i potenziali errori in C.\n"
+"* Se ti viene chiesto come a questo punto, puoi menzionare che in Rust "
+"questo è solitamente gestito da tipi di wrapper RAII come [Box], [Vec], [Rc] "
+"o [Arc]. Questi incapsulano la proprietà e l'allocazione della memoria "
+"tramite vari mezzi e prevengono i potenziali errori in C.\n"
"\n"
-"* Qui ti potrebbe essere chiesto dei distruttori, il tratto [Drop] è l'equivalente di Rust."
+"* Qui ti potrebbe essere chiesto dei distruttori, il tratto [Drop] è "
+"l'equivalente di Rust."
#: src/memory-management/comparison.md:1
msgid "# Comparison"
@@ -4227,7 +4733,8 @@ msgstr "# Confronto"
#: src/memory-management/comparison.md:3
#, fuzzy
msgid "Here is a rough comparison of the memory management techniques."
-msgstr "Ecco un confronto approssimativo delle tecniche di gestione della memoria."
+msgstr ""
+"Ecco un confronto approssimativo delle tecniche di gestione della memoria."
#: src/memory-management/comparison.md:5
msgid "## Pros of Different Memory Management Techniques"
@@ -4305,10 +4812,12 @@ msgstr "# Ownership (Proprietà)"
#: src/ownership.md:3
#, fuzzy
msgid ""
-"All variable bindings have a _scope_ where they are valid and it is an error to\n"
+"All variable bindings have a _scope_ where they are valid and it is an error "
+"to\n"
"use a variable outside its scope:"
msgstr ""
-"Tutte le associazioni di variabili hanno un _scope_ in cui sono valide ed è un errore\n"
+"Tutte le associazioni di variabili hanno un _scope_ in cui sono valide ed è "
+"un errore\n"
"usa una variabile al di fuori del suo ambito:"
#: src/ownership.md:6
@@ -4333,7 +4842,8 @@ msgid ""
"* A destructor can run here to free up resources.\n"
"* We say that the variable _owns_ the value."
msgstr ""
-"* Alla fine dell'ambito, la variabile viene _eliminata_ ei dati vengono liberati.\n"
+"* Alla fine dell'ambito, la variabile viene _eliminata_ ei dati vengono "
+"liberati.\n"
"* Un distruttore può essere eseguito qui per liberare risorse.\n"
"* Diciamo che la variabile _possiede_ il valore."
@@ -4376,13 +4886,14 @@ msgstr ""
#: src/ownership/move-semantics.md:22
#, fuzzy
msgid ""
-"* Mention that this is the opposite of the defaults in C++, which copies by value unless you use "
-"`std::move` (and the move constructor is defined!).\n"
+"* Mention that this is the opposite of the defaults in C++, which copies by "
+"value unless you use `std::move` (and the move constructor is defined!).\n"
"\n"
"* In Rust, clones are explicit (by using `clone`)."
msgstr ""
-"* Menziona che questo è l'opposto dei valori predefiniti in C++, che copia per valore a meno che "
-"tu non usi `std::move` (e il costruttore di movimento è definito!).\n"
+"* Menziona che questo è l'opposto dei valori predefiniti in C++, che copia "
+"per valore a meno che tu non usi `std::move` (e il costruttore di movimento "
+"è definito!).\n"
"\n"
"* In Rust, i cloni sono espliciti (utilizzando `clone`)."
@@ -4478,10 +4989,12 @@ msgstr ""
#: src/ownership/double-free-modern-cpp.md:10
#, fuzzy
msgid ""
-"* The heap data from `s1` is duplicated and `s2` gets its own independent copy.\n"
+"* The heap data from `s1` is duplicated and `s2` gets its own independent "
+"copy.\n"
"* When `s1` and `s2` go out of scope, they each free their own memory."
msgstr ""
-"* I dati dell'heap da `s1` vengono duplicati e `s2` ottiene la propria copia indipendente.\n"
+"* I dati dell'heap da `s1` vengono duplicati e `s2` ottiene la propria copia "
+"indipendente.\n"
"* Quando `s1` e `s2` escono dall'ambito, ciascuno libera la propria memoria."
#: src/ownership/double-free-modern-cpp.md:13
@@ -4544,7 +5057,8 @@ msgid ""
"When you pass a value to a function, the value is assigned to the function\n"
"parameter. This transfers ownership:"
msgstr ""
-"Quando si passa un valore a una funzione, il valore viene assegnato alla funzione\n"
+"Quando si passa un valore a una funzione, il valore viene assegnato alla "
+"funzione\n"
"parametro. Questo trasferisce la proprietà:"
#: src/ownership/moves-function-calls.md:6
@@ -4565,23 +5079,30 @@ msgstr ""
#: src/ownership/moves-function-calls.md:20
#, fuzzy
msgid ""
-"* With the first call to `say_hello`, `main` gives up ownership of `name`. Afterwards, `name` "
-"cannot be used anymore within `main`.\n"
-"* The heap memory allocated for `name` will be freed at the end of the `say_hello` function.\n"
-"* `main` can retain ownership if it passes `name` as a reference (`&name`) and if `say_hello` "
-"accepts a reference as a parameter.\n"
-"* Alternatively, `main` can pass a clone of `name` in the first call (`name.clone()`).\n"
-"* Rust makes it harder than C++ to inadvertently create copies by making move semantics the "
-"default, and by forcing programmers to make clones explicit."
+"* With the first call to `say_hello`, `main` gives up ownership of `name`. "
+"Afterwards, `name` cannot be used anymore within `main`.\n"
+"* The heap memory allocated for `name` will be freed at the end of the "
+"`say_hello` function.\n"
+"* `main` can retain ownership if it passes `name` as a reference (`&name`) "
+"and if `say_hello` accepts a reference as a parameter.\n"
+"* Alternatively, `main` can pass a clone of `name` in the first call (`name."
+"clone()`).\n"
+"* Rust makes it harder than C++ to inadvertently create copies by making "
+"move semantics the default, and by forcing programmers to make clones "
+"explicit."
msgstr ""
-"* Con la prima chiamata a `say_hello`, `main` rinuncia alla proprietà di `name`. Successivamente, "
-"`name` non può più essere utilizzato all'interno di `main`.\n"
-"* La memoria heap allocata per `name` verrà liberata alla fine della funzione `say_hello`.\n"
-"* `main` può mantenere la proprietà se passa `name` come riferimento (`&name`) e se `say_hello` "
-"accetta un riferimento come parametro.\n"
-"* In alternativa, `main` può passare un clone di `name` nella prima chiamata (`name.clone()`).\n"
-"* Rust rende più difficile del C++ creare copie inavvertitamente rendendo la semantica di "
-"spostamento l'impostazione predefinita e costringendo i programmatori a rendere espliciti i cloni."
+"* Con la prima chiamata a `say_hello`, `main` rinuncia alla proprietà di "
+"`name`. Successivamente, `name` non può più essere utilizzato all'interno di "
+"`main`.\n"
+"* La memoria heap allocata per `name` verrà liberata alla fine della "
+"funzione `say_hello`.\n"
+"* `main` può mantenere la proprietà se passa `name` come riferimento "
+"(`&name`) e se `say_hello` accetta un riferimento come parametro.\n"
+"* In alternativa, `main` può passare un clone di `name` nella prima chiamata "
+"(`name.clone()`).\n"
+"* Rust rende più difficile del C++ creare copie inavvertitamente rendendo la "
+"semantica di spostamento l'impostazione predefinita e costringendo i "
+"programmatori a rendere espliciti i cloni."
#: src/ownership/copy-clone.md:1
#, fuzzy
@@ -4590,10 +5111,11 @@ msgstr "# Copia e clonazione"
#: src/ownership/copy-clone.md:3
#, fuzzy
-msgid "While move semantics are the default, certain types are copied by default:"
+msgid ""
+"While move semantics are the default, certain types are copied by default:"
msgstr ""
-"Sebbene la semantica di spostamento sia l'impostazione predefinita, alcuni tipi vengono copiati "
-"per impostazione predefinita:"
+"Sebbene la semantica di spostamento sia l'impostazione predefinita, alcuni "
+"tipi vengono copiati per impostazione predefinita:"
#: src/ownership/copy-clone.md:5
msgid ""
@@ -4615,7 +5137,9 @@ msgstr "Questi tipi implementano il tratto `Copy`."
#: src/ownership/copy-clone.md:16
#, fuzzy
msgid "You can opt-in your own types to use copy semantics:"
-msgstr "Puoi acconsentire esplicitamente ai tuoi tipi per utilizzare la semantica della copia:"
+msgstr ""
+"Puoi acconsentire esplicitamente ai tuoi tipi per utilizzare la semantica "
+"della copia:"
#: src/ownership/copy-clone.md:18
msgid ""
@@ -4649,17 +5173,20 @@ msgstr "Copiare e clonare non sono la stessa cosa:"
#: src/ownership/copy-clone.md:37
#, fuzzy
msgid ""
-"* Copying refers to bitwise copies of memory regions and does not work on arbitrary objects.\n"
-"* Copying does not allow for custom logic (unlike copy constructors in C++).\n"
-"* Cloning is a more general operation and also allows for custom behavior by implementing the "
-"`Clone` trait.\n"
+"* Copying refers to bitwise copies of memory regions and does not work on "
+"arbitrary objects.\n"
+"* Copying does not allow for custom logic (unlike copy constructors in C+"
+"+).\n"
+"* Cloning is a more general operation and also allows for custom behavior by "
+"implementing the `Clone` trait.\n"
"* Copying does not work on types that implement the `Drop` trait."
msgstr ""
-"* La copia si riferisce a copie bit per bit di aree di memoria e non funziona su oggetti "
-"arbitrari.\n"
-"* La copia non consente la logica personalizzata (a differenza dei costruttori di copia in C++).\n"
-"* La clonazione è un'operazione più generale e consente anche un comportamento personalizzato "
-"implementando il tratto `Clone`.\n"
+"* La copia si riferisce a copie bit per bit di aree di memoria e non "
+"funziona su oggetti arbitrari.\n"
+"* La copia non consente la logica personalizzata (a differenza dei "
+"costruttori di copia in C++).\n"
+"* La clonazione è un'operazione più generale e consente anche un "
+"comportamento personalizzato implementando il tratto `Clone`.\n"
"* La copia non funziona sui tipi che implementano il tratto `Drop`."
#: src/ownership/copy-clone.md:42 src/ownership/lifetimes-function-calls.md:29
@@ -4670,29 +5197,30 @@ msgstr "Nell'esempio precedente, prova quanto segue:"
#: src/ownership/copy-clone.md:44
#, fuzzy
msgid ""
-"* Add a `String` field to `struct Point`. It will not compile because `String` is not a `Copy` "
-"type.\n"
-"* Remove `Copy` from the `derive` attribute. The compiler error is now in the `println!` for "
-"`p1`.\n"
+"* Add a `String` field to `struct Point`. It will not compile because "
+"`String` is not a `Copy` type.\n"
+"* Remove `Copy` from the `derive` attribute. The compiler error is now in "
+"the `println!` for `p1`.\n"
"* Show that it works if you clone `p1` instead."
msgstr ""
-"* Aggiungi un campo `String` a `struct Point`. Non verrà compilato perché `String` non è un tipo "
-"`Copy`.\n"
-"* Rimuovi `Copy` dall'attributo `derive`. L'errore del compilatore è ora in `println!` per `p1`.\n"
+"* Aggiungi un campo `String` a `struct Point`. Non verrà compilato perché "
+"`String` non è un tipo `Copy`.\n"
+"* Rimuovi `Copy` dall'attributo `derive`. L'errore del compilatore è ora in "
+"`println!` per `p1`.\n"
"* Dimostra che funziona se invece cloni `p1`."
#: src/ownership/copy-clone.md:48
#, fuzzy
msgid ""
-"If students ask about `derive`, it is sufficient to say that this is a way to generate code in "
-"Rust\n"
-"at compile time. In this case the default implementations of `Copy` and `Clone` traits are "
-"generated."
+"If students ask about `derive`, it is sufficient to say that this is a way "
+"to generate code in Rust\n"
+"at compile time. In this case the default implementations of `Copy` and "
+"`Clone` traits are generated."
msgstr ""
-"Se gli studenti chiedono informazioni su `derive`, è sufficiente dire che questo è un modo per "
-"generare codice in Rust\n"
-"in fase di compilazione. In questo caso vengono generate le implementazioni predefinite dei tratti "
-"`Copy` e `Clone`."
+"Se gli studenti chiedono informazioni su `derive`, è sufficiente dire che "
+"questo è un modo per generare codice in Rust\n"
+"in fase di compilazione. In questo caso vengono generate le implementazioni "
+"predefinite dei tratti `Copy` e `Clone`."
#: src/ownership/borrowing.md:1
#, fuzzy
@@ -4705,7 +5233,8 @@ msgid ""
"Instead of transferring ownership when calling a function, you can let a\n"
"function _borrow_ the value:"
msgstr ""
-"Invece di trasferire la proprietà quando chiami una funzione, puoi lasciare che a\n"
+"Invece di trasferire la proprietà quando chiami una funzione, puoi lasciare "
+"che a\n"
"funzione _prende in prestito_ il valore:"
#: src/ownership/borrowing.md:6
@@ -4733,7 +5262,8 @@ msgid ""
"* The `add` function _borrows_ two points and returns a new point.\n"
"* The caller retains ownership of the inputs."
msgstr ""
-"* La funzione `add` _prende in prestito_ due punti e restituisce un nuovo punto.\n"
+"* La funzione `add` _prende in prestito_ due punti e restituisce un nuovo "
+"punto.\n"
"* Il chiamante mantiene la proprietà degli ingressi."
#: src/ownership/borrowing.md:27
@@ -4743,10 +5273,11 @@ msgstr "Note sui resi dello stack:"
#: src/ownership/borrowing.md:28
msgid ""
-"* Demonstrate that the return from `add` is cheap because the compiler can eliminate the copy "
-"operation. Change the above code to print stack addresses and run it on the [Playground]. In the "
-"\"DEBUG\" optimization level, the addresses should change, while they stay the same when changing "
-"to the \"RELEASE\" setting:\n"
+"* Demonstrate that the return from `add` is cheap because the compiler can "
+"eliminate the copy operation. Change the above code to print stack addresses "
+"and run it on the [Playground]. In the \"DEBUG\" optimization level, the "
+"addresses should change, while they stay the same when changing to the "
+"\"RELEASE\" setting:\n"
"\n"
" ```rust,editable\n"
" #[derive(Debug)]\n"
@@ -4767,9 +5298,10 @@ msgid ""
" }\n"
" ```\n"
"* The Rust compiler can do return value optimization (RVO).\n"
-"* In C++, copy elision has to be defined in the language specification because constructors can "
-"have side effects. In Rust, this is not an issue at all. If RVO did not happen, Rust will always "
-"performs a simple and efficient `memcpy` copy."
+"* In C++, copy elision has to be defined in the language specification "
+"because constructors can have side effects. In Rust, this is not an issue at "
+"all. If RVO did not happen, Rust will always perform a simple and efficient "
+"`memcpy` copy."
msgstr ""
#: src/ownership/shared-unique-borrows.md:1
@@ -4780,7 +5312,8 @@ msgstr "# Prestiti condivisi e unici"
#: src/ownership/shared-unique-borrows.md:3
#, fuzzy
msgid "Rust puts constraints on the ways you can borrow values:"
-msgstr "Rust pone dei vincoli sui modi in cui puoi prendere in prestito i valori:"
+msgstr ""
+"Rust pone dei vincoli sui modi in cui puoi prendere in prestito i valori:"
#: src/ownership/shared-unique-borrows.md:5
#, fuzzy
@@ -4812,21 +5345,22 @@ msgstr ""
#: src/ownership/shared-unique-borrows.md:25
#, fuzzy
msgid ""
-"* The above code does not compile because `a` is borrowed as mutable (through `c`) and as "
-"immutable (through `b`) at the same time.\n"
-"* Move the `println!` statement for `b` before the scope that introduces `c` to make the code "
-"compile.\n"
-"* After that change, the compiler realizes that `b` is only ever used before the new mutable "
-"borrow of `a` through `c`. This is a feature of the borrow checker called \"non-lexical "
-"lifetimes\"."
+"* The above code does not compile because `a` is borrowed as mutable "
+"(through `c`) and as immutable (through `b`) at the same time.\n"
+"* Move the `println!` statement for `b` before the scope that introduces `c` "
+"to make the code compile.\n"
+"* After that change, the compiler realizes that `b` is only ever used before "
+"the new mutable borrow of `a` through `c`. This is a feature of the borrow "
+"checker called \"non-lexical lifetimes\"."
msgstr ""
-"* Il codice precedente non viene compilato perché `a` è preso in prestito come mutabile "
-"(attraverso `c`) e come immutabile (attraverso `b`) allo stesso tempo.\n"
-"* Sposta l'istruzione `println!` per `b` prima dell'ambito che introduce `c` per far compilare il "
-"codice.\n"
-"* Dopo tale modifica, il compilatore si rende conto che `b` è sempre e solo usato prima del nuovo "
-"prestito mutabile da `a` a `c`. Questa è una caratteristica del controllo del prestito chiamata "
-"\"vita non lessicale\"."
+"* Il codice precedente non viene compilato perché `a` è preso in prestito "
+"come mutabile (attraverso `c`) e come immutabile (attraverso `b`) allo "
+"stesso tempo.\n"
+"* Sposta l'istruzione `println!` per `b` prima dell'ambito che introduce `c` "
+"per far compilare il codice.\n"
+"* Dopo tale modifica, il compilatore si rende conto che `b` è sempre e solo "
+"usato prima del nuovo prestito mutabile da `a` a `c`. Questa è una "
+"caratteristica del controllo del prestito chiamata \"vita non lessicale\"."
#: src/ownership/lifetimes.md:1
#, fuzzy
@@ -4840,14 +5374,20 @@ msgstr "Un valore preso in prestito ha una _durata_:"
#: src/ownership/lifetimes.md:5
msgid ""
-"* The lifetime can be elided: `add(p1: &Point, p2: &Point) -> Point`.\n"
+"* The lifetime can be implicit: `add(p1: &Point, p2: &Point) -> Point`.\n"
"* Lifetimes can also be explicit: `&'a Point`, `&'document str`.\n"
"* Read `&'a Point` as \"a borrowed `Point` which is valid for at least the\n"
" lifetime `a`\".\n"
-"* Lifetimes are always inferred by the compiler: you cannot assign a lifetime\n"
+"* Lifetimes are always inferred by the compiler: you cannot assign a "
+"lifetime\n"
" yourself.\n"
-" * Lifetime annotations create constraints; the compiler verifies that there is\n"
-" a valid solution."
+" * Lifetime annotations create constraints; the compiler verifies that "
+"there is\n"
+" a valid solution.\n"
+"* Lifetimes for function arguments and return values must be fully "
+"specified,\n"
+" but Rust allows lifetimes to be elided in most cases with [a few simple\n"
+" rules](https://doc.rust-lang.org/nomicon/lifetime-elision.html)."
msgstr ""
#: src/ownership/lifetimes-function-calls.md:1
@@ -4857,10 +5397,12 @@ msgstr "# Durata delle chiamate di funzione"
#: src/ownership/lifetimes-function-calls.md:3
#, fuzzy
-msgid "In addition to borrowing its arguments, a function can return a borrowed value:"
+msgid ""
+"In addition to borrowing its arguments, a function can return a borrowed "
+"value:"
msgstr ""
-"Oltre a prendere in prestito i suoi argomenti, una funzione può restituire un valore preso in "
-"prestito:"
+"Oltre a prendere in prestito i suoi argomenti, una funzione può restituire "
+"un valore preso in prestito:"
#: src/ownership/lifetimes-function-calls.md:5
msgid ""
@@ -4892,14 +5434,16 @@ msgid ""
msgstr ""
"* `'a` è un parametro generico, viene dedotto dal compilatore.\n"
"* Le durate iniziano con `'` e `'a` è un tipico nome predefinito.\n"
-"* Leggi `&'a Point` come \"un `Punto` preso in prestito che è valido almeno per il\n"
+"* Leggi `&'a Point` come \"un `Punto` preso in prestito che è valido almeno "
+"per il\n"
" vita `a`\".\n"
-" * La parte _almeno_ è importante quando i parametri si trovano in ambiti diversi."
+" * La parte _almeno_ è importante quando i parametri si trovano in ambiti "
+"diversi."
#: src/ownership/lifetimes-function-calls.md:31
msgid ""
-"* Move the declaration of `p2` and `p3` into a a new scope (`{ ... }`), resulting in the following "
-"code:\n"
+"* Move the declaration of `p2` and `p3` into a new scope (`{ ... }`), "
+"resulting in the following code:\n"
" ```rust,ignore\n"
" #[derive(Debug)]\n"
" struct Point(i32, i32);\n"
@@ -4920,15 +5464,17 @@ msgid ""
" ```\n"
" Note how this does not compile since `p3` outlives `p2`.\n"
"\n"
-"* Reset the workspace and change the function signature to `fn left_most<'a, 'b>(p1: &'a Point, "
-"p2: &'a Point) -> &'b Point`. This will not compile because the relationship between the lifetimes "
-"`'a` and `'b` is unclear.\n"
+"* Reset the workspace and change the function signature to `fn left_most<'a, "
+"'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`. This will not compile "
+"because the relationship between the lifetimes `'a` and `'b` is unclear.\n"
"* Another way to explain it:\n"
-" * Two references to two values are borrowed by a function and the function returns\n"
+" * Two references to two values are borrowed by a function and the function "
+"returns\n"
" another reference.\n"
-" * It must have come from one of those two inputs (or from a global variable).\n"
-" * Which one is it? The compiler needs to to know, so at the call site the returned reference is "
-"not used\n"
+" * It must have come from one of those two inputs (or from a global "
+"variable).\n"
+" * Which one is it? The compiler needs to know, so at the call site the "
+"returned reference is not used\n"
" for longer than a variable from where the reference came from."
msgstr ""
@@ -4939,8 +5485,11 @@ msgstr "# Durata nelle strutture dati"
#: src/ownership/lifetimes-data-structures.md:3
#, fuzzy
-msgid "If a data type stores borrowed data, it must be annotated with a lifetime:"
-msgstr "Se un tipo di dati memorizza dati presi in prestito, deve essere annotato con una durata:"
+msgid ""
+"If a data type stores borrowed data, it must be annotated with a lifetime:"
+msgstr ""
+"Se un tipo di dati memorizza dati presi in prestito, deve essere annotato "
+"con una durata:"
#: src/ownership/lifetimes-data-structures.md:5
msgid ""
@@ -4953,7 +5502,8 @@ msgid ""
"}\n"
"\n"
"fn main() {\n"
-" let text = String::from(\"The quick brown fox jumps over the lazy dog.\");\n"
+" let text = String::from(\"The quick brown fox jumps over the lazy dog."
+"\");\n"
" let fox = Highlight(&text[4..19]);\n"
" let dog = Highlight(&text[35..43]);\n"
" // erase(text);\n"
@@ -4966,27 +5516,34 @@ msgstr ""
#: src/ownership/lifetimes-data-structures.md:25
#, fuzzy
msgid ""
-"* In the above example, the annotation on `Highlight` enforces that the data underlying the "
-"contained `&str` lives at least as long as any instance of `Highlight` that uses that data.\n"
-"* If `text` is consumed before the end of the lifetime of `fox` (or `dog`), the borrow checker "
-"throws an error.\n"
-"* Types with borrowed data force users to hold on to the original data. This can be useful for "
-"creating lightweight views, but it generally makes them somewhat harder to use.\n"
+"* In the above example, the annotation on `Highlight` enforces that the data "
+"underlying the contained `&str` lives at least as long as any instance of "
+"`Highlight` that uses that data.\n"
+"* If `text` is consumed before the end of the lifetime of `fox` (or `dog`), "
+"the borrow checker throws an error.\n"
+"* Types with borrowed data force users to hold on to the original data. This "
+"can be useful for creating lightweight views, but it generally makes them "
+"somewhat harder to use.\n"
"* When possible, make data structures own their data directly.\n"
-"* Some structs with multiple references inside can have more than one lifetime annotation. This "
-"can be necessary if there is a need to describe lifetime relationships between the references "
-"themselves, in addition to the lifetime of the struct itself. Those are very advanced use cases."
+"* Some structs with multiple references inside can have more than one "
+"lifetime annotation. This can be necessary if there is a need to describe "
+"lifetime relationships between the references themselves, in addition to the "
+"lifetime of the struct itself. Those are very advanced use cases."
msgstr ""
-"* Nell'esempio precedente, l'annotazione su \"Highlight\" impone che i dati sottostanti a \"&str\" "
-"contenuti durino almeno quanto qualsiasi istanza di \"Highlight\" che utilizza quei dati.\n"
-"* Se `text` viene consumato prima della fine della vita di `fox` (o `dog`), il controllo del "
-"prestito genera un errore.\n"
-"* I tipi con dati presi in prestito costringono gli utenti a conservare i dati originali. Questo "
-"può essere utile per creare viste leggere, ma in genere le rende un po' più difficili da usare.\n"
-"* Quando possibile, fare in modo che le strutture dati possiedano direttamente i propri dati.\n"
-"* Alcune strutture con più riferimenti all'interno possono avere più di un'annotazione di durata. "
-"Ciò può essere necessario se è necessario descrivere le relazioni di durata tra i riferimenti "
-"stessi, oltre alla durata della struttura stessa. Questi sono casi d'uso molto avanzati."
+"* Nell'esempio precedente, l'annotazione su \"Highlight\" impone che i dati "
+"sottostanti a \"&str\" contenuti durino almeno quanto qualsiasi istanza di "
+"\"Highlight\" che utilizza quei dati.\n"
+"* Se `text` viene consumato prima della fine della vita di `fox` (o `dog`), "
+"il controllo del prestito genera un errore.\n"
+"* I tipi con dati presi in prestito costringono gli utenti a conservare i "
+"dati originali. Questo può essere utile per creare viste leggere, ma in "
+"genere le rende un po' più difficili da usare.\n"
+"* Quando possibile, fare in modo che le strutture dati possiedano "
+"direttamente i propri dati.\n"
+"* Alcune strutture con più riferimenti all'interno possono avere più di "
+"un'annotazione di durata. Ciò può essere necessario se è necessario "
+"descrivere le relazioni di durata tra i riferimenti stessi, oltre alla "
+"durata della struttura stessa. Questi sono casi d'uso molto avanzati."
#: src/exercises/day-1/afternoon.md:1
#, fuzzy
@@ -5011,16 +5568,18 @@ msgstr ""
#: src/exercises/day-1/book-library.md:1
#, fuzzy
-msgid "# Designing a Library"
-msgstr "# Progettare una libreria"
+msgid "# Storing Books"
+msgstr "# Corda"
#: src/exercises/day-1/book-library.md:3
#, fuzzy
msgid ""
-"We will learn much more about structs and the `Vec` type tomorrow. For now,\n"
+"We will learn much more about structs and the `Vec` type tomorrow. For "
+"now,\n"
"you just need to know part of its API:"
msgstr ""
-"Impareremo molto di più sulle strutture e sul tipo `Vec` domani. Per adesso,\n"
+"Impareremo molto di più sulle strutture e sul tipo `Vec` domani. Per "
+"adesso,\n"
"devi solo conoscere parte della sua API:"
#: src/exercises/day-1/book-library.md:6
@@ -5041,7 +5600,7 @@ msgstr ""
#: src/exercises/day-1/book-library.md:18
#, fuzzy
msgid ""
-"Use this to create a library application. Copy the code below to\n"
+"Use this to model a library's book collection. Copy the code below to\n"
" and update the types to make it compile:"
msgstr ""
"Usalo per creare un'applicazione libreria. Copia il codice qui sotto per\n"
@@ -5093,7 +5652,8 @@ msgid ""
" //}\n"
"\n"
" //fn print_books(self) {\n"
-" // todo!(\"Iterate over `self.books` and each book's title and year\")\n"
+" // todo!(\"Iterate over `self.books` and each book's title and "
+"year\")\n"
" //}\n"
"\n"
" //fn oldest_book(self) -> Option<&Book> {\n"
@@ -5108,12 +5668,15 @@ msgid ""
"fn main() {\n"
" let library = Library::new();\n"
"\n"
-" //println!(\"The library is empty: {}\", library.is_empty());\n"
+" //println!(\"The library is empty: library.is_empty() -> {}\", library."
+"is_empty());\n"
" //\n"
" //library.add_book(Book::new(\"Lord of the Rings\", 1954));\n"
-" //library.add_book(Book::new(\"Alice's Adventures in Wonderland\", 1865));\n"
+" //library.add_book(Book::new(\"Alice's Adventures in Wonderland\", "
+"1865));\n"
" //\n"
-" //println!(\"The library is no longer empty: {}\", library.is_empty());\n"
+" //println!(\"The library is no longer empty: library.is_empty() -> {}\", "
+"library.is_empty());\n"
" //\n"
" //\n"
" //library.print_books();\n"
@@ -5144,12 +5707,15 @@ msgstr "# Iteratori e proprietà"
msgid ""
"The ownership model of Rust affects many APIs. An example of this is the\n"
"[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) and\n"
-"[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator.html)\n"
+"[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator."
+"html)\n"
"traits."
msgstr ""
-"Il modello di proprietà di Rust influisce su molte API. Un esempio di questo è il\n"
+"Il modello di proprietà di Rust influisce su molte API. Un esempio di questo "
+"è il\n"
"[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) e\n"
-"[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator.html)\n"
+"[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator."
+"html)\n"
"tratti."
#: src/exercises/day-1/iterators-and-ownership.md:8
@@ -5160,12 +5726,15 @@ msgstr "## `Iteratore`"
#: src/exercises/day-1/iterators-and-ownership.md:10
#, fuzzy
msgid ""
-"Traits are like interfaces: they describe behavior (methods) for a type. The\n"
-"`Iterator` trait simply says that you can call `next` until you get `None` back:"
+"Traits are like interfaces: they describe behavior (methods) for a type. "
+"The\n"
+"`Iterator` trait simply says that you can call `next` until you get `None` "
+"back:"
msgstr ""
-"I tratti sono come interfacce: descrivono il comportamento (metodi) per un tipo. IL\n"
-"Il tratto \"Iterator\" dice semplicemente che puoi chiamare \"next\" fino a quando non ottieni "
-"\"Nessuno\":"
+"I tratti sono come interfacce: descrivono il comportamento (metodi) per un "
+"tipo. IL\n"
+"Il tratto \"Iterator\" dice semplicemente che puoi chiamare \"next\" fino a "
+"quando non ottieni \"Nessuno\":"
#: src/exercises/day-1/iterators-and-ownership.md:13
msgid ""
@@ -5200,7 +5769,9 @@ msgstr ""
#: src/exercises/day-1/iterators-and-ownership.md:34
#, fuzzy
msgid "What is the type returned by the iterator? Test your answer here:"
-msgstr "Qual è il tipo restituito dall'iteratore? Metti alla prova la tua risposta qui:"
+msgstr ""
+"Qual è il tipo restituito dall'iteratore? Metti alla prova la tua risposta "
+"qui:"
#: src/exercises/day-1/iterators-and-ownership.md:36
msgid ""
@@ -5229,10 +5800,13 @@ msgstr "## `IntoIterator`"
#, fuzzy
msgid ""
"The `Iterator` trait tells you how to _iterate_ once you have created an\n"
-"iterator. The related trait `IntoIterator` tells you how to create the iterator:"
+"iterator. The related trait `IntoIterator` tells you how to create the "
+"iterator:"
msgstr ""
-"Il tratto `Iterator` ti dice come _iterare_ una volta che hai creato un file\n"
-"iteratore. Il tratto correlato `IntoIterator` ti dice come creare l'iteratore:"
+"Il tratto `Iterator` ti dice come _iterare_ una volta che hai creato un "
+"file\n"
+"iteratore. Il tratto correlato `IntoIterator` ti dice come creare "
+"l'iteratore:"
#: src/exercises/day-1/iterators-and-ownership.md:53
msgid ""
@@ -5270,7 +5844,8 @@ msgid ""
"Note that `IntoIter` and `Item` are linked: the iterator must have the same\n"
"`Item` type, which means that it returns `Option`"
msgstr ""
-"Nota che \"IntoIter\" e \"Item\" sono collegati: l'iteratore deve avere lo stesso\n"
+"Nota che \"IntoIter\" e \"Item\" sono collegati: l'iteratore deve avere lo "
+"stesso\n"
"Tipo `Item`, che significa che restituisce `Option`"
#: src/exercises/day-1/iterators-and-ownership.md:71
@@ -5282,7 +5857,8 @@ msgstr "Come prima, qual è il tipo restituito dall'iteratore?"
msgid ""
"```rust,editable,compile_fail\n"
"fn main() {\n"
-" let v: Vec = vec![String::from(\"foo\"), String::from(\"bar\")];\n"
+" let v: Vec = vec![String::from(\"foo\"), String::"
+"from(\"bar\")];\n"
" let mut iter = v.into_iter();\n"
"\n"
" let v0: Option<..> = iter.next();\n"
@@ -5299,11 +5875,13 @@ msgstr "## cicli `for`"
#: src/exercises/day-1/iterators-and-ownership.md:85
#, fuzzy
msgid ""
-"Now that we know both `Iterator` and `IntoIterator`, we can build `for` loops.\n"
+"Now that we know both `Iterator` and `IntoIterator`, we can build `for` "
+"loops.\n"
"They call `into_iter()` on an expression and iterates over the resulting\n"
"iterator:"
msgstr ""
-"Ora che conosciamo sia `Iterator` che `IntoIterator`, possiamo creare cicli `for`.\n"
+"Ora che conosciamo sia `Iterator` che `IntoIterator`, possiamo creare cicli "
+"`for`.\n"
"Chiamano `into_iter()` su un'espressione e itera sul risultato\n"
"iteratore:"
@@ -5311,7 +5889,8 @@ msgstr ""
msgid ""
"```rust,editable\n"
"fn main() {\n"
-" let v: Vec = vec![String::from(\"foo\"), String::from(\"bar\")];\n"
+" let v: Vec = vec![String::from(\"foo\"), String::"
+"from(\"bar\")];\n"
"\n"
" for word in &v {\n"
" println!(\"word: {word}\");\n"
@@ -5332,22 +5911,23 @@ msgstr "Qual è il tipo di \"parola\" in ogni ciclo?"
#: src/exercises/day-1/iterators-and-ownership.md:105
#, fuzzy
msgid ""
-"Experiment with the code above and then consult the documentation for [`impl\n"
+"Experiment with the code above and then consult the documentation for "
+"[`impl\n"
"IntoIterator for\n"
-"&Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-"
-"%26%27a%20Vec%3CT%2C%20A%3E)\n"
+"&Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-"
+"IntoIterator-for-%26'a+Vec%3CT,+A%3E)\n"
"and [`impl IntoIterator for\n"
-"Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-"
-"Vec%3CT%2C%20A%3E)\n"
+"Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-"
+"for-Vec%3CT,+A%3E)\n"
"to check your answers."
msgstr ""
"Sperimenta con il codice sopra e poi consulta la documentazione per [`impl\n"
"IntoIteratore per\n"
-"&Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-"
-"%26%27a%20Vec%3CT%2C%20A%3E)\n"
+"&Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-"
+"IntoIterator-for-%26%27a%20Vec%3CT%2C%20A%3E)\n"
"e [`impl IntoIterator for\n"
-"Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-"
-"Vec%3CT%2C%20A%3E)\n"
+"Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-"
+"for-Vec%3CT%2C%20A%3E)\n"
"per controllare le tue risposte."
#: src/welcome-day-2.md:1
@@ -5358,7 +5938,8 @@ msgstr "# Benvenuto al giorno 2"
#: src/welcome-day-2.md:3
#, fuzzy
msgid "Now that we have seen a fair amount of Rust, we will continue with:"
-msgstr "Ora che abbiamo visto una discreta quantità di ruggine, continueremo con:"
+msgstr ""
+"Ora che abbiamo visto una discreta quantità di ruggine, continueremo con:"
#: src/welcome-day-2.md:5
#, fuzzy
@@ -5367,10 +5948,12 @@ msgid ""
"\n"
"* Pattern matching: destructuring enums, structs, and arrays.\n"
"\n"
-"* Control flow constructs: `if`, `if let`, `while`, `while let`, `break`, and\n"
+"* Control flow constructs: `if`, `if let`, `while`, `while let`, `break`, "
+"and\n"
" `continue`.\n"
"\n"
-"* The Standard Library: `String`, `Option` and `Result`, `Vec`, `HashMap`, `Rc`\n"
+"* The Standard Library: `String`, `Option` and `Result`, `Vec`, `HashMap`, "
+"`Rc`\n"
" and `Arc`.\n"
"\n"
"* Modules: visibility, paths, and filesystem hierarchy."
@@ -5379,10 +5962,12 @@ msgstr ""
"\n"
"* Pattern matching: destrutturazione di enum, struct e array.\n"
"\n"
-"* Costrutti del flusso di controllo: `if`, `if let`, `while`, `while let`, `break` e\n"
+"* Costrutti del flusso di controllo: `if`, `if let`, `while`, `while let`, "
+"`break` e\n"
" `continua`.\n"
"\n"
-"* La libreria standard: `String`, `Option` e `Result`, `Vec`, `HashMap`, `Rc`\n"
+"* La libreria standard: `String`, `Option` e `Result`, `Vec`, `HashMap`, "
+"`Rc`\n"
" e \"Arco\".\n"
"\n"
"* Moduli: visibilità, percorsi e gerarchia del filesystem."
@@ -5424,27 +6009,30 @@ msgid ""
"```"
msgstr ""
-#: src/structs.md:29
+#: src/structs.md:31 src/enums.md:34 src/enums/sizes.md:29 src/methods.md:30
+#: src/methods/example.md:46 src/pattern-matching.md:25
+#: src/pattern-matching/match-guards.md:22 src/control-flow/blocks.md:43
#, fuzzy
-msgid ""
-"\n"
-"Key Points: "
-msgstr ""
-"\n"
-"Punti chiave:"
+msgid "Key Points:"
+msgstr "Punti chiave:"
-#: src/structs.md:32
+#: src/structs.md:33
msgid ""
"* Structs work like in C or C++.\n"
" * Like in C++, and unlike in C, no typedef is needed to define a type.\n"
" * Unlike in C++, there is no inheritance between structs.\n"
-"* Methods are defined in an `impl` block, which we will see in following slides.\n"
-"* This may be a good time to let people know there are different types of structs. \n"
-" * Zero-sized structs `e.g., struct Foo;` might be used when implementing a trait on some type "
-"but don’t have any data that you want to store in the value itself. \n"
-" * The next slide will introduce Tuple structs, used when the field names are not important.\n"
-"* The syntax `..peter` allows us to copy the majority of the fields from the old struct without "
-"having to explicitly type it all out. It must always be the last element."
+"* Methods are defined in an `impl` block, which we will see in following "
+"slides.\n"
+"* This may be a good time to let people know there are different types of "
+"structs. \n"
+" * Zero-sized structs `e.g., struct Foo;` might be used when implementing a "
+"trait on some type but don’t have any data that you want to store in the "
+"value itself. \n"
+" * The next slide will introduce Tuple structs, used when the field names "
+"are not important.\n"
+"* The syntax `..peter` allows us to copy the majority of the fields from the "
+"old struct without having to explicitly type it all out. It must always be "
+"the last element."
msgstr ""
#: src/structs/tuple-structs.md:1
@@ -5455,7 +6043,9 @@ msgstr "# Strutture di tuple"
#: src/structs/tuple-structs.md:3
#, fuzzy
msgid "If the field names are unimportant, you can use a tuple struct:"
-msgstr "Se i nomi dei campi non sono importanti, puoi utilizzare una struttura di tupla:"
+msgstr ""
+"Se i nomi dei campi non sono importanti, puoi utilizzare una struttura di "
+"tupla:"
#: src/structs/tuple-structs.md:5
msgid ""
@@ -5472,7 +6062,8 @@ msgstr ""
#: src/structs/tuple-structs.md:14
#, fuzzy
msgid "This is often used for single-field wrappers (called newtypes):"
-msgstr "Questo è spesso usato per i wrapper a campo singolo (chiamati newtypes):"
+msgstr ""
+"Questo è spesso usato per i wrapper a campo singolo (chiamati newtypes):"
#: src/structs/tuple-structs.md:16
msgid ""
@@ -5499,26 +6090,30 @@ msgstr ""
#: src/structs/tuple-structs.md:37
#, fuzzy
msgid ""
-"* Newtypes are a great way to encode additional information about the value in a primitive type, "
-"for example:\n"
+"* Newtypes are a great way to encode additional information about the value "
+"in a primitive type, for example:\n"
" * The number is measured in some units: `Newtons` in the example above.\n"
-" * The value passed some validation when it was created, so you no longer have to validate it "
-"again at every use: 'PhoneNumber(String)` or `OddNumber(u32)`.\n"
-"* Demonstrate how to add a `f64` value to a `Newtons` type by accessing the single field in the "
-"newtype.\n"
-" * Rust generally doesn’t like inexplicit things, like automatic unwrapping or for instance "
-"using booleans as integers.\n"
-" * Operator overloading is discussed on Day 3 (generics). "
+" * The value passed some validation when it was created, so you no longer "
+"have to validate it again at every use: 'PhoneNumber(String)` or "
+"`OddNumber(u32)`.\n"
+"* Demonstrate how to add a `f64` value to a `Newtons` type by accessing the "
+"single field in the newtype.\n"
+" * Rust generally doesn’t like inexplicit things, like automatic "
+"unwrapping or for instance using booleans as integers.\n"
+" * Operator overloading is discussed on Day 3 (generics).\n"
+"* The example is a subtle reference to the [Mars Climate Orbiter](https://en."
+"wikipedia.org/wiki/Mars_Climate_Orbiter) failure."
msgstr ""
-"* I newtype sono un ottimo modo per codificare informazioni aggiuntive sul valore in un tipo "
-"primitivo, ad esempio:\n"
+"* I newtype sono un ottimo modo per codificare informazioni aggiuntive sul "
+"valore in un tipo primitivo, ad esempio:\n"
" * Il numero è misurato in alcune unità: `Newton` nell'esempio precedente.\n"
-" * Il valore ha superato una certa convalida quando è stato creato, quindi non è più necessario "
-"convalidarlo nuovamente a ogni utilizzo: 'Numero di telefono (Stringa)` o `Numero dispari (u32)`.\n"
-"* Dimostra come aggiungere un valore `f64` a un tipo `Newtons` accedendo al singolo campo nel "
-"newtype.\n"
-" * A Rust in genere non piacciono le cose inesplicite, come l'unwrapping automatico o, ad "
-"esempio, l'uso di valori booleani come numeri interi.\n"
+" * Il valore ha superato una certa convalida quando è stato creato, quindi "
+"non è più necessario convalidarlo nuovamente a ogni utilizzo: 'Numero di "
+"telefono (Stringa)` o `Numero dispari (u32)`.\n"
+"* Dimostra come aggiungere un valore `f64` a un tipo `Newtons` accedendo al "
+"singolo campo nel newtype.\n"
+" * A Rust in genere non piacciono le cose inesplicite, come l'unwrapping "
+"automatico o, ad esempio, l'uso di valori booleani come numeri interi.\n"
" * Il sovraccarico degli operatori viene discusso il giorno 3 (generici)."
#: src/structs/field-shorthand.md:1
@@ -5559,8 +6154,8 @@ msgstr ""
#: src/structs/field-shorthand.md:27
msgid ""
-"* The `new` function could be written using `Self` as a type, as it is interchangeable with the "
-"struct type name\n"
+"* The `new` function could be written using `Self` as a type, as it is "
+"interchangeable with the struct type name\n"
"\n"
" ```rust,editable\n"
" #[derive(Debug)]\n"
@@ -5574,8 +6169,8 @@ msgid ""
" }\n"
" }\n"
" ``` \n"
-"* Implement the `Default` trait for the struct. Define some fields and use the default values for "
-"the other fields.\n"
+"* Implement the `Default` trait for the struct. Define some fields and use "
+"the default values for the other fields.\n"
"\n"
" ```rust,editable\n"
" #[derive(Debug)]\n"
@@ -5603,8 +6198,8 @@ msgid ""
" ```\n"
"\n"
"* Methods are defined in the `impl` block.\n"
-"* Use struct update syntax to define a new structure using `peter`. Note that the variable `peter` "
-"will no longer be accessible afterwards.\n"
+"* Use struct update syntax to define a new structure using `peter`. Note "
+"that the variable `peter` will no longer be accessible afterwards.\n"
"* Use `{:#?}` when printing structs to request the `Debug` representation."
msgstr ""
@@ -5626,6 +6221,7 @@ msgstr ""
msgid ""
"```rust,editable\n"
"fn generate_random_number() -> i32 {\n"
+" // Implementation based on https://xkcd.com/221/\n"
" 4 // Chosen by fair dice roll. Guaranteed to be random.\n"
"}\n"
"\n"
@@ -5650,34 +6246,32 @@ msgid ""
"```"
msgstr ""
-#: src/enums.md:33 src/enums/sizes.md:29 src/methods.md:30 src/methods/example.md:46
-#: src/pattern-matching.md:25 src/pattern-matching/match-guards.md:22 src/control-flow/blocks.md:42
-#, fuzzy
-msgid "Key Points:"
-msgstr "Punti chiave:"
-
-#: src/enums.md:35
+#: src/enums.md:36
#, fuzzy
msgid ""
"* Enumerations allow you to collect a set of values under one type\n"
-"* This page offers an enum type `CoinFlip` with two variants `Heads` and `Tail`. You might note "
-"the namespace when using variants.\n"
+"* This page offers an enum type `CoinFlip` with two variants `Heads` and "
+"`Tails`. You might note the namespace when using variants.\n"
"* This might be a good time to compare Structs and Enums:\n"
-" * In both, you can have a simple version without fields (unit struct) or one with different "
-"types of fields (variant payloads). \n"
+" * In both, you can have a simple version without fields (unit struct) or "
+"one with different types of fields (variant payloads). \n"
" * In both, associated functions are defined within an `impl` block.\n"
-" * You could even implement the different variants of an enum with separate structs but then they "
-"wouldn’t be the same type as they would if they were all defined in an enum. "
+" * You could even implement the different variants of an enum with separate "
+"structs but then they wouldn’t be the same type as they would if they were "
+"all defined in an enum. "
msgstr ""
-"* Le enumerazioni consentono di raccogliere un insieme di valori in un unico tipo\n"
-"* Questa pagina offre un tipo di enum `CoinFlip` con due varianti `Heads` e `Tail`. Potresti "
-"notare lo spazio dei nomi quando usi le varianti.\n"
+"* Le enumerazioni consentono di raccogliere un insieme di valori in un unico "
+"tipo\n"
+"* Questa pagina offre un tipo di enum `CoinFlip` con due varianti `Heads` e "
+"`Tail`. Potresti notare lo spazio dei nomi quando usi le varianti.\n"
"* Questo potrebbe essere un buon momento per confrontare Struct ed Enum:\n"
-" * In entrambi, puoi avere una versione semplice senza campi (unit struct) o una con diversi tipi "
-"di campi (variant payload).\n"
-" * In entrambi, le funzioni associate sono definite all'interno di un blocco `impl`.\n"
-" * Potresti persino implementare le diverse varianti di un'enumerazione con strutture separate, "
-"ma non sarebbero dello stesso tipo che sarebbero se fossero tutte definite in un'enumerazione."
+" * In entrambi, puoi avere una versione semplice senza campi (unit struct) "
+"o una con diversi tipi di campi (variant payload).\n"
+" * In entrambi, le funzioni associate sono definite all'interno di un "
+"blocco `impl`.\n"
+" * Potresti persino implementare le diverse varianti di un'enumerazione con "
+"strutture separate, ma non sarebbero dello stesso tipo che sarebbero se "
+"fossero tutte definite in un'enumerazione."
#: src/enums/variant-payloads.md:1
#, fuzzy
@@ -5687,11 +6281,12 @@ msgstr "# Payload varianti"
#: src/enums/variant-payloads.md:3
#, fuzzy
msgid ""
-"You can define richer enums where the variants carry data. You can then use the\n"
+"You can define richer enums where the variants carry data. You can then use "
+"the\n"
"`match` statement to extract the data from each variant:"
msgstr ""
-"È possibile definire enumerazioni più ricche in cui le varianti contengono dati. È quindi "
-"possibile utilizzare il\n"
+"È possibile definire enumerazioni più ricche in cui le varianti contengono "
+"dati. È quindi possibile utilizzare il\n"
"istruzione `match` per estrarre i dati da ciascuna variante:"
#: src/enums/variant-payloads.md:6
@@ -5727,41 +6322,49 @@ msgstr ""
#: src/enums/variant-payloads.md:35
#, fuzzy
msgid ""
-"* The values in the enum variants can only be accessed after being pattern matched. The pattern "
-"binds references to the fields in the \"match arm\" after the `=>`.\n"
-" * The expression is matched against the patterns from top to bottom. There is no fall-through "
-"like in C or C++.\n"
-" * The match expression has a value. The value is the last expression in the match arm which was "
-"executed.\n"
-" * Starting from the top we look for what pattern matches the value then run the code following "
-"the arrow. Once we find a match, we stop. \n"
-"* Demonstrate what happens when the search is inexhaustive. Note the advantage the Rust compiler "
-"provides by confirming when all cases are handled. \n"
+"* The values in the enum variants can only be accessed after being pattern "
+"matched. The pattern binds references to the fields in the \"match arm\" "
+"after the `=>`.\n"
+" * The expression is matched against the patterns from top to bottom. There "
+"is no fall-through like in C or C++.\n"
+" * The match expression has a value. The value is the last expression in "
+"the match arm which was executed.\n"
+" * Starting from the top we look for what pattern matches the value then "
+"run the code following the arrow. Once we find a match, we stop. \n"
+"* Demonstrate what happens when the search is inexhaustive. Note the "
+"advantage the Rust compiler provides by confirming when all cases are "
+"handled. \n"
"* `match` inspects a hidden discriminant field in the `enum`.\n"
-"* It is possible to retrieve the discriminant by calling `std::mem::discriminant()`\n"
-" * This is useful, for example, if implementing `PartialEq` for structs where comparing field "
-"values doesn't affect equality.\n"
-"* `WebEvent::Click { ... }` is not exactly the same as `WebEvent::Click(Click)` with a top level "
-"`struct Click { ... }`. The inlined version cannot implement traits, for example. \n"
+"* It is possible to retrieve the discriminant by calling `std::mem::"
+"discriminant()`\n"
+" * This is useful, for example, if implementing `PartialEq` for structs "
+"where comparing field values doesn't affect equality.\n"
+"* `WebEvent::Click { ... }` is not exactly the same as `WebEvent::"
+"Click(Click)` with a top level `struct Click { ... }`. The inlined version "
+"cannot implement traits, for example. \n"
" "
msgstr ""
-"* È possibile accedere ai valori nelle varianti enum solo dopo essere stati abbinati al modello. "
-"Il modello lega i riferimenti ai campi nel \"match arm\" dopo il `=>`.\n"
-" * L'espressione viene confrontata con i modelli dall'alto verso il basso. Non c'è fall-through "
-"come in C o C++.\n"
-" * L'espressione di corrispondenza ha un valore. Il valore è l'ultima espressione nel braccio di "
-"corrispondenza che è stata eseguita.\n"
-" * Partendo dall'alto cerchiamo quale modello corrisponde al valore, quindi eseguiamo il codice "
-"seguendo la freccia. Una volta trovata una corrispondenza, ci fermiamo.\n"
-"* Dimostrare cosa succede quando la ricerca è inesauribile. Nota il vantaggio fornito dal "
-"compilatore Rust confermando quando tutti i casi vengono gestiti.\n"
+"* È possibile accedere ai valori nelle varianti enum solo dopo essere stati "
+"abbinati al modello. Il modello lega i riferimenti ai campi nel \"match "
+"arm\" dopo il `=>`.\n"
+" * L'espressione viene confrontata con i modelli dall'alto verso il basso. "
+"Non c'è fall-through come in C o C++.\n"
+" * L'espressione di corrispondenza ha un valore. Il valore è l'ultima "
+"espressione nel braccio di corrispondenza che è stata eseguita.\n"
+" * Partendo dall'alto cerchiamo quale modello corrisponde al valore, quindi "
+"eseguiamo il codice seguendo la freccia. Una volta trovata una "
+"corrispondenza, ci fermiamo.\n"
+"* Dimostrare cosa succede quando la ricerca è inesauribile. Nota il "
+"vantaggio fornito dal compilatore Rust confermando quando tutti i casi "
+"vengono gestiti.\n"
"* `match` ispeziona un campo discriminante nascosto in `enum`.\n"
-"* È possibile recuperare il discriminante chiamando `std::mem::discriminant()`\n"
-" * Ciò è utile, ad esempio, se si implementa `PartialEq` per strutture in cui il confronto dei "
-"valori dei campi non influisce sull'uguaglianza.\n"
-"* `WebEvent::Click { ... }` non è esattamente la stessa cosa di `WebEvent::Click(Click)` con una "
-"`struct Click { ... }` di primo livello. La versione inline non può implementare tratti, per "
-"esempio.\n"
+"* È possibile recuperare il discriminante chiamando `std::mem::"
+"discriminant()`\n"
+" * Ciò è utile, ad esempio, se si implementa `PartialEq` per strutture in "
+"cui il confronto dei valori dei campi non influisce sull'uguaglianza.\n"
+"* `WebEvent::Click { ... }` non è esattamente la stessa cosa di `WebEvent::"
+"Click(Click)` con una `struct Click { ... }` di primo livello. La versione "
+"inline non può implementare tratti, per esempio.\n"
" "
#: src/enums/sizes.md:1
@@ -5771,9 +6374,12 @@ msgstr "# Enum Dimensioni"
#: src/enums/sizes.md:3
#, fuzzy
-msgid "Rust enums are packed tightly, taking constraints due to alignment into account:"
+msgid ""
+"Rust enums are packed tightly, taking constraints due to alignment into "
+"account:"
msgstr ""
-"Gli enum di Rust sono imballati strettamente, tenendo conto dei vincoli dovuti all'allineamento:"
+"Gli enum di Rust sono imballati strettamente, tenendo conto dei vincoli "
+"dovuti all'allineamento:"
#: src/enums/sizes.md:5
msgid ""
@@ -5800,14 +6406,20 @@ msgstr ""
#: src/enums/sizes.md:25
#, fuzzy
-msgid "* See the [Rust Reference](https://doc.rust-lang.org/reference/type-layout.html)."
-msgstr "* Vedere il [riferimento Rust](https://doc.rust-lang.org/reference/type-layout.html)."
+msgid ""
+"* See the [Rust Reference](https://doc.rust-lang.org/reference/type-layout."
+"html)."
+msgstr ""
+"* Vedere il [riferimento Rust](https://doc.rust-lang.org/reference/type-"
+"layout.html)."
#: src/enums/sizes.md:31
msgid ""
-" * Internally Rust is using a field (discriminant) to keep track of the enum variant.\n"
+" * Internally Rust is using a field (discriminant) to keep track of the enum "
+"variant.\n"
"\n"
-" * You can control the discriminant if needed (e.g., for compatibility with C):\n"
+" * You can control the discriminant if needed (e.g., for compatibility with "
+"C):\n"
" \n"
" ```rust,editable\n"
" #[repr(u32)]\n"
@@ -5824,35 +6436,41 @@ msgid ""
" }\n"
" ```\n"
"\n"
-" Without `repr`, the discriminant type takes 2 bytes, because 10001 fits 2\n"
+" Without `repr`, the discriminant type takes 2 bytes, because 10001 fits "
+"2\n"
" bytes.\n"
"\n"
"\n"
" * Try out other types such as\n"
" \n"
" * `dbg_size!(bool)`: size 1 bytes, align: 1 bytes,\n"
-" * `dbg_size!(Option)`: size 1 bytes, align: 1 bytes (niche optimization, see below),\n"
-" * `dbg_size!(&i32)`: size 8 bytes, align: 8 bytes (on a 64-bit machine),\n"
-" * `dbg_size!(Option<&i32>)`: size 8 bytes, align: 8 bytes (null pointer optimization, see "
-"below).\n"
+" * `dbg_size!(Option)`: size 1 bytes, align: 1 bytes (niche "
+"optimization, see below),\n"
+" * `dbg_size!(&i32)`: size 8 bytes, align: 8 bytes (on a 64-bit "
+"machine),\n"
+" * `dbg_size!(Option<&i32>)`: size 8 bytes, align: 8 bytes (null pointer "
+"optimization, see below).\n"
"\n"
-" * Niche optimization: Rust will merge use unused bit patterns for the enum\n"
+" * Niche optimization: Rust will merge unused bit patterns for the enum\n"
" discriminant.\n"
"\n"
" * Null pointer optimization: For [some\n"
-" types](https://doc.rust-lang.org/std/option/#representation), Rust guarantees\n"
+" types](https://doc.rust-lang.org/std/option/#representation), Rust "
+"guarantees\n"
" that `size_of::()` equals `size_of::