diff --git a/po/pt-BR.po b/po/pt-BR.po
index c0301efd1442..417fa3d3c94a 100644
--- a/po/pt-BR.po
+++ b/po/pt-BR.po
@@ -52,8 +52,8 @@ msgstr "Executando o Cargo Localmente"
msgid "Day 1: Morning"
msgstr "Dia 1: Manhã"
-#: src/SUMMARY.md:18 src/SUMMARY.md:75 src/SUMMARY.md:128 src/SUMMARY.md:185 src/SUMMARY.md:211
-#: src/SUMMARY.md:261
+#: 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 "Bem-vindo"
@@ -131,7 +131,7 @@ msgstr "Sobrecarga"
#: 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:294
+#: src/SUMMARY.md:253 src/SUMMARY.md:275 src/SUMMARY.md:296
msgid "Exercises"
msgstr "Exercícios"
@@ -240,8 +240,9 @@ msgid "Lifetimes in Data Structures"
msgstr "Tempos de Vida em Estruturas de Dados"
#: src/SUMMARY.md:67
-msgid "Designing a Library"
-msgstr "Projetando uma Biblioteca"
+#, fuzzy
+msgid "Storing Books"
+msgstr "String"
#: src/SUMMARY.md:68
msgid "Iterators and Ownership"
@@ -727,7 +728,7 @@ msgstr ""
msgid "Debugging"
msgstr "Debugging"
-#: src/SUMMARY.md:224 src/SUMMARY.md:242
+#: src/SUMMARY.md:224 src/SUMMARY.md:244
msgid "Other Projects"
msgstr "Outros Projetos"
@@ -759,7 +760,7 @@ msgstr ""
msgid "Let's Write a UART Driver"
msgstr ""
-#: src/SUMMARY.md:234
+#: src/SUMMARY.md:235
msgid "More Traits"
msgstr "Mais Traits (Características)"
@@ -779,7 +780,7 @@ msgstr ""
msgid "Driver"
msgstr ""
-#: src/SUMMARY.md:239 src/SUMMARY.md:241
+#: src/SUMMARY.md:240 src/SUMMARY.md:242
msgid "Using It"
msgstr "Usando o Cargo"
@@ -820,7 +821,7 @@ msgstr ""
msgid "RTC Driver"
msgstr ""
-#: src/SUMMARY.md:255
+#: src/SUMMARY.md:257
msgid "Concurrency: Morning"
msgstr "Concorrência: Manhã"
@@ -872,7 +873,7 @@ msgstr "Arc"
msgid "Mutex"
msgstr "Mutex"
-#: src/SUMMARY.md:274 src/SUMMARY.md:295
+#: src/SUMMARY.md:276 src/SUMMARY.md:297
msgid "Dining Philosophers"
msgstr "Filósofos Jantando"
@@ -880,7 +881,7 @@ msgstr "Filósofos Jantando"
msgid "Multi-threaded Link Checker"
msgstr "Verificador de Links Multi-Threads"
-#: src/SUMMARY.md:277
+#: src/SUMMARY.md:279
msgid "Concurrency: Afternoon"
msgstr "Concorrência: Tarde"
@@ -896,7 +897,7 @@ msgstr ""
msgid "Futures"
msgstr ""
-#: src/SUMMARY.md:282
+#: src/SUMMARY.md:284
msgid "Runtimes"
msgstr "Tempos de Execução"
@@ -904,11 +905,11 @@ msgstr "Tempos de Execução"
msgid "Tokio"
msgstr ""
-#: src/SUMMARY.md:284
+#: src/SUMMARY.md:286
msgid "Tasks"
msgstr "Tarefas"
-#: src/SUMMARY.md:285
+#: src/SUMMARY.md:287
msgid "Async Channels"
msgstr "Canais Assíncronos"
@@ -932,75 +933,75 @@ msgstr ""
msgid "Pin"
msgstr ""
-#: src/SUMMARY.md:292
+#: src/SUMMARY.md:294
msgid "Async Traits"
msgstr "Traits (Características)"
-#: src/SUMMARY.md:293
+#: src/SUMMARY.md:295
msgid "Cancellation"
msgstr "Cancelar"
-#: src/SUMMARY.md:296
+#: src/SUMMARY.md:298
msgid "Broadcast Chat Application"
msgstr ""
-#: src/SUMMARY.md:299
+#: src/SUMMARY.md:301
msgid "Final Words"
msgstr "Palavras Finais"
-#: src/SUMMARY.md:303
+#: src/SUMMARY.md:305
msgid "Thanks!"
msgstr "Obrigado!"
-#: src/SUMMARY.md:304
+#: src/SUMMARY.md:306
msgid "Other Resources"
msgstr "Outros recursos"
-#: src/SUMMARY.md:305
+#: src/SUMMARY.md:307
msgid "Credits"
msgstr "Créditos"
-#: src/SUMMARY.md:308
+#: src/SUMMARY.md:310
msgid "Solutions"
msgstr "Soluções"
-#: src/SUMMARY.md:313
+#: src/SUMMARY.md:315
msgid "Day 1 Morning"
msgstr "Dia 1 Manhã"
-#: src/SUMMARY.md:314
+#: src/SUMMARY.md:316
msgid "Day 1 Afternoon"
msgstr "Dia 1 Tarde"
-#: src/SUMMARY.md:315
+#: src/SUMMARY.md:317
msgid "Day 2 Morning"
msgstr "Dia 2 Manhã"
-#: src/SUMMARY.md:316
+#: src/SUMMARY.md:318
msgid "Day 2 Afternoon"
msgstr "Dia 2 Tarde"
-#: src/SUMMARY.md:317
+#: src/SUMMARY.md:319
msgid "Day 3 Morning"
msgstr "Dia 3 Manhã"
-#: src/SUMMARY.md:318
+#: src/SUMMARY.md:320
msgid "Day 3 Afternoon"
msgstr "Dia 3 Tarde"
-#: src/SUMMARY.md:319
+#: src/SUMMARY.md:321
msgid "Bare Metal Rust Morning"
msgstr ""
-#: src/SUMMARY.md:320
+#: src/SUMMARY.md:322
msgid "Bare Metal Rust Afternoon"
msgstr "Bare Metal Rust Tarde"
-#: src/SUMMARY.md:321
+#: src/SUMMARY.md:323
msgid "Concurrency Morning"
msgstr "Concorrência Manhã"
-#: src/SUMMARY.md:322
+#: src/SUMMARY.md:324
msgid "Concurrency Afternoon"
msgstr "Concorrência Tarde"
@@ -1010,9 +1011,9 @@ msgstr "# Bem-vindo ao Comprehensive Rust 🦀"
#: src/welcome.md:3
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 ""
#: src/welcome.md:3
@@ -1021,11 +1022,12 @@ msgstr ""
#: src/welcome.md:3
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 ""
#: src/welcome.md:4
@@ -1034,13 +1036,19 @@ msgstr ""
#: src/welcome.md:4
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/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)"
#: src/welcome.md:5
msgid "GitHub stars"
@@ -1048,26 +1056,35 @@ msgstr ""
#: src/welcome.md:5
msgid ""
-"[]"
-"(https://github.com/google/comprehensive-rust/stargazers)"
+"[](https://github.com/google/comprehensive-rust/"
+"stargazers)"
msgstr ""
#: src/welcome.md:7
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 ""
-"Este é um curso de Rust de três dias desenvolvido pela equipe do Android. O curso abrange\n"
-"o espectro completo da linguagem, desde a sintaxe básica até tópicos avançados como 'generics'\n"
-"e tratamento de erros. Também inclui conteúdo específico para Android no último dia."
+"Este é um curso de Rust de três dias desenvolvido pela equipe do Android. O "
+"curso abrange\n"
+"o espectro completo da linguagem, desde a sintaxe básica até tópicos "
+"avançados como 'generics'\n"
+"e tratamento de erros. Também inclui conteúdo específico para Android no "
+"último dia."
#: src/welcome.md:11
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 ""
-"O objetivo do curso é ensinar Rust a você. Nós assumimos que você não saiba nada\n"
+"O objetivo do curso é ensinar Rust a você. Nós assumimos que você não saiba "
+"nada\n"
"sobre Rust e esperamos:"
#: src/welcome.md:14
@@ -1077,37 +1094,52 @@ msgid ""
"* Show you common Rust idioms."
msgstr ""
"* Dar a você uma compreensão abrangente da linguagem e da sintaxe de Rust.\n"
-"* Permitir que você modifique programas existentes e escreva novos programas em Rust.\n"
+"* Permitir que você modifique programas existentes e escreva novos programas "
+"em Rust.\n"
"* Demonstrar expressões idiomáticas comuns de Rust."
#: src/welcome.md:18
msgid ""
-"The first three days show you the fundamentals of Rust. Following this, you're\n"
+"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 ""
-"Os três primeiros dias lhe mostram os fundamentos de Rust. Em seguida, você está\n"
+"Os três primeiros dias lhe mostram os fundamentos de Rust. Em seguida, você "
+"está\n"
"convidado(a) a mergulhar a fundo em um ou mais tópicos especializados:"
#: src/welcome.md:21
+#, fuzzy
msgid ""
-"* [Android](android.md): a half-day course on using Rust for Android platform\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 full day class on using Rust for bare-metal\n"
-" (embedded) development. Both microcontrollers and application processors are\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"
+"* [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): um curso de meio dia sobre a utilização de Rust no desenvolvimento para a plataforma\n"
+"* [Android](android.md): um curso de meio dia sobre a utilização de Rust no "
+"desenvolvimento para a plataforma\n"
"Android (AOSP). Isto inclui interoperabilidade com C, C++ e Java.\n"
-"* [Bare-metal](bare-metal.md): uma aula de um dia sobre a utilização de Rust para o desenvolvimento\n"
-"\"bare metal\" (sistema embarcado). Tanto micro-controladores quanto processadores de aplicação são\n"
+"* [Bare-metal](bare-metal.md): uma aula de um dia sobre a utilização de Rust "
+"para o desenvolvimento\n"
+"\"bare metal\" (sistema embarcado). Tanto micro-controladores quanto "
+"processadores de aplicação são\n"
" cobertos.\n"
-"* [Concorrência](concurrency.md): uma aula de um dia inteiro sobre concorrência em Rust. Nós\n"
-" cobrimos tanto concorrência clássica (escalonamento preemptivo utilizando threads e\n"
-" mutexes) quanto concorrência async/await (multitarefa cooperativa utilizando\n"
+"* [Concorrência](concurrency.md): uma aula de um dia inteiro sobre "
+"concorrência em Rust. Nós\n"
+" cobrimos tanto concorrência clássica (escalonamento preemptivo utilizando "
+"threads e\n"
+" mutexes) quanto concorrência async/await (multitarefa cooperativa "
+"utilizando\n"
" _futures_)."
#: src/welcome.md:32
@@ -1116,55 +1148,67 @@ msgstr "## Fora do escopo"
#: src/welcome.md:34
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 é uma linguagem extensa e não conseguiremos cobrir tudo em poucos dias.\n"
+"Rust é uma linguagem extensa e não conseguiremos cobrir tudo em poucos "
+"dias.\n"
"Alguns assuntos que não são objetivos deste curso são:"
#: 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 ""
"* Aprender a criar macros, por favor confira [Capítulo 19.5 em Rust\n"
" Book](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) para esse fim."
+" Example](https://doc.rust-lang.org/rust-by-example/macros.html) para esse "
+"fim."
#: src/welcome.md:41
msgid "## Assumptions"
msgstr "## Premissas"
#: 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 ""
-"O curso pressupõe que você já saiba programar. Rust é uma linguagem de tipagem estática\n"
+"O curso pressupõe que você já saiba programar. Rust é uma linguagem de "
+"tipagem estática\n"
"e ocasionalmente faremos comparações com C e C++ para melhor\n"
"explicar ou contrastar a abordagem do 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 você sabe programar em uma linguagem de tipagem dinâmica, como Python ou\n"
"JavaScript, então você também será capaz de acompanhar."
-#: 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/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/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/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
@@ -1175,52 +1219,71 @@ msgstr ""
#: 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: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: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/entry-point.md:75
+#: 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/aps/exceptions.md:62
-#: src/bare-metal/aps/other-projects.md:15 src/bare-metal/useful-crates/zerocopy.md:43
+#: 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/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
@@ -1238,24 +1301,29 @@ msgstr ""
#: src/welcome.md:52
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 ""
-"Este é um exemplo de uma _nota do instrutor_. Nós as usaremos para adicionar\n"
-"informações complementares aos slides. Elas podem ser tanto pontos-chave que o instrutor deve\n"
+"Este é um exemplo de uma _nota do instrutor_. Nós as usaremos para "
+"adicionar\n"
+"informações complementares aos slides. Elas podem ser tanto pontos-chave que "
+"o instrutor deve\n"
"cobrir quanto respostas a perguntas típicas que surgem em sala de aula."
-#: 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/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: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: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:52
+#: 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:52
#: 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
@@ -1263,7 +1331,7 @@ msgstr ""
#: 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:43
+#: 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:28 src/methods/example.md:53
@@ -1271,7 +1339,7 @@ msgstr ""
#: 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/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
@@ -1287,38 +1355,50 @@ msgstr ""
#: 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:38
+#: 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/entry-point.md:101
+#: 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/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/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/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
@@ -1343,10 +1423,12 @@ msgstr "> Esta página é para o instrutor do curso."
#: src/running-the-course.md:5
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 ""
-"Aqui estão algumas informações básicas sobre como estamos conduzindo o curso\n"
+"Aqui estão algumas informações básicas sobre como estamos conduzindo o "
+"curso\n"
"internamente no Google."
#: src/running-the-course.md:8
@@ -1355,77 +1437,112 @@ msgstr "Antes de oferecer o curso, você precisa:"
#: src/running-the-course.md:10
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. Familiarize-se com o material do curso. Incluímos notas do instrutor\n"
-" para ajudar a destacar os pontos principais (ajude-nos contribuindo com mais\n"
-" notas!). Ao apresentar, certifique-se de abrir as notas do instrutor em um\n"
-" pop-up (clique no link com uma pequena seta ao lado de \"Speaker Notes\" ou \"Notas do Instrutor\"). Desta forma\n"
+" para ajudar a destacar os pontos principais (ajude-nos contribuindo com "
+"mais\n"
+" notas!). Ao apresentar, certifique-se de abrir as notas do instrutor em "
+"um\n"
+" pop-up (clique no link com uma pequena seta ao lado de \"Speaker Notes\" "
+"ou \"Notas do Instrutor\"). Desta forma\n"
" você tem uma tela limpa para apresentar à turma.\n"
"\n"
-"1. Decida as datas. Como o curso leva pelo menos três dias completos, recomendamos que você\n"
-" agende os dias ao longo de duas semanas. Os participantes do curso disseram que\n"
+"1. Decida as datas. Como o curso leva pelo menos três dias completos, "
+"recomendamos que você\n"
+" agende os dias ao longo de duas semanas. Os participantes do curso "
+"disseram que\n"
" eles acham útil ter uma lacuna no curso, pois os ajuda a processar\n"
" todas as informações que lhes damos.\n"
"\n"
-"1. Encontre uma sala grande o suficiente para seus participantes presenciais. Recomendamos\n"
-" turmas de 15 a 25 pessoas. Isso é pequeno o suficiente para que as pessoas se sintam confortáveis\n"
-" fazendo perguntas --- também é pequeno o suficiente para que um instrutor tenha\n"
-" tempo para responder às perguntas. Certifique-se de que a sala tenha _mesas_ para você e para os\n"
-" alunos: todos vocês precisam ser capazes de sentar e trabalhar com seus laptops.\n"
-" Em particular, você fará muita codificação ao vivo como instrutor, portanto, um pódio não\n"
+"1. Encontre uma sala grande o suficiente para seus participantes "
+"presenciais. Recomendamos\n"
+" turmas de 15 a 25 pessoas. Isso é pequeno o suficiente para que as "
+"pessoas se sintam confortáveis\n"
+" fazendo perguntas --- também é pequeno o suficiente para que um "
+"instrutor tenha\n"
+" tempo para responder às perguntas. Certifique-se de que a sala tenha "
+"_mesas_ para você e para os\n"
+" alunos: todos vocês precisam ser capazes de sentar e trabalhar com seus "
+"laptops.\n"
+" Em particular, você fará muita codificação ao vivo como instrutor, "
+"portanto, um pódio não\n"
" será muito útil para você.\n"
"\n"
-"1. No dia do seu curso, chegue um pouco mais cedo na sala para acertar as coisas.\n"
-" Recomendamos apresentar diretamente usando `mdbook serve` rodando em seu\n"
-" laptop (consulte as [instruções de instalação][3]). Isso garante um desempenho ideal sem atrasos conforme você muda de página.\n"
-" Usar seu laptop também permitirá que você corrija erros de digitação enquanto você ou os participantes\n"
+"1. No dia do seu curso, chegue um pouco mais cedo na sala para acertar as "
+"coisas.\n"
+" Recomendamos apresentar diretamente usando `mdbook serve` rodando em "
+"seu\n"
+" laptop (consulte as [instruções de instalação][3]). Isso garante um "
+"desempenho ideal sem atrasos conforme você muda de página.\n"
+" Usar seu laptop também permitirá que você corrija erros de digitação "
+"enquanto você ou os participantes\n"
" do curso os identificam.\n"
"\n"
-"1. Deixe as pessoas resolverem os exercícios sozinhas ou em pequenos grupos.\n"
-" Normalmente gastamos de 30 a 45 minutos em exercícios pela manhã e à tarde (incluindo o tempo para revisar as soluções).\n"
+"1. Deixe as pessoas resolverem os exercícios sozinhas ou em pequenos "
+"grupos.\n"
+" Normalmente gastamos de 30 a 45 minutos em exercícios pela manhã e à "
+"tarde (incluindo o tempo para revisar as soluções).\n"
" Tenha certeza de\n"
-" perguntar às pessoas se elas estão em dificuldades ou se há algo em que você possa ajudar. Quando\n"
+" perguntar às pessoas se elas estão em dificuldades ou se há algo em que "
+"você possa ajudar. Quando\n"
" você vir que várias pessoas têm o mesmo problema, chame a turma\n"
-" e ofereça uma solução, por exemplo, mostrando às pessoas onde encontrar as informações relevantes\n"
+" e ofereça uma solução, por exemplo, mostrando às pessoas onde encontrar "
+"as informações relevantes\n"
" na biblioteca padrão (\"standard library\")."
#: src/running-the-course.md:43
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 ""
"Isso é tudo, boa sorte no curso! Esperamos que seja tão divertido para\n"
@@ -1437,8 +1554,10 @@ msgid ""
"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 ""
-"Por favor, [dê seu feedback][1] depois para que possamos continuar melhorando o\n"
-"curso. Adoraríamos saber o que funcionou bem para você e o que pode ser melhorado.\n"
+"Por favor, [dê seu feedback][1] depois para que possamos continuar "
+"melhorando o\n"
+"curso. Adoraríamos saber o que funcionou bem para você e o que pode ser "
+"melhorado.\n"
"Seus alunos também são muito bem-vindos para [nos enviar feedback][2]!"
#: src/running-the-course/course-structure.md:1
@@ -1455,9 +1574,12 @@ msgid ""
"* Day 2: Compound data types, pattern matching, the standard library.\n"
"* Day 3: Traits and generics, error handling, testing, unsafe Rust."
msgstr ""
-"* Dia 1: Rust básico, _ownership_ (\"posse\") e o _borrow checker_ (\"verificador de empréstimo\").\n"
-"* Dia 2: Tipos de dados compostos, correspondência de padrões e a biblioteca padrão.\n"
-"* Dia 3: _Traits_ (\"características\") e genéricos, tratamento de erros, testes e _unsafe_ (\"inseguro\") Rust."
+"* Dia 1: Rust básico, _ownership_ (\"posse\") e o _borrow checker_ "
+"(\"verificador de empréstimo\").\n"
+"* Dia 2: Tipos de dados compostos, correspondência de padrões e a biblioteca "
+"padrão.\n"
+"* Dia 3: _Traits_ (\"características\") e genéricos, tratamento de erros, "
+"testes e _unsafe_ (\"inseguro\") Rust."
#: src/running-the-course/course-structure.md:11
msgid "## Deep Dives"
@@ -1468,7 +1590,8 @@ msgid ""
"In addition to the 3-day class on Rust Fundamentals, we cover some more\n"
"specialized topics:"
msgstr ""
-"Além do curso de 3 dias sobre fundamentos de Rust, nós abordamos alguns tópicos\n"
+"Além do curso de 3 dias sobre fundamentos de Rust, nós abordamos alguns "
+"tópicos\n"
"mais especializados:"
#: src/running-the-course/course-structure.md:16
@@ -1477,35 +1600,48 @@ msgstr "### Android"
#: src/running-the-course/course-structure.md:18
msgid ""
-"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"
+"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 ""
-"O [Android Deep Dive](../android.md) é um curso de meio dia sobre o uso de Rust para\n"
-"o desenvolvimento na plataforma Android. Isso inclui interoperabilidade com C, C++ e\n"
+"O [Android Deep Dive](../android.md) é um curso de meio dia sobre o uso de "
+"Rust para\n"
+"o desenvolvimento na plataforma Android. Isso inclui interoperabilidade com "
+"C, C++ e\n"
"Java."
#: src/running-the-course/course-structure.md:22
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 ""
-"Você precisará de um [_checkout_ do AOSP][1]. Faça um checkout do [repositório\n"
+"Você precisará de um [_checkout_ do AOSP][1]. Faça um checkout do "
+"[repositório\n"
"do curso][2] no mesmo computador e mova o diretório `src/android/` para\n"
-"a raiz do seu checkout do AOSP. Isso garantirá que o sistema de compilação do Android\n"
+"a raiz do seu checkout do AOSP. Isso garantirá que o sistema de compilação "
+"do Android\n"
"veja os arquivos `Android.bp` em `src/android/`."
#: src/running-the-course/course-structure.md:27
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 ""
-"Certifique-se de que `adb sync` funcione com seu emulador ou dispositivo físico e pré-compile\n"
-"todos os exemplos do Android usando `src/android/build_all.sh`. Leia o roteiro para ver\n"
-"os comandos executados e verifique se eles funcionam quando você os executa manualmente."
+"Certifique-se de que `adb sync` funcione com seu emulador ou dispositivo "
+"físico e pré-compile\n"
+"todos os exemplos do Android usando `src/android/build_all.sh`. Leia o "
+"roteiro para ver\n"
+"os comandos executados e verifique se eles funcionam quando você os executa "
+"manualmente."
#: src/running-the-course/course-structure.md:34
msgid "### Bare-Metal"
@@ -1513,18 +1649,22 @@ msgstr "### Bare-Metal"
#: src/running-the-course/course-structure.md:36
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 ""
-"O [Bare-Metal Deep Dive](../bare-metal.md) é uma aula de um dia sobre o uso de Rust para\n"
-"o desenvolvimento _bare-metal_ (sistema embarcado). Tanto micro-controladores quanto processadores\n"
+"O [Bare-Metal Deep Dive](../bare-metal.md) é uma aula de um dia sobre o uso "
+"de Rust para\n"
+"o desenvolvimento _bare-metal_ (sistema embarcado). Tanto micro-"
+"controladores quanto processadores\n"
"de aplicações são cobertos."
#: src/running-the-course/course-structure.md:40
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 ""
@@ -1539,7 +1679,8 @@ msgstr "### Concorrência"
#: src/running-the-course/course-structure.md:47
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 ""
"O [Concurrency Deep Dive](../concurrency.md) é uma aula de um dia sobre\n"
@@ -1547,11 +1688,14 @@ msgstr ""
#: src/running-the-course/course-structure.md:50
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 ""
-"Você precisará de um novo _crate_ configurado e as dependências baixadas e prontas\n"
+"Você precisará de um novo _crate_ configurado e as dependências baixadas e "
+"prontas\n"
"para uso. Você pode então copiar/colar os exemplos para `src/main.rs` para\n"
"experimentá-los:"
@@ -1624,8 +1768,11 @@ msgstr ""
"* [Coreano][ko] por [@keispace], [@jiyongp] e [@jooyunghan]."
#: src/running-the-course/translations.md:9
-msgid "Use the language picker in the top-right corner to switch between languages."
-msgstr "Use o seletor de idioma no canto superior direito para alternar entre os idiomas."
+msgid ""
+"Use the language picker in the top-right corner to switch between languages."
+msgstr ""
+"Use o seletor de idioma no canto superior direito para alternar entre os "
+"idiomas."
#: src/running-the-course/translations.md:11
msgid "## Incomplete Translations"
@@ -1653,10 +1800,12 @@ 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"
+"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 você quiser ajudar com esse esforço, consulte [nossas instruções][our instructions] sobre\n"
+"Se você quiser ajudar com esse esforço, consulte [nossas instruções][our "
+"instructions] sobre\n"
"como proceder. As traduções são coordenadas no _[issue tracker]_."
#: src/cargo.md:1
@@ -1665,16 +1814,20 @@ msgstr "# Usando o Cargo"
#: src/cargo.md:3
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 você começar a ler sobre Rust, logo conhecerá o [Cargo](https://doc.rust-lang.org/cargo/), "
-"a ferramenta padrão\n"
-"usada no ecossistema Rust para criar e executar aplicativos Rust. Aqui nós queremos\n"
-"dar uma breve visão geral do que é o Cargo e como ele se encaixa no ecossistema mais amplo\n"
+"Quando você começar a ler sobre Rust, logo conhecerá o [Cargo](https://doc."
+"rust-lang.org/cargo/), a ferramenta padrão\n"
+"usada no ecossistema Rust para criar e executar aplicativos Rust. Aqui nós "
+"queremos\n"
+"dar uma breve visão geral do que é o Cargo e como ele se encaixa no "
+"ecossistema mais amplo\n"
"e como ele se encaixa neste treinamento."
#: src/cargo.md:8
@@ -1687,19 +1840,23 @@ msgstr "### Rustup (Recomendado)"
#: src/cargo.md:12
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 ""
-"Você pode seguir as instruções para instalar o cargo e o compilador de Rust, entre outras "
-"ferramentas padrão do ecossistema com a ferramenta [rustup][3], que é mantida pela Rust Foundation."
+"Você pode seguir as instruções para instalar o cargo e o compilador de Rust, "
+"entre outras ferramentas padrão do ecossistema com a ferramenta [rustup][3], "
+"que é mantida pela Rust Foundation."
#: src/cargo.md:14
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 ""
-"Juntamente com cargo e rustc, o Rustup se instalará como um utilitário de linha de comando que "
-"você pode usar para instalar/alternar ferramentas, configurar compilação cruzada, etc."
+"Juntamente com cargo e rustc, o Rustup se instalará como um utilitário de "
+"linha de comando que você pode usar para instalar/alternar ferramentas, "
+"configurar compilação cruzada, etc."
#: src/cargo.md:16
msgid "### Package Managers"
@@ -1710,8 +1867,12 @@ msgid "#### Debian"
msgstr "#### Debian"
#: src/cargo.md:20
-msgid "On Debian/Ubuntu, you can install Cargo, the Rust source and the [Rust formatter][6] with"
-msgstr "No Debian/Ubuntu, você pode instalar o Cargo, o código-fonte Rust e o [formatador Rust][6] com"
+msgid ""
+"On Debian/Ubuntu, you can install Cargo, the Rust source and the [Rust "
+"formatter][6] with"
+msgstr ""
+"No Debian/Ubuntu, você pode instalar o Cargo, o código-fonte Rust e o "
+"[formatador Rust][6] com"
#: src/cargo.md:22
msgid ""
@@ -1725,21 +1886,26 @@ msgstr ""
#: src/cargo.md:26
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 ""
-"Isso permitirá que o [rust-analyzer][1] localize as definições. Sugerimos usar o\n"
-"[VS Code][2] para editar o código (mas qualquer editor compatível com LSP funciona)."
+"Isso permitirá que o [rust-analyzer][1] localize as definições. Sugerimos "
+"usar o\n"
+"[VS Code][2] para editar o código (mas qualquer editor compatível com LSP "
+"funciona)."
#: src/cargo.md:29
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 ""
-"Algumas pessoas também gostam de usar a família de IDEs [JetBrains][4], que fazem suas próprias "
-"análises, mas têm suas próprias vantagens e desvantagens. Se você preferir, pode instalar o "
-"[Plugin Rust][5]. Observe que, a partir de Janeiro de 2023, a depuração funciona apenas na versão "
+"Algumas pessoas também gostam de usar a família de IDEs [JetBrains][4], que "
+"fazem suas próprias análises, mas têm suas próprias vantagens e "
+"desvantagens. Se você preferir, pode instalar o [Plugin Rust][5]. Observe "
+"que, a partir de Janeiro de 2023, a depuração funciona apenas na versão "
"CLion do pacote JetBrains IDEA."
#: src/cargo/rust-ecosystem.md:1
@@ -1747,43 +1913,60 @@ msgid "# The Rust Ecosystem"
msgstr "# O ecossistema do Rust"
#: src/cargo/rust-ecosystem.md:3
-msgid "The Rust ecosystem consists of a number of tools, of which the main ones are:"
-msgstr "O ecossistema Rust consiste em várias ferramentas, das quais as principais são:"
+msgid ""
+"The Rust ecosystem consists of a number of tools, of which the main ones are:"
+msgstr ""
+"O ecossistema Rust consiste em várias ferramentas, das quais as principais "
+"são:"
#: src/cargo/rust-ecosystem.md:5
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`: o compilador Rust que converte arquivos `.rs` em binários e outros\n"
+"* `rustc`: o compilador Rust que converte arquivos `.rs` em binários e "
+"outros\n"
" formatos intermediários.\n"
"\n"
-"* `cargo`: o gerenciador de dependências e ferramenta de compilação do Rust. O Cargo sabe como\n"
-" baixar dependências hospedadas em e ele as passará para o \n"
-" `rustc` quando compilar o seu projeto. O Cargo também vem com um gerenciador de\n"
+"* `cargo`: o gerenciador de dependências e ferramenta de compilação do Rust. "
+"O Cargo sabe como\n"
+" baixar dependências hospedadas em e ele as passará para "
+"o \n"
+" `rustc` quando compilar o seu projeto. O Cargo também vem com um "
+"gerenciador de\n"
" testes embutido que é utilizado para a execução de testes unitários.\n"
"\n"
-"* `rustup`: o instalador e atualizador do conjunto de ferramentas do Rust. Esta ferramenta é utilizada para\n"
-" instalar e atualizar o `rustc` e o `cargo` quando novas versões do Rust forem lançadas.\n"
+"* `rustup`: o instalador e atualizador do conjunto de ferramentas do Rust. "
+"Esta ferramenta é utilizada para\n"
+" instalar e atualizar o `rustc` e o `cargo` quando novas versões do Rust "
+"forem lançadas.\n"
" Além disso, `rustup` também pode baixar a documentação da biblioteca\n"
-" padrão. Você pode ter múltiplas versões do Rust instaladas ao mesmo tempo e `rustup`\n"
+" padrão. Você pode ter múltiplas versões do Rust instaladas ao mesmo tempo e "
+"`rustup`\n"
" permitirá que você alterne entre elas conforme necessário."
-#: 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/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 "Pontos chave:"
@@ -1811,29 +1994,35 @@ 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 ""
-"* O Rust tem um cronograma de lançamento rápido com um novo lançamento saindo\n"
+"* O Rust tem um cronograma de lançamento rápido com um novo lançamento "
+"saindo\n"
" a cada seis semanas. Novos lançamentos mantêm compatibilidade com versões\n"
" anteriores — além disso, eles habilitam novas funcionalidades.\n"
"\n"
-"* Existem três canais de lançamento: _\"stable\"_, _\"beta\"_ e _\"nightly\"_.\n"
+"* Existem três canais de lançamento: _\"stable\"_, _\"beta\"_ e "
+"_\"nightly\"_.\n"
"\n"
-"* Novos recursos estão sendo testados em \"nightly\", \"beta\" é o que se torna\n"
+"* Novos recursos estão sendo testados em \"nightly\", \"beta\" é o que se "
+"torna\n"
" \"stable\" a cada seis semanas.\n"
"\n"
-"* O Rust também tem [edições][editions]: a edição atual é o Rust 2021. As edições\n"
+"* O Rust também tem [edições][editions]: a edição atual é o Rust 2021. As "
+"edições\n"
" anteriores foram o Rust 2015 e o Rust 2018.\n"
"\n"
"* As edições podem fazer alterações incompatíveis com versões anteriores\n"
@@ -1842,18 +2031,24 @@ msgstr ""
" * Para evitar quebra de código, as edições são opcionais: você seleciona a\n"
" edição para o seu _crate_ através do arquivo `Cargo.toml`.\n"
"\n"
-" * Para evitar a divisão do ecossistema, os compiladores Rust podem misturar código\n"
+" * Para evitar a divisão do ecossistema, os compiladores Rust podem misturar "
+"código\n"
" escrito para diferentes edições.\n"
"\n"
-" * Mencione que é muito raro usar o compilador diretamente, não através do `cargo` (a maioria dos usuários nunca o faz).\n"
+" * Mencione que é muito raro usar o compilador diretamente, não através do "
+"`cargo` (a maioria dos usuários nunca o faz).\n"
"\n"
-" * Pode valer a pena mencionar que o próprio Cargo é uma ferramenta extremamente poderosa e abrangente. Ele é capaz de muitos recursos avançados, incluindo, entre outros:\n"
+" * Pode valer a pena mencionar que o próprio Cargo é uma ferramenta "
+"extremamente poderosa e abrangente. Ele é capaz de muitos recursos "
+"avançados, incluindo, entre outros:\n"
" * Estrutura do projeto/pacote\n"
" * [Espaços de trabalho][workspaces]\n"
-" * Dependências de desenvolvimento e gerenciamento/cache de dependência de tempo de execução\n"
+" * Dependências de desenvolvimento e gerenciamento/cache de dependência "
+"de tempo de execução\n"
" * [Criar scripts][build scripting]\n"
" * [Instalação global][global installation]\n"
-" * Também é extensível com plugins de sub-comando (tais como [cargo clippy]).\n"
+" * Também é extensível com plugins de sub-comando (tais como [cargo "
+"clippy]).\n"
" * Leia mais no [livro oficial do Cargo][official Cargo Book]"
#: src/cargo/code-samples.md:1
@@ -1862,21 +2057,28 @@ msgstr "# Exemplos de Código neste Treinamento"
#: src/cargo/code-samples.md:3
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 ""
-"Para este treinamento, exploraremos principalmente a linguagem Rust por meio de exemplos\n"
-"que podem ser executados através do seu navegador. Isso torna a instalação muito mais fácil e\n"
+"Para este treinamento, exploraremos principalmente a linguagem Rust por meio "
+"de exemplos\n"
+"que podem ser executados através do seu navegador. Isso torna a instalação "
+"muito mais fácil e\n"
"garante uma experiência consistente para todos."
#: src/cargo/code-samples.md:7
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 ""
-"A instalação do Cargo ainda assim é incentivada: será mais fácil para você fazer os\n"
+"A instalação do Cargo ainda assim é incentivada: será mais fácil para você "
+"fazer os\n"
"exercícios. No último dia, faremos um exercício maior que mostra como\n"
"trabalhar com dependências e para isso você precisará do Cargo."
@@ -1900,10 +2102,12 @@ msgstr ""
#: src/cargo/code-samples.md:19
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 ""
-"Você pode usar Ctrl + Enter para executar o código quando o foco estiver na\n"
+"Você pode usar Ctrl + Enter para executar o código quando o foco "
+"estiver na\n"
"caixa de texto."
#: src/cargo/code-samples.md:24
@@ -1911,7 +2115,8 @@ msgid ""
"Most code samples are editable like shown above. A few code samples\n"
"are not editable for various reasons:"
msgstr ""
-"A maioria dos exemplos de código são editáveis, como mostrado acima. Alguns exemplos de código\n"
+"A maioria dos exemplos de código são editáveis, como mostrado acima. Alguns "
+"exemplos de código\n"
"não são editáveis por vários motivos:"
#: src/cargo/code-samples.md:27
@@ -1924,10 +2129,12 @@ msgid ""
" solve the exercises using a local Rust installation or via the\n"
" Playground."
msgstr ""
-"* Os _playgrounds_ embutidos não conseguem executar testes unitários. Copie o\n"
+"* Os _playgrounds_ embutidos não conseguem executar testes unitários. Copie "
+"o\n"
" código e cole no _Playground_ real para demonstrar os testes unitários.\n"
"\n"
-"* Os _playgrounds_ embutidos perdem seu estado no momento em que você navega\n"
+"* Os _playgrounds_ embutidos perdem seu estado no momento em que você "
+"navega\n"
" para outra página! Esta é a razão pela qual os alunos devem\n"
" resolver os exercícios usando uma instalação do Rust local ou via\n"
" Playground real."
@@ -1938,13 +2145,16 @@ msgstr "# Executando Código Localmente com o Cargo"
#: src/cargo/running-locally.md:3
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 você quiser experimentar o código em seu próprio sistema, precisará\n"
-"primeiro instalar o Rust. Faça isso seguindo as [instruções no Livro do Rust][1].\n"
+"primeiro instalar o Rust. Faça isso seguindo as [instruções no Livro do Rust]"
+"[1].\n"
"Isso deve fornecer o `rustc` e o `cargo` funcionando. Quando este curso\n"
"foi escrito, as últimas versões estáveis do Rust são:"
@@ -1969,21 +2179,24 @@ msgid ""
"With this in place, follow these steps to build a Rust binary from one\n"
"of the examples in this training:"
msgstr ""
-"Com isso finalizado, siga estas etapas para criar um binário Rust a partir de um\n"
+"Com isso finalizado, siga estas etapas para criar um binário Rust a partir "
+"de um\n"
"dos exemplos deste treinamento:"
#: 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"
@@ -1995,7 +2208,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"
@@ -2013,25 +2227,32 @@ 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. Clique no botão _\"Copy to clipboard\"_ (\"Copiar para a área de transferência\") no exemplo que deseja copiar.\n"
+"1. Clique no botão _\"Copy to clipboard\"_ (\"Copiar para a área de "
+"transferência\") no exemplo que deseja copiar.\n"
"\n"
-"2. Use `cargo new exercise` para criar um novo diretório `exercise/` para o seu código:\n"
+"2. Use `cargo new exercise` para criar um novo diretório `exercise/` para o "
+"seu código:\n"
"\n"
" ```shell\n"
" $ cargo new exercise\n"
" Created binary (application) `exercise` package\n"
" ```\n"
"\n"
-"3. Navegue até `exercise/` e use `cargo run` para compilar e executar seu binário:\n"
+"3. Navegue até `exercise/` e use `cargo run` para compilar e executar seu "
+"binário:\n"
"\n"
" ```shell\n"
" $ cd exercise\n"
@@ -2043,7 +2264,8 @@ msgstr ""
" ```\n"
"\n"
"4. Substitua o código gerado em `src/main.rs` pelo seu próprio código. Por\n"
-" exemplo, usando o exemplo da página anterior, faça `src/main.rs` parecer como\n"
+" exemplo, usando o exemplo da página anterior, faça `src/main.rs` parecer "
+"como\n"
"\n"
" ```rust\n"
" fn main() {\n"
@@ -2061,12 +2283,15 @@ msgstr ""
" Edit me!\n"
" ```\n"
"\n"
-"6. Use `cargo check` para verificar rapidamente se há erros em seu projeto, use `cargo build`\n"
+"6. Use `cargo check` para verificar rapidamente se há erros em seu projeto, "
+"use `cargo build`\n"
" para compilá-lo sem executá-lo. Você encontrará a saída em `target/debug/`\n"
-" para uma compilação de depuração normal. Use `cargo build --release` para produzir um binário\n"
+" para uma compilação de depuração normal. Use `cargo build --release` para "
+"produzir um binário\n"
" otimizado em `target/release/`.\n"
"\n"
-"7. Você pode adicionar dependências para seu projeto editando `Cargo.toml`. Quando você\n"
+"7. Você pode adicionar dependências para seu projeto editando `Cargo.toml`. "
+"Quando você\n"
" execute os comandos `cargo`, ele irá baixar e compilar automaticamente\n"
" dependências para você."
@@ -2097,18 +2322,22 @@ 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 ""
-"Sintaxe Rust básica: variáveis, tipos escalares e compostos, enums, structs,\n"
+"Sintaxe Rust básica: variáveis, tipos escalares e compostos, enums, "
+"structs,\n"
"referências, funções e métodos.\n"
"\n"
-"Gerenciamento de memória: pilha versus heap, gerenciamento de memória manual, gerenciamento de memória baseado em\n"
+"Gerenciamento de memória: pilha versus heap, gerenciamento de memória "
+"manual, gerenciamento de memória baseado em\n"
"escopo e _garbage collection_ (coleta de lixo).\n"
"\n"
-"_Ownership_ (posse): semântica de _move_, cópia e clonagem, _borrow_ (empréstimo) e _lifetime_ (tempo de vida)."
+"_Ownership_ (posse): semântica de _move_, cópia e clonagem, _borrow_ "
+"(empréstimo) e _lifetime_ (tempo de vida)."
#: src/welcome-day-1.md:16
msgid "Please remind the students that:"
@@ -2118,43 +2347,63 @@ msgstr "Lembre aos alunos que:"
#, 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 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"
+"* 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 ""
"* Eles devem fazer perguntas na hora, não as guarde para o fim.\n"
"* A aula é para ser interativa e as discussões são muito encorajadas!\n"
-" * Como instrutor, você deve tentar manter as discussões relevantes, ou seja,\n"
-" mantenha as discussões relacionadas a como o Rust faz as coisas versus alguma outra linguagem.\n"
-" Pode ser difícil encontrar o equilíbrio certo, mas procure permitir mais discussões,\n"
-" uma vez que elas engajam as pessoas muito mais do que uma comunicação unidirecional.\n"
-"* As perguntas provavelmente farão com que falemos sobre coisas antes dos slides.\n"
-" * Isso está perfeitamente OK! A repetição é uma parte importante do aprendizado. Lembre-se\n"
-" que os slides são apenas um suporte e você está livre para ignorá-los quando\n"
+" * Como instrutor, você deve tentar manter as discussões relevantes, ou "
+"seja,\n"
+" mantenha as discussões relacionadas a como o Rust faz as coisas versus "
+"alguma outra linguagem.\n"
+" Pode ser difícil encontrar o equilíbrio certo, mas procure permitir mais "
+"discussões,\n"
+" uma vez que elas engajam as pessoas muito mais do que uma comunicação "
+"unidirecional.\n"
+"* As perguntas provavelmente farão com que falemos sobre coisas antes dos "
+"slides.\n"
+" * Isso está perfeitamente OK! A repetição é uma parte importante do "
+"aprendizado. Lembre-se\n"
+" que os slides são apenas um suporte e você está livre para ignorá-los "
+"quando\n"
" quiser."
#: src/welcome-day-1.md:29
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 ""
-"A ideia para o primeiro dia é mostrar _apenas o suficiente_ de Rust para poder falar\n"
-"sobre o famoso _borrow checker_ (verificador de empréstimos). A maneira como o Rust lida\n"
-"com a memória é uma característica importante e devemos mostrar isso aos alunos imediatamente."
+"A ideia para o primeiro dia é mostrar _apenas o suficiente_ de Rust para "
+"poder falar\n"
+"sobre o famoso _borrow checker_ (verificador de empréstimos). A maneira como "
+"o Rust lida\n"
+"com a memória é uma característica importante e devemos mostrar isso aos "
+"alunos imediatamente."
#: src/welcome-day-1.md:33
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 você estiver ensinando isso em uma sala de aula, este é um bom lugar para repassar\n"
+"Se você estiver ensinando isso em uma sala de aula, este é um bom lugar para "
+"repassar\n"
"o cronograma. Sugerimos dividir o dia em duas partes (seguindo os slides):"
#: src/welcome-day-1.md:36
@@ -2167,10 +2416,12 @@ msgstr ""
#: src/welcome-day-1.md:39
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 ""
-"É claro que você pode ajustar isso conforme necessário. Certifique-se de incluir pausas,\n"
+"É claro que você pode ajustar isso conforme necessário. Certifique-se de "
+"incluir pausas,\n"
"recomendamos uma a cada hora!"
#: src/welcome-day-1/what-is-rust.md:1
@@ -2178,15 +2429,19 @@ msgid "# What is Rust?"
msgstr "# O que é Rust?"
#: src/welcome-day-1/what-is-rust.md:3
-msgid "Rust is a new programming language which had its [1.0 release in 2015][1]:"
-msgstr "Rust é uma nova linguagem de programação que teve sua [versão 1.0 lançada em 2015][1]:"
+msgid ""
+"Rust is a new programming language which had its [1.0 release in 2015][1]:"
+msgstr ""
+"Rust é uma nova linguagem de programação que teve sua [versão 1.0 lançada em "
+"2015][1]:"
#: src/welcome-day-1/what-is-rust.md:5
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"
@@ -2196,10 +2451,12 @@ msgid ""
" * desktops,\n"
" * servers."
msgstr ""
-"* Rust é uma linguagem compilada estaticamente e tem um papel semelhante ao C++\n"
+"* Rust é uma linguagem compilada estaticamente e tem um papel semelhante ao "
+"C++\n"
" * `rustc` usa o LLVM como back-end.\n"
"* Rust suporta muitas [plataformas e\n"
-" arquiteturas](https://doc.rust-lang.org/nightly/rustc/platform-support.html):\n"
+" arquiteturas](https://doc.rust-lang.org/nightly/rustc/platform-support."
+"html):\n"
" * x86, ARM, WebAssembly, ...\n"
" * Linux, Mac, Windows, ...\n"
"* Rust é usado em uma ampla gama de dispositivos:\n"
@@ -2223,7 +2480,8 @@ msgid ""
msgstr ""
"* Alta flexibilidade.\n"
"* Alto nível de controle.\n"
-"* Pode ser reduzido para dispositivos com menor poder computacional, como telefones celulares.\n"
+"* Pode ser reduzido para dispositivos com menor poder computacional, como "
+"telefones celulares.\n"
"* Não tem _runtime_ ou _garbage collection_.\n"
"* Concentra-se em confiabilidade e segurança sem sacrificar o desempenho."
@@ -2235,7 +2493,9 @@ msgstr "# Olá Mundo!"
msgid ""
"Let us jump into the simplest possible Rust program, a classic Hello World\n"
"program:"
-msgstr "Vamos pular para o programa em Rust mais simples possível, o clássico \"Olá Mundo\":"
+msgstr ""
+"Vamos pular para o programa em Rust mais simples possível, o clássico \"Olá "
+"Mundo\":"
#: src/hello-world.md:6
msgid ""
@@ -2267,15 +2527,20 @@ msgstr ""
"* Os blocos são delimitados por chaves como em C e C++.\n"
"* A função `main` é o ponto de entrada do programa.\n"
"* Rust tem macros \"higiênicas\", `println!` é um exemplo disso.\n"
-"* As strings Rust são codificadas em UTF-8 e podem conter qualquer caractere Unicode."
+"* As strings Rust são codificadas em UTF-8 e podem conter qualquer caractere "
+"Unicode."
#: src/hello-world.md:22
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 ""
-"Este slide tenta deixar os alunos familiarizados com o código em Rust. Eles vão ver\n"
-"uma tonelada nos próximos quatro dias, então começamos pequeno e com algo familiar."
+"Este slide tenta deixar os alunos familiarizados com o código em Rust. Eles "
+"vão ver\n"
+"uma tonelada nos próximos quatro dias, então começamos pequeno e com algo "
+"familiar."
#: src/hello-world.md:27
msgid ""
@@ -2285,12 +2550,16 @@ 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 hygienic](https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene.html)."
+" [partially hygienic](https://veykril.github.io/tlborm/decl-macros/minutiae/"
+"hygiene.html)."
msgstr ""
"* Rust é muito parecido com outras linguagens na tradição C/C++/Java. É\n"
"imperativo (não funcional) e não tenta reinventar as coisas, a menos que\n"
@@ -2299,11 +2568,15 @@ msgstr ""
"* Rust é moderno com suporte total para coisas como Unicode.\n"
"\n"
"* Rust usa macros para situações em que você deseja ter um número variável\n"
-"de argumentos (sem [sobrecarga de função](basic-syntax/functions-interlude.md)).\n"
+"de argumentos (sem [sobrecarga de função](basic-syntax/functions-interlude."
+"md)).\n"
"\n"
-"* As macros sendo ‘higiênicas’ significa que elas não capturam acidentalmente\n"
-"identificadores do escopo em que são usadas. As macros em Rust são, na verdade,\n"
-"apenas [parcialmente higiênicas](https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene.html)."
+"* As macros sendo ‘higiênicas’ significa que elas não capturam "
+"acidentalmente\n"
+"identificadores do escopo em que são usadas. As macros em Rust são, na "
+"verdade,\n"
+"apenas [parcialmente higiênicas](https://veykril.github.io/tlborm/decl-"
+"macros/minutiae/hygiene.html)."
#: src/hello-world/small-example.md:1
msgid "# Small Example"
@@ -2349,35 +2622,46 @@ msgstr ""
#: src/hello-world/small-example.md:23
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 ""
"O código implementa a conjectura de Collatz: acredita-se que o loop\n"
-"sempre termina, mas isso ainda não está provado. Edite o código e tente diferentes\n"
+"sempre termina, mas isso ainda não está provado. Edite o código e tente "
+"diferentes\n"
"entradas."
#: src/hello-world/small-example.md:29
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"
+"* 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"
+" * In a shell `rustup doc std::fmt` will open a browser on the local std::"
+"fmt documentation"
msgstr ""
-"* Explique que todas as variáveis são tipadas estaticamente. Tente remover `i32`\n"
-"para acionar a inferência de tipo. Em vez disso, tente com `i8` e cause um estouro\n"
+"* Explique que todas as variáveis são tipadas estaticamente. Tente remover "
+"`i32`\n"
+"para acionar a inferência de tipo. Em vez disso, tente com `i8` e cause um "
+"estouro\n"
"de número inteiro (_integer overflow_) em tempo de execução.\n"
"\n"
"* Altere `let mut x` para `let x`, discuta o erro do compilador.\n"
@@ -2386,13 +2670,17 @@ msgstr ""
"argumentos não corresponderem à string de formato.\n"
"\n"
"* Mostre como você precisa usar `{}` como um espaço reservado se quiser\n"
-"imprimir uma expressão que seja mais complexa do que apenas uma única variável.\n"
+"imprimir uma expressão que seja mais complexa do que apenas uma única "
+"variável.\n"
"\n"
-"* Mostre aos alunos a biblioteca padrão (_standard library_), mostre como pesquisar\n"
-"`std::fmt`, o qual possui as regras da mini-linguagem de formatação. É importante que\n"
+"* Mostre aos alunos a biblioteca padrão (_standard library_), mostre como "
+"pesquisar\n"
+"`std::fmt`, o qual possui as regras da mini-linguagem de formatação. É "
+"importante que\n"
"os alunos se familiarizem com pesquisas na biblioteca padrão.\n"
"\n"
-" * Em um shell `rustup doc std::fmt` abrirá um navegador na documentação std::fmt local."
+" * Em um shell `rustup doc std::fmt` abrirá um navegador na documentação "
+"std::fmt local."
#: src/why-rust.md:1
msgid "# Why Rust?"
@@ -2414,33 +2702,47 @@ msgstr ""
#: src/why-rust.md:11
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 ""
-"Certifique-se de perguntar à classe com quais linguagens de programação eles têm experiência. "
-"Dependendo\n"
+"Certifique-se de perguntar à classe com quais linguagens de programação eles "
+"têm experiência. Dependendo\n"
"da resposta você pode destacar diferentes características do Rust:"
#: src/why-rust.md:14
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 ""
-"* Experiência com C ou C++: Rust elimina toda uma classe de _erros em tempo de execução_\n"
-" através do verificador de empréstimos (_borrow checker_). Você obtém desempenho como em C e C++, mas sem\n"
-" os problemas de insegurança de memória. Além disso, você tem uma linguagem com\n"
-" funcionalidades modernas como correspondência de padrões e gerenciamento de dependência integrado.\n"
-"\n"
-"* Experiência com Java, Go, Python, JavaScript...: Você tem a mesma segurança de memória\n"
-" como nessas linguagens, além de uma semelhança com linguagens de alto nível. Além disso\n"
-" você obtém desempenho rápido e previsível como C e C++ (sem coletor de lixo ou \"_garbage collector_\")\n"
+"* Experiência com C ou C++: Rust elimina toda uma classe de _erros em tempo "
+"de execução_\n"
+" através do verificador de empréstimos (_borrow checker_). Você obtém "
+"desempenho como em C e C++, mas sem\n"
+" os problemas de insegurança de memória. Além disso, você tem uma linguagem "
+"com\n"
+" funcionalidades modernas como correspondência de padrões e gerenciamento de "
+"dependência integrado.\n"
+"\n"
+"* Experiência com Java, Go, Python, JavaScript...: Você tem a mesma "
+"segurança de memória\n"
+" como nessas linguagens, além de uma semelhança com linguagens de alto "
+"nível. Além disso\n"
+" você obtém desempenho rápido e previsível como C e C++ (sem coletor de lixo "
+"ou \"_garbage collector_\")\n"
" bem como acesso a hardware de baixo nível (caso você precise)"
#: src/why-rust/compile-time.md:1
@@ -2491,13 +2793,18 @@ msgid ""
"* In fact, some will consider infinitely populating a collection a memory\n"
" leak and Rust does not protect from those."
msgstr ""
-"* Você pode usar [`Box::leak`] para vazar um ponteiro. Um uso para isso poderia\n"
-" ser para obter variáveis estáticas inicializadas e dimensionadas em tempo de execução\n"
-"* Você pode usar [`std::mem::forget`] para fazer o compilador \"esquecer\" sobre\n"
+"* Você pode usar [`Box::leak`] para vazar um ponteiro. Um uso para isso "
+"poderia\n"
+" ser para obter variáveis estáticas inicializadas e dimensionadas em tempo "
+"de execução\n"
+"* Você pode usar [`std::mem::forget`] para fazer o compilador \"esquecer\" "
+"sobre\n"
" um valor (o que significa que o destrutor nunca é executado).\n"
-"* Você também pode criar acidentalmente uma [referência cíclica][reference cycle] com `Rc` ou\n"
+"* Você também pode criar acidentalmente uma [referência cíclica][reference "
+"cycle] com `Rc` ou\n"
" `Arc`.\n"
-"* Na verdade, alguns considerarão que preencher infinitamente uma coleção (estruturas de dados)\n"
+"* Na verdade, alguns considerarão que preencher infinitamente uma coleção "
+"(estruturas de dados)\n"
" seja um vazamento de memória e o Rust não protege disso."
#: src/why-rust/compile-time.md:28
@@ -2505,7 +2812,8 @@ msgid ""
"For the purpose of this course, \"No memory leaks\" should be understood\n"
"as \"Pretty much no *accidental* memory leaks\"."
msgstr ""
-"Para o propósito deste curso, \"Sem vazamentos de memória\" deve ser entendido\n"
+"Para o propósito deste curso, \"Sem vazamentos de memória\" deve ser "
+"entendido\n"
"como \"Praticamente sem vazamentos de memória *acidentais*\"."
#: src/why-rust/runtime.md:1
@@ -2517,17 +2825,21 @@ msgid "No undefined behavior at runtime:"
msgstr "Nenhum comportamento indefinido em tempo de execução:"
#: 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 ""
"* O acesso a matrizes tem limites verificados.\n"
"* Estouro de números inteiros é definido."
#: 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"
@@ -2536,13 +2848,17 @@ msgid ""
" `unsafe` allows you to call functions such as `slice::get_unchecked`\n"
" which does not do bounds checking."
msgstr ""
-"* O estouro de números inteiros é definido por meio de uma _flag_ em tempo de compilação. As opções são\n"
+"* O estouro de números inteiros é definido por meio de uma _flag_ em tempo "
+"de compilação. As opções são\n"
" um pânico (uma falha controlada do programa) ou semântica\n"
-" wrap-around. Por padrão, você obtém pânicos em modo de depuração (`cargo build`)\n"
+" wrap-around. Por padrão, você obtém pânicos em modo de depuração (`cargo "
+"build`)\n"
" e wrap-around em modo de produção (`cargo build --release`).\n"
"\n"
-"* A verificação de limites (\"_bounds checking_\") não pode ser desativada com uma _flag_ do compilador.\n"
-"Ela também não pode ser desativada diretamente com a palavra-chave `unsafe`. No entanto,\n"
+"* A verificação de limites (\"_bounds checking_\") não pode ser desativada "
+"com uma _flag_ do compilador.\n"
+"Ela também não pode ser desativada diretamente com a palavra-chave `unsafe`. "
+"No entanto,\n"
" `unsafe` permite que você chame funções como `slice::get_unchecked`\n"
" que não faz verificação de limites."
@@ -2552,7 +2868,8 @@ msgstr "# Recursos Modernos"
#: src/why-rust/modern.md:3
msgid "Rust is built with all the experience gained in the last 40 years."
-msgstr "O Rust é construído com toda a experiência adquirida nos últimos 40 anos."
+msgstr ""
+"O Rust é construído com toda a experiência adquirida nos últimos 40 anos."
#: src/why-rust/modern.md:5
msgid "## Language Features"
@@ -2588,79 +2905,105 @@ msgstr ""
#: src/why-rust/modern.md:23
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 ""
-"* Abstrações de custo zero, semelhantes ao C++, significa que você não precisa ‘pagar’\n"
-" por construções de programação de alto nível com memória ou CPU. Por exemplo,\n"
+"* Abstrações de custo zero, semelhantes ao C++, significa que você não "
+"precisa ‘pagar’\n"
+" por construções de programação de alto nível com memória ou CPU. Por "
+"exemplo,\n"
" escrever um loop usando `for` deve resultar aproximadamente no mesmo nível\n"
" de instruções de baixo nível quanto usar a construção `.iter().fold()`.\n"
"\n"
-"* Pode valer a pena mencionar que Rust enums são ‘Tipos de Dados Algébricos’\n"
-"(‘_Algebraic Data Types_’), também conhecidos como ‘tipos de soma’, que permitem que o\n"
+"* Pode valer a pena mencionar que Rust enums são ‘Tipos de Dados "
+"Algébricos’\n"
+"(‘_Algebraic Data Types_’), também conhecidos como ‘tipos de soma’, que "
+"permitem que o\n"
"sistema de tipos expresse coisas como `Option` e `Result`.\n"
"\n"
-"* Lembre as pessoas de lerem os erros --- muitos desenvolvedores se acostumaram\n"
-" ignore as longas mensagens do compilador. O compilador Rust é significativamente mais\n"
-" \"verbal\" do que outros compiladores. Muitas vezes, ele lhe fornecerá sugestões _práticas_,\n"
+"* Lembre as pessoas de lerem os erros --- muitos desenvolvedores se "
+"acostumaram\n"
+" ignore as longas mensagens do compilador. O compilador Rust é "
+"significativamente mais\n"
+" \"verbal\" do que outros compiladores. Muitas vezes, ele lhe fornecerá "
+"sugestões _práticas_,\n"
"prontas para copiar e colar em seu código.\n"
"\n"
-"* A biblioteca padrão do Rust (_Rust standard library_) é pequena comparada a linguagens\n"
-"como Java, Python e Go. Rust não vem com várias coisas que você pode considerar padrão e essencial:\n"
+"* A biblioteca padrão do Rust (_Rust standard library_) é pequena comparada "
+"a linguagens\n"
+"como Java, Python e Go. Rust não vem com várias coisas que você pode "
+"considerar padrão e essencial:\n"
"\n"
" * um gerador de números aleatórios, mas veja [rand].\n"
" * suporte para SSL ou TLS, mas consulte [rusttls].\n"
" * suporte para JSON, mas consulte [serde_json].\n"
"\n"
-" O raciocínio por trás disso é que funcionalidade na biblioteca padrão não pode\n"
-" ser descartada, portanto ela tem que ser muito estável. Para os exemplos acima,\n"
-" a comunidade do Rust ainda está trabalhando para encontrar a melhor solução --- e\n"
-" talvez não exista uma única \"melhor solução\" para algumas dessas coisas.\n"
-"\n"
-" Rust vem com um gerenciador de pacotes embutido na forma de Cargo e isso torna\n"
+" O raciocínio por trás disso é que funcionalidade na biblioteca padrão não "
+"pode\n"
+" ser descartada, portanto ela tem que ser muito estável. Para os exemplos "
+"acima,\n"
+" a comunidade do Rust ainda está trabalhando para encontrar a melhor "
+"solução --- e\n"
+" talvez não exista uma única \"melhor solução\" para algumas dessas "
+"coisas.\n"
+"\n"
+" Rust vem com um gerenciador de pacotes embutido na forma de Cargo e isso "
+"torna\n"
" trivial baixar e compilar _crates_ de terceiros. Uma consequência disso\n"
" é que a biblioteca padrão pode ser menor.\n"
"\n"
" Descobrir bons _crates_ de terceiros pode ser um problema. Sites como\n"
-" ajudam com isso, permitindo que você compare métricas de\n"
+" ajudam com isso, permitindo que você compare métricas "
+"de\n"
" _crates_ para encontrar um bom e confiável.\n"
" \n"
-"* [rust-analyzer] é uma implementação LSP bem suportada usada pelas principais\n"
+"* [rust-analyzer] é uma implementação LSP bem suportada usada pelas "
+"principais\n"
" IDEs e editores de texto."
#: src/basic-syntax.md:1
@@ -2669,18 +3012,22 @@ msgstr "# Sintaxe Básica"
#: src/basic-syntax.md:3
msgid "Much of the Rust syntax will be familiar to you from C, C++ or Java:"
-msgstr "Grande parte da sintaxe do Rust será familiar para você que vem de C, C++ ou Java:"
+msgstr ""
+"Grande parte da sintaxe do Rust será familiar para você que vem de C, C++ ou "
+"Java:"
#: src/basic-syntax.md:5
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 ""
"* Blocos e escopos são delimitados por chaves.\n"
-"* Comentários de linha são iniciados com `//`, comentários de bloco são delimitados por `/* ...\n"
+"* Comentários de linha são iniciados com `//`, comentários de bloco são "
+"delimitados por `/* ...\n"
" */`.\n"
"* Palavras-chave como `if` e `while` funcionam da mesma forma.\n"
"* A atribuição de variáveis é feita com `=`, a comparação é feita com `==`."
@@ -2694,38 +3041,47 @@ 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` |"
-msgstr ""
-"| | Tipos | Literais |\n"
-"|---------------------------|--------------------------------------------|------------------------------ |\n"
-"| Inteiros com sinal | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | `-10`, `0`, `1_000`, `123i64` |\n"
-"| Inteiros sem sinal | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | `0`, `123`, `10u16` |\n"
-"| Números de ponto flutuante| `f32`, `f64` | `3.14`, `-10.0e20`, `2f32` |\n"
-"| Strings | `&str` | `\"foo\"`, `\"two\\nlines\"` |\n"
-"| Valores escalares Unicode | `char` | `’a’`, `’α’`, `’∞’` |\n"
-"| Booleanos | `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 ""
+"| | Tipos | "
+"Literais |\n"
+"|---------------------------|--------------------------------------------|------------------------------ "
+"|\n"
+"| Inteiros com sinal | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | "
+"`-10`, `0`, `1_000`, `123i64` |\n"
+"| Inteiros sem sinal | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | "
+"`0`, `123`, `10u16` |\n"
+"| Números de ponto flutuante| `f32`, `f64` | "
+"`3.14`, `-10.0e20`, `2f32` |\n"
+"| Strings | `&str` | "
+"`\"foo\"`, `\"two\\nlines\"` |\n"
+"| Valores escalares Unicode | `char` | "
+"`’a’`, `’α’`, `’∞’` |\n"
+"| Booleanos | `bool` | "
+"`true`, `false` |"
#: src/basic-syntax/scalar-types.md:12
msgid "The types have widths as follows:"
msgstr "Os tipos têm os seguintes tamanhos:"
#: 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` têm _N_ bits,\n"
"* `isize` e `usize` são do tamanho de um ponteiro,\n"
@@ -2738,8 +3094,10 @@ msgstr "Há algumas sintaxes que não são mostradas acima:"
#: 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"
@@ -2758,8 +3116,10 @@ msgid ""
" }\n"
" ```"
msgstr ""
-"- Strings brutas permitem que você crie um valor `&str` com caracteres de escape desabilitados: `r\"\\n\"\n"
-" == \"\\\\\\\\n\"`. Você pode embutir aspas duplas utilizando uma quantidade igual de `#` em\n"
+"- Strings brutas permitem que você crie um valor `&str` com caracteres de "
+"escape desabilitados: `r\"\\n\"\n"
+" == \"\\\\\\\\n\"`. Você pode embutir aspas duplas utilizando uma "
+"quantidade igual de `#` em\n"
" Ambos os lados das aspas:\n"
"\n"
" ```rust,editable\n"
@@ -2784,15 +3144,21 @@ msgstr "# Tipos Compostos"
#: 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 ""
-"| | Tipos | Literais |\n"
+"| | Tipos | Literais "
+"|\n"
"|--------|-------------------------------|-----------------------------------|\n"
-"| Matrizes | `[T; N]` | `[20, 30, 40]`, `[0; 3]` |\n"
-"| Tuplas | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... |"
+"| Matrizes | `[T; N]` | `[20, 30, 40]`, `[0; "
+"3]` |\n"
+"| Tuplas | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... "
+"|"
#: src/basic-syntax/compound-types.md:8
msgid "Array assignment and access:"
@@ -2844,31 +3210,43 @@ msgstr "Vetores:"
#: 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"
+"* 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"
" `[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 ""
-"* Matrizes têm elementos do mesmo tipo, `T`, and tamanho, `N`, o qual é uma constante em tempo de compilação.\n"
-" Note que o tamanho de uma matriz é *parte do seu tipo*, o que significa que `[u8; 3]` e\n"
+"* Matrizes têm elementos do mesmo tipo, `T`, and tamanho, `N`, o qual é uma "
+"constante em tempo de compilação.\n"
+" Note que o tamanho de uma matriz é *parte do seu tipo*, o que significa que "
+"`[u8; 3]` e\n"
" `[u8; 4]` são considerados dois tipos diferentes.\n"
"\n"
"* Nós podemos usar literais para atribuir valores para matrizes.\n"
"\n"
-"* Na função `main`, o comando `print` pede a implementação de depuração (_debug_) com o parâmetro\n"
-" de formato formato `?`: `{}` produz a saída padrão, `{:?}` produz a saída de depuração. Nós\n"
-" também poderíamos ter usado `{a}` e `{a:?}` sem especificar o valor depois da string\n"
+"* Na função `main`, o comando `print` pede a implementação de depuração "
+"(_debug_) com o parâmetro\n"
+" de formato formato `?`: `{}` produz a saída padrão, `{:?}` produz a saída "
+"de depuração. Nós\n"
+" também poderíamos ter usado `{a}` e `{a:?}` sem especificar o valor depois "
+"da string\n"
" de formato.\n"
"\n"
-"* Adicionando `#`, p.ex. `{a:#?}`, invoca um formato \"_pretty printing_\" (\"impressão bonita\"), que pode ser mais legível."
+"* Adicionando `#`, p.ex. `{a:#?}`, invoca um formato \"_pretty "
+"printing_\" (\"impressão bonita\"), que pode ser mais legível."
#: src/basic-syntax/compound-types.md:47
msgid "Tuples:"
@@ -2880,11 +3258,15 @@ msgid ""
"\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."
@@ -2893,11 +3275,15 @@ msgstr ""
"\n"
"* Tuplas agrupam valores de diferentes tipos em um tipo composto.\n"
"\n"
-"* Campos de uma tupla podem ser acessados com um ponto e o índice do valor, e.g. `t.0`, `t.1`.\n"
+"* Campos de uma tupla podem ser acessados com um ponto e o índice do valor, "
+"e.g. `t.0`, `t.1`.\n"
"\n"
-"* A tupla vazia `()` também é conhecida como \"tipo unidade\" (_unit type_). É tanto\n"
-"um tipo quanto o único valor válido desse tipo - ou seja, o tipo e seu valor\n"
-"são expressos como `()`. É usado para indicar, por exemplo, que uma função ou\n"
+"* A tupla vazia `()` também é conhecida como \"tipo unidade\" (_unit type_). "
+"É tanto\n"
+"um tipo quanto o único valor válido desse tipo - ou seja, o tipo e seu "
+"valor\n"
+"são expressos como `()`. É usado para indicar, por exemplo, que uma função "
+"ou\n"
"expressão não tem valor de retorno, como veremos em um slide futuro.\n"
" * Você pode pensar nisso como um `void`, que talvez lhe seja familiar\n"
" de outras linguagens de programação."
@@ -2928,25 +3314,36 @@ msgstr "Algumas notas:"
#: src/basic-syntax/references.md:16
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 ""
-"* Devemos desreferenciar `ref_x` ao atribuí-lo um valor, semelhante à ponteiros em C e C++.\n"
-"* Em alguns casos, o Rust desreferenciará automaticamente, em particular ao invocar\n"
+"* Devemos desreferenciar `ref_x` ao atribuí-lo um valor, semelhante à "
+"ponteiros em C e C++.\n"
+"* Em alguns casos, o Rust desreferenciará automaticamente, em particular ao "
+"invocar\n"
" métodos (tente `ref_x.count_ones()`).\n"
-"* As referências que são declaradas como `mut` podem ser vinculadas a diferentes valores ao longo de seu tempo de vida."
+"* As referências que são declaradas como `mut` podem ser vinculadas a "
+"diferentes valores ao longo de seu tempo de vida."
#: src/basic-syntax/references.md:25
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."
+"* 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 ""
-"* Certifique-se de observar a diferença entre `let mut ref_x: &i32` e `let ref_x:\n"
-" &mut i32`. O primeiro representa uma referência mutável que pode ser ligada a\n"
-" diferentes valores, enquanto o segundo representa uma referência a um valor mutável."
+"* Certifique-se de observar a diferença entre `let mut ref_x: &i32` e `let "
+"ref_x:\n"
+" &mut i32`. O primeiro representa uma referência mutável que pode ser "
+"ligada a\n"
+" diferentes valores, enquanto o segundo representa uma referência a um "
+"valor mutável."
#: src/basic-syntax/references-dangling.md:1
msgid "# Dangling References"
@@ -2978,7 +3375,8 @@ msgid ""
"* We will talk more about borrowing when we get to ownership."
msgstr ""
"* Diz-se que uma referência \"pega emprestado\" o valor a que se refere.\n"
-"* Rust está rastreando os tempos de vida de todas as referências para garantir que elas durem\n"
+"* Rust está rastreando os tempos de vida de todas as referências para "
+"garantir que elas durem\n"
" o suficiente.\n"
"* Falaremos mais sobre empréstimos quando chegarmos à _ownership_."
@@ -3022,41 +3420,57 @@ msgstr ""
#: src/basic-syntax/slices.md:20
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 ""
-"* Nós criamos uma _slice_ emprestando `a` e especificando os índices de início e fim entre colchetes.\n"
+"* Nós criamos uma _slice_ emprestando `a` e especificando os índices de "
+"início e fim entre colchetes.\n"
"\n"
-"* Se a _slice_ começa no índice 0, a sintaxe de _range_ (faixa) nos permite omitir o índice inicial, o que significa que `&a[0..a.len()]` e `&a[..a.len()]` são idênticos.\n"
+"* Se a _slice_ começa no índice 0, a sintaxe de _range_ (faixa) nos permite "
+"omitir o índice inicial, o que significa que `&a[0..a.len()]` e `&a[..a."
+"len()]` são idênticos.\n"
"\n"
-"* O mesmo vale para o último índice, logo `&a[2..a.len()]` e `&a[2..]` são idênticos.\n"
+"* O mesmo vale para o último índice, logo `&a[2..a.len()]` e `&a[2..]` são "
+"idênticos.\n"
"\n"
-"* Para criar facilmente uma _slice_ de uma matriz completa, podemos utilizar`&a[..]`.\n"
+"* Para criar facilmente uma _slice_ de uma matriz completa, podemos "
+"utilizar`&a[..]`.\n"
"\n"
-"* `s` é uma referência a uma _slice_ de `i32`. Observe que o tipo de `s` (`&[i32]`) não menciona mais o tamanho da matriz. Isso nos permite realizar cálculos em _slices_ de tamanhos diferentes.\n"
+"* `s` é uma referência a uma _slice_ de `i32`. Observe que o tipo de `s` "
+"(`&[i32]`) não menciona mais o tamanho da matriz. Isso nos permite realizar "
+"cálculos em _slices_ de tamanhos diferentes.\n"
" \n"
-"* As _slices_ sempre pegam emprestado de outro objeto. Neste exemplo, `a` deve permanecer ‘vivo’ (em escopo) por pelo menos tanto tempo quanto nossa _slice_.\n"
+"* As _slices_ sempre pegam emprestado de outro objeto. Neste exemplo, `a` "
+"deve permanecer ‘vivo’ (em escopo) por pelo menos tanto tempo quanto nossa "
+"_slice_.\n"
" \n"
-"* A questão sobre a modificação de `a[3]` pode gerar uma discussão interessante, mas a resposta é que por motivos de segurança de memória\n"
-" você não pode fazer isso por meio de `a` depois de criar uma _slice_, mas você pode ler os dados de `a` e `s` com segurança.\n"
+"* A questão sobre a modificação de `a[3]` pode gerar uma discussão "
+"interessante, mas a resposta é que por motivos de segurança de memória\n"
+" você não pode fazer isso por meio de `a` depois de criar uma _slice_, mas "
+"você pode ler os dados de `a` e `s` com segurança.\n"
" Mais detalhes serão explicados na seção do verificador de empréstimos."
#: src/basic-syntax/string-slices.md:1
@@ -3112,45 +3526,62 @@ msgstr ""
"* `String` é um _buffer_ de string mutável."
#: src/basic-syntax/string-slices.md:27
+#, fuzzy
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` introduz uma _slice_ de string, a qual é uma referência imutável para os dados da string em formato UTF-8\n"
-" armazenados em um bloco de memória. Literais de string (`\"Hello\"`) são armazenadas no código binário do programa.\n"
+"* `&str` introduz uma _slice_ de string, a qual é uma referência imutável "
+"para os dados da string em formato UTF-8\n"
+" armazenados em um bloco de memória. Literais de string (`\"Hello\"`) são "
+"armazenadas no código binário do programa.\n"
"\n"
-"* O tipo `String` do Rust é um invólucro ao redor de uma matriz de bytes. Assim como um `Vec`, ele é _owned_.\n"
+"* O tipo `String` do Rust é um invólucro ao redor de uma matriz de bytes. "
+"Assim como um `Vec`, ele é _owned_.\n"
"\n"
-"* Da mesma forma que outros tipos, `String::from()` cria uma string a partir de um literal; `String::new()` \n"
-" cria uma nova string vazia, na qual dados de string podem ser adicionados com os métodos `push()` e `push_str()`.\n"
+"* Da mesma forma que outros tipos, `String::from()` cria uma string a partir "
+"de um literal; `String::new()` \n"
+" cria uma nova string vazia, na qual dados de string podem ser adicionados "
+"com os métodos `push()` e `push_str()`.\n"
"\n"
-"* A macro `format!()` é uma maneira conveniente de gerar uma string _owned_ a partir de valores dinâmicos. Ela\n"
+"* A macro `format!()` é uma maneira conveniente de gerar uma string _owned_ "
+"a partir de valores dinâmicos. Ela\n"
" aceita os mesmos formatadores que `println!()`.\n"
" \n"
-"* Você pode emprestar _slices_ `&str` de `String` através do operador `&` e, opcionalmente, selecionar um _range_ (\"intervalo\").\n"
+"* Você pode emprestar _slices_ `&str` de `String` através do operador `&` e, "
+"opcionalmente, selecionar um _range_ (\"intervalo\").\n"
" \n"
-"* Para programadores C++: pense em `&str` como `const char*` de C++, mas que sempre aponta\n"
-" para uma string válida na memória. Em Rust, `String` é um equivalente aproximado de `std::string` de C++\n"
-" (principal diferença: ele só pode conter bytes codificados em UTF-8 e nunca usará uma otimização "
-"de string pequena).\n"
+"* Para programadores C++: pense em `&str` como `const char*` de C++, mas que "
+"sempre aponta\n"
+" para uma string válida na memória. Em Rust, `String` é um equivalente "
+"aproximado de `std::string` de C++\n"
+" (principal diferença: ele só pode conter bytes codificados em UTF-8 e "
+"nunca usará uma otimização de string pequena).\n"
" \n"
""
@@ -3160,11 +3591,11 @@ msgstr "# Funções"
#: src/basic-syntax/functions.md:3
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 ""
-"Uma versão em Rust da famosa pergunta de entrevistas [FizzBuzz](https://en.wikipedia.org/wiki/"
-"Fizz_buzz):"
+"Uma versão em Rust da famosa pergunta de entrevistas [FizzBuzz](https://en."
+"wikipedia.org/wiki/Fizz_buzz):"
#: src/basic-syntax/functions.md:5
msgid ""
@@ -3199,42 +3630,53 @@ 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."
-msgstr ""
-"* Nos referimos em `main` a uma função escrita abaixo. Nem declarações prévias e nem cabeçalhos são necessários.\n"
-"* Os parâmetros de declaração são seguidos por um tipo (o inverso de algumas linguagens de programação) e, em seguida, um tipo de retorno.\n"
-"* A última expressão em um corpo de uma função (ou qualquer bloco) torna-se o valor de retorno. Simplesmente omita o `;` no final da expressão.\n"
-"* Algumas funções não têm valor de retorno e retornam o 'tipo unitário', `()`. O compilador irá inferir isso se o tipo de retorno `-> ()` for omitido.\n"
-"* A expressão de intervalo no loop `for` em `fizzbuzz_to()` contém `=n`, o que faz com que inclua o limite superior."
+"* 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 ""
+"* Nos referimos em `main` a uma função escrita abaixo. Nem declarações "
+"prévias e nem cabeçalhos são necessários.\n"
+"* Os parâmetros de declaração são seguidos por um tipo (o inverso de algumas "
+"linguagens de programação) e, em seguida, um tipo de retorno.\n"
+"* A última expressão em um corpo de uma função (ou qualquer bloco) torna-se "
+"o valor de retorno. Simplesmente omita o `;` no final da expressão.\n"
+"* Algumas funções não têm valor de retorno e retornam o 'tipo unitário', "
+"`()`. O compilador irá inferir isso se o tipo de retorno `-> ()` for "
+"omitido.\n"
+"* A expressão de intervalo no loop `for` em `fizzbuzz_to()` contém `=n`, o "
+"que faz com que inclua o limite superior."
#: src/basic-syntax/rustdoc.md:1
msgid "# Rustdoc"
msgstr "# Rustdoc"
#: src/basic-syntax/rustdoc.md:3
-msgid "All language items in Rust can be documented using special `///` syntax."
-msgstr "Todos os itens da linguagem podem ser documentados com a sintaxe especial `///`."
+msgid ""
+"All language items in Rust can be documented using special `///` syntax."
+msgstr ""
+"Todos os itens da linguagem podem ser documentados com a sintaxe especial "
+"`///`."
#: 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 ""
@@ -3254,12 +3696,15 @@ msgstr ""
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 ""
-"O conteúdio é tratado como _Markdown_. Todos os _crates_ publicados na biblioteca Rust são\n"
+"O conteúdio é tratado como _Markdown_. Todos os _crates_ publicados na "
+"biblioteca Rust são\n"
"documentados automaticamente em [`docs.rs`](https://docs.rs) utilizando a\n"
-"ferramenta [rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html). É idiomático\n"
+"ferramenta [rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc."
+"html). É idiomático\n"
"documentar todos os itens públicos em uma API usando este padrão."
#: src/basic-syntax/rustdoc.md:24
@@ -3267,19 +3712,23 @@ 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 ""
"* Mostre aos alunos os documentos gerados para o crate `rand` em\n"
" [`docs.rs/rand`](https://docs.rs/rand).\n"
"\n"
-"* Este curso não inclui o rustdoc nos slides, apenas para economizar espaço, mas em\n"
+"* Este curso não inclui o rustdoc nos slides, apenas para economizar espaço, "
+"mas em\n"
" código real eles devem estar presentes.\n"
"\n"
-"* Os comentários internos do documento são discutidos posteriormente (na página sobre módulos) e não precisam ser\n"
+"* Os comentários internos do documento são discutidos posteriormente (na "
+"página sobre módulos) e não precisam ser\n"
" ser abordados aqui."
#: src/basic-syntax/methods.md:1 src/methods.md:1
@@ -3288,10 +3737,12 @@ msgstr "# Métodos"
#: src/basic-syntax/methods.md:3
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 ""
-"Métodos são funções associadas a um tipo específico. O primeiro argumento (`self`)\n"
+"Métodos são funções associadas a um tipo específico. O primeiro argumento "
+"(`self`)\n"
"de um método é uma instância do tipo ao qual está associado:"
#: src/basic-syntax/methods.md:6
@@ -3345,8 +3796,11 @@ msgstr ""
"```"
#: src/basic-syntax/methods.md:30
-msgid "* We will look much more at methods in today's exercise and in tomorrow's class."
-msgstr "* Veremos muito mais sobre métodos no exercício de hoje e na aula de amanhã."
+msgid ""
+"* We will look much more at methods in today's exercise and in tomorrow's "
+"class."
+msgstr ""
+"* Veremos muito mais sobre métodos no exercício de hoje e na aula de amanhã."
#: src/basic-syntax/methods.md:34
msgid ""
@@ -3369,7 +3823,8 @@ msgstr ""
" }\n"
" ```\n"
"\n"
-"- Adicione um construtor `Rectangle::novo_quadrado(largura: u32)` para ilustrar que\n"
+"- Adicione um construtor `Rectangle::novo_quadrado(largura: u32)` para "
+"ilustrar que\n"
" construtores podem ter parâmetros arbitrários."
#: src/basic-syntax/functions-interlude.md:1
@@ -3426,11 +3881,15 @@ msgstr ""
#: src/basic-syntax/functions-interlude.md:27
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 ""
-"* Ao usar tipos genéricos, o `Into` da biblioteca padrão pode fornecer um tipo de polimorfismo\n"
-" limitado nos tipos de argumento. Veremos mais detalhes em uma seção posterior."
+"* Ao usar tipos genéricos, o `Into` da biblioteca padrão pode fornecer um "
+"tipo de polimorfismo\n"
+" limitado nos tipos de argumento. Veremos mais detalhes em uma seção "
+"posterior."
#: src/exercises/day-1/morning.md:1
msgid "# Day 1: Morning Exercises"
@@ -3457,32 +3916,41 @@ msgstr "Algumas coisas a considerar ao resolver os exercícios:"
#: src/exercises/day-1/morning.md:13
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 ""
-"* Se possível, use uma instalação local do Rust. Desta forma, você pode obter\n"
-" preenchimento automático em seu editor. Veja a página sobre [Utilização do Cargo][Using Cargo] para detalhes\n"
+"* Se possível, use uma instalação local do Rust. Desta forma, você pode "
+"obter\n"
+" preenchimento automático em seu editor. Veja a página sobre [Utilização do "
+"Cargo][Using Cargo] para detalhes\n"
" sobre instalação do Rust.\n"
"\n"
"* Alternativamente, utilize o Rust Playground."
#: src/exercises/day-1/morning.md:19
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 ""
-"Os trechos de código não são editáveis de propósito: os trechos de código embutidos perdem\n"
+"Os trechos de código não são editáveis de propósito: os trechos de código "
+"embutidos perdem\n"
"seu estado se você sair da página."
#: 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
-msgid "After looking at the exercises, you can look at the [solutions] provided."
-msgstr "Depois de ver os exercícios, você pode ver as [soluções][solutions] fornecidas."
+msgid ""
+"After looking at the exercises, you can look at the [solutions] provided."
+msgstr ""
+"Depois de ver os exercícios, você pode ver as [soluções][solutions] "
+"fornecidas."
#: src/exercises/day-1/implicit-conversions.md:1
msgid "# Implicit Conversions"
@@ -3490,10 +3958,12 @@ msgstr "# Conversões Implícitas"
#: src/exercises/day-1/implicit-conversions.md:3
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 não aplicará automaticamente _conversões implícitas_ entre os tipos ([ao contrário\n"
+"Rust não aplicará automaticamente _conversões implícitas_ entre os tipos "
+"([ao contrário\n"
"de C++][3]). Você pode ver isso em um programa como este:"
#: src/exercises/day-1/implicit-conversions.md:6
@@ -3527,36 +3997,48 @@ msgstr ""
#: src/exercises/day-1/implicit-conversions.md:19
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 ""
-"Todos os tipos inteiros do Rust implementam os _traits_ [`From`][1] e [`Into`][2]\n"
-"para nos deixar converter entre eles. O trait `From` tem um único método `from()`\n"
+"Todos os tipos inteiros do Rust implementam os _traits_ [`From`][1] e "
+"[`Into`][2]\n"
+"para nos deixar converter entre eles. O trait `From` tem um único método "
+"`from()`\n"
"e da mesma forma, o trait `Into` tem um único método `into()`.\n"
-"A implementação desses traits é como um tipo expressa que pode ser convertido em\n"
+"A implementação desses traits é como um tipo expressa que pode ser "
+"convertido em\n"
"outro tipo."
#: src/exercises/day-1/implicit-conversions.md:25
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 ""
-"A biblioteca padrão tem uma implementação de `From for i16`, o que significa\n"
+"A biblioteca padrão tem uma implementação de `From for i16`, o que "
+"significa\n"
"que podemos converter uma variável `x` do tipo `i8` para um `i16` chamando\n"
-"`i16::from(x)`. Ou, mais simples, com `x.into()`, porque a implementação `From for i16`\n"
+"`i16::from(x)`. Ou, mais simples, com `x.into()`, porque a implementação "
+"`From for i16`\n"
"cria automaticamente uma implementação de `Into for i8`."
#: src/exercises/day-1/implicit-conversions.md:30
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 ""
-"O mesmo se aplica às suas próprias implementações de `From` para seus próprios tipos, logo é\n"
-"suficiente implementar apenas `From` para obter uma respectiva implementação `Into` automaticamente."
+"O mesmo se aplica às suas próprias implementações de `From` para seus "
+"próprios tipos, logo é\n"
+"suficiente implementar apenas `From` para obter uma respectiva implementação "
+"`Into` automaticamente."
#: src/exercises/day-1/implicit-conversions.md:33
msgid ""
@@ -3567,7 +4049,8 @@ 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. Execute o programa acima e observe o erro de compilação.\n"
@@ -3575,9 +4058,11 @@ msgstr ""
"2. Atualize o código acima para utilizar `into()` para fazer a conversão.\n"
"\n"
"3. Mude os tipos de `x` e `y` para outros tipos (como `f32`, `bool`,\n"
-" `i128`) para ver quais tipos você pode converter para quais outros tipos. Experimente\n"
+" `i128`) para ver quais tipos você pode converter para quais outros tipos. "
+"Experimente\n"
" converter tipos pequenos em tipos grandes e vice-versa. Verifique a\n"
-" [documentação da biblioteca padrão][1] para ver se `From` está implementado para\n"
+" [documentação da biblioteca padrão][1] para ver se `From` está "
+"implementado para\n"
" os pares que você verificar."
#: src/exercises/day-1/for-loops.md:1
@@ -3599,8 +4084,12 @@ msgstr ""
"```"
#: src/exercises/day-1/for-loops.md:9
-msgid "You can print such an array by asking for its debug representation with `{:?}`:"
-msgstr "Você pode imprimir tal matriz solicitando sua representação de depuração com `{:?}`:"
+msgid ""
+"You can print such an array by asking for its debug representation with `{:?}"
+"`:"
+msgstr ""
+"Você pode imprimir tal matriz solicitando sua representação de depuração com "
+"`{:?}`:"
#: src/exercises/day-1/for-loops.md:11
msgid ""
@@ -3623,7 +4112,8 @@ msgid ""
"Rust lets you iterate over things like arrays and ranges using the `for`\n"
"keyword:"
msgstr ""
-"Rust permite iterar em coisas como matrizes e _ranges_ (faixas ou intervalos) usando\n"
+"Rust permite iterar em coisas como matrizes e _ranges_ (faixas ou "
+"intervalos) usando\n"
"a palavra-chave `for`:"
#: src/exercises/day-1/for-loops.md:21
@@ -3664,11 +4154,15 @@ msgstr ""
#: src/exercises/day-1/for-loops.md:38
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 ""
-"Use o exercício acima para escrever uma função `pretty_print` que imprime uma matriz e\n"
-"uma função `transpose` que irá transpor uma matriz (transformar linhas em colunas):"
+"Use o exercício acima para escrever uma função `pretty_print` que imprime "
+"uma matriz e\n"
+"uma função `transpose` que irá transpor uma matriz (transformar linhas em "
+"colunas):"
#: src/exercises/day-1/for-loops.md:41
msgid ""
@@ -3735,7 +4229,8 @@ msgstr ""
"\n"
"fn main() {\n"
" let matriz = [\n"
-" [101, 102, 103], // <-- o comentário faz com que o rustfmt adicione uma nova linha\n"
+" [101, 102, 103], // <-- o comentário faz com que o rustfmt adicione "
+"uma nova linha\n"
" [201, 202, 203],\n"
" [301, 302, 303],\n"
" ];\n"
@@ -3759,16 +4254,19 @@ msgid ""
"argument and return types? Something like `&[&[i32]]` for a two-dimensional\n"
"slice-of-slices. Why or why not?"
msgstr ""
-"Você poderia usar slices `&[i32]` em vez de matrizes 3 × 3 fixas no código para o seu\n"
+"Você poderia usar slices `&[i32]` em vez de matrizes 3 × 3 fixas no código "
+"para o seu\n"
"argumento e tipos de retorno? Algo como `&[&[i32]]` para um slice-de-slices\n"
"bidimensional. Por que sim ou por que não?"
#: src/exercises/day-1/for-loops.md:87
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 ""
-"Veja o crate [`ndarray`](https://docs.rs/ndarray/) para uma implementação de \n"
+"Veja o crate [`ndarray`](https://docs.rs/ndarray/) para uma implementação "
+"de \n"
"produção."
#: src/exercises/day-1/for-loops.md:92
@@ -3785,10 +4283,12 @@ msgstr "# Variáveis"
#: src/basic-syntax/variables.md:3
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 fornece segurança de tipo por meio de tipagem estática. Variáveis são imutáveis por\n"
+"Rust fornece segurança de tipo por meio de tipagem estática. Variáveis são "
+"imutáveis por\n"
"padrão:"
#: src/basic-syntax/variables.md:6
@@ -3805,15 +4305,15 @@ msgstr ""
#: src/basic-syntax/variables.md:17
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 ""
-"* Devido à inferência de tipos, o `i32` é opcional. Gradualmente mostraremos os tipos cada vez "
-"menos à medida que o curso progride.\n"
-"* Observe que como `println!` é uma macro, `x` não é movido, mesmo usando uma sintaxe parecida com "
-"a de uma função `println!(\"x: {}\", x)`"
+"* Devido à inferência de tipos, o `i32` é opcional. Gradualmente mostraremos "
+"os tipos cada vez menos à medida que o curso progride.\n"
+"* Observe que como `println!` é uma macro, `x` não é movido, mesmo usando "
+"uma sintaxe parecida com a de uma função `println!(\"x: {}\", x)`"
#: src/basic-syntax/type-inference.md:1
msgid "# Type Inference"
@@ -3865,33 +4365,36 @@ msgstr ""
#: src/basic-syntax/type-inference.md:26
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 ""
-"Este slide demonstra como o compilador Rust infere tipos com base em restrições dadas por "
-"declarações e usos de variáveis."
+"Este slide demonstra como o compilador Rust infere tipos com base em "
+"restrições dadas por declarações e usos de variáveis."
#: src/basic-syntax/type-inference.md:28
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 ""
-"É muito importante enfatizar que variáveis declaradas assim não são de um tipo dinâmico \"qualquer "
-"tipo\" que possa\n"
-"armazenar quaisquer dados. O código de máquina gerado por tal declaração é idêntico à declaração "
-"explícita de um tipo.\n"
-"O compilador faz o trabalho para nós e nos ajuda a escrever um código mais conciso."
+"É muito importante enfatizar que variáveis declaradas assim não são de um "
+"tipo dinâmico \"qualquer tipo\" que possa\n"
+"armazenar quaisquer dados. O código de máquina gerado por tal declaração é "
+"idêntico à declaração explícita de um tipo.\n"
+"O compilador faz o trabalho para nós e nos ajuda a escrever um código mais "
+"conciso."
#: src/basic-syntax/type-inference.md:32
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 ""
-"O código a seguir informa ao compilador para copiar para um determinado contêiner genérico sem que "
-"o código especifique explicitamente o tipo contido, usando `_` como _placeholder_:"
+"O código a seguir informa ao compilador para copiar para um determinado "
+"contêiner genérico sem que o código especifique explicitamente o tipo "
+"contido, usando `_` como _placeholder_:"
#: src/basic-syntax/type-inference.md:34
msgid ""
@@ -3921,13 +4424,13 @@ msgstr ""
#: src/basic-syntax/type-inference.md:46
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) depende "
-"de `FromIterator`, que [`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) depende de `FromIterator`, que [`HashSet`](https://doc."
+"rust-lang.org/std/iter/trait.FromIterator.html) implementa."
#: src/basic-syntax/static-and-const.md:1
msgid "# Static and Constant Variables"
@@ -3954,7 +4457,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"
@@ -3972,7 +4476,8 @@ msgstr ""
"fn computar_resumo(texto: &str) -> [u8; TAMANHO_RESUMO] {\n"
" let mut resumo = [ZERO.unwrap_or(0); TAMANHO_RESUMO];\n"
" for (idx, &b) in texto.as_bytes().iter().enumerate() {\n"
-" resumo[idx % TAMANHO_RESUMO] = resumo[idx % TAMANHO_RESUMO].wrapping_add(b);\n"
+" resumo[idx % TAMANHO_RESUMO] = resumo[idx % TAMANHO_RESUMO]."
+"wrapping_add(b);\n"
" }\n"
" resumo\n"
"}\n"
@@ -3985,7 +4490,9 @@ msgstr ""
#: src/basic-syntax/static-and-const.md:27
msgid "According to the [Rust RFC Book][1] these are inlined upon use."
-msgstr "De acordo com o [Rust RFC Book][1], eles são expandidos no próprio local (_inline_) quando utilizados."
+msgstr ""
+"De acordo com o [Rust RFC Book][1], eles são expandidos no próprio local "
+"(_inline_) quando utilizados."
#: src/basic-syntax/static-and-const.md:29
msgid "## `static`"
@@ -4015,30 +4522,38 @@ msgstr ""
#: src/basic-syntax/static-and-const.md:41
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."
msgstr ""
-"Conforme observado no [Rust RFC Book][1], `static` e `const` não são expandidos em linha (_inlined_) "
-"quando utilizados e possuem um local de memória real associado. Isso é útil para código inseguro (_unsafe_) e "
+"Conforme observado no [Rust RFC Book][1], `static` e `const` não são "
+"expandidos em linha (_inlined_) quando utilizados e possuem um local de "
+"memória real associado. Isso é útil para código inseguro (_unsafe_) e "
"embarcado, e a variável sobrevive durante toda a execução do programa."
#: src/basic-syntax/static-and-const.md:44
-msgid "We will look at mutating static data in the [chapter on Unsafe Rust](../unsafe.md)."
-msgstr "Veremos a mutação de dados estáticos no [capítulo sobre Rust Inseguro (_Unsafe_)](../unsafe.md)."
+msgid ""
+"We will look at mutating static data in the [chapter on Unsafe Rust](../"
+"unsafe.md)."
+msgstr ""
+"Veremos a mutação de dados estáticos no [capítulo sobre Rust Inseguro "
+"(_Unsafe_)](../unsafe.md)."
#: src/basic-syntax/static-and-const.md:48
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."
-msgstr ""
-"* Mencione que `const` se comporta semanticamente similar ao `constexpr` de C++.\n"
-"* `static`, por outro lado, é muito mais parecido com um `const` ou variável global mutável em C++.\n"
-"* Não é muito comum que alguém precise de uma constante avaliada em tempo de execução, mas é útil "
-"e mais seguro do que usar uma estática."
+"* `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."
+msgstr ""
+"* Mencione que `const` se comporta semanticamente similar ao `constexpr` de "
+"C++.\n"
+"* `static`, por outro lado, é muito mais parecido com um `const` ou variável "
+"global mutável em C++.\n"
+"* Não é muito comum que alguém precise de uma constante avaliada em tempo de "
+"execução, mas é útil e mais seguro do que usar uma estática."
#: src/basic-syntax/scopes-shadowing.md:1
msgid "# Scopes and Shadowing"
@@ -4046,10 +4561,12 @@ msgstr "# Escopos e _Shadowing_ (Sobreposição)"
#: src/basic-syntax/scopes-shadowing.md:3
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 ""
-"Você pode sobrepor (_shadow_) variáveis, tanto aquelas de escopos externos quanto de variáveis do\n"
+"Você pode sobrepor (_shadow_) variáveis, tanto aquelas de escopos externos "
+"quanto de variáveis do\n"
"mesmo escopo:"
#: src/basic-syntax/scopes-shadowing.md:6
@@ -4090,21 +4607,26 @@ msgstr ""
#: src/basic-syntax/scopes-shadowing.md:25
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."
-msgstr ""
-"* Definição: _Shadowing_ é diferente da mutação, porque após a sobreposição (_shadowing_), os locais de "
-"memória de ambas as variáveis existem ao mesmo tempo. Ambas estão disponíveis com o mesmo nome, "
-"dependendo de onde você as usa no código.\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."
+msgstr ""
+"* Definição: _Shadowing_ é diferente da mutação, porque após a sobreposição "
+"(_shadowing_), os locais de memória de ambas as variáveis existem ao mesmo "
+"tempo. Ambas estão disponíveis com o mesmo nome, dependendo de onde você as "
+"usa no código.\n"
"* Uma variável sobreposta pode ter um tipo diferente.\n"
-"* A sobreposição parece obscura a princípio, mas é conveniente para manter os valores após `.unwrap()`.\n"
-"* O código a seguir demonstra por que o compilador não pode simplesmente reutilizar locais de "
-"memória ao sobrepor uma variável imutável em um escopo, mesmo que o tipo não seja alterado."
+"* A sobreposição parece obscura a princípio, mas é conveniente para manter "
+"os valores após `.unwrap()`.\n"
+"* O código a seguir demonstra por que o compilador não pode simplesmente "
+"reutilizar locais de memória ao sobrepor uma variável imutável em um escopo, "
+"mesmo que o tipo não seja alterado."
#: src/basic-syntax/scopes-shadowing.md:30
msgid ""
@@ -4129,10 +4651,13 @@ msgstr "Tradicionalmente, as linguagens se dividem em duas grandes categorias:"
#: src/memory-management.md:5
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 ""
-"* Controle total através do gerenciamento manual de memória: C, C++, Pascal, ...\n"
-"* Segurança total através do gerenciamento automático de memória em tempo de execução: Java, Python, Go, Haskell, ..."
+"* Controle total através do gerenciamento manual de memória: C, C++, "
+"Pascal, ...\n"
+"* Segurança total através do gerenciamento automático de memória em tempo de "
+"execução: Java, Python, Go, Haskell, ..."
#: src/memory-management.md:8
msgid "Rust offers a new mix:"
@@ -4143,7 +4668,8 @@ msgid ""
"> Full control *and* safety via compile time enforcement of correct memory\n"
"> management."
msgstr ""
-"> Controle total **_e_** segurança por imposição do correto gerenciamento de memória em tempo de\n"
+"> Controle total **_e_** segurança por imposição do correto gerenciamento de "
+"memória em tempo de\n"
"> compilação."
#: src/memory-management.md:13
@@ -4175,11 +4701,11 @@ msgstr ""
" * Os valores têm tamanhos fixos conhecidos em tempo de compilação.\n"
" * Extremamente rápida: basta mover um ponteiro de pilha.\n"
" * Fácil de gerenciar: segue chamadas de função.\n"
-" * Ótima localidade de memória."
-"\n"
+" * Ótima localidade de memória.\n"
"* Heap: Armazenamento de valores fora das chamadas de função.\n"
" * Valores possuem tamanhos dinâmicos determinados em tempo de execução.\n"
-" * Ligeiramente mais devagar que a pilha: é necessário um pouco de gerenciamento.\n"
+" * Ligeiramente mais devagar que a pilha: é necessário um pouco de "
+"gerenciamento.\n"
" * Sem garantias de localidade de memória."
#: src/memory-management/stack.md:1
@@ -4188,10 +4714,12 @@ msgstr "# Memória de Pilha (_Stack Memory_)"
#: src/memory-management/stack.md:3
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 ""
-"A criação de uma `String` coloca dados de tamanho fixo na pilha e dados dimensionados dinamicamente\n"
+"A criação de uma `String` coloca dados de tamanho fixo na pilha e dados "
+"dimensionados dinamicamente\n"
"no heap:"
#: src/memory-management/stack.md:6
@@ -4240,14 +4768,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"
@@ -4255,23 +4784,29 @@ 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"
" ```"
msgstr ""
-"* Mencione que uma `String` é suportada por um `Vec`, portanto ela tem um tamanho e capacidade e pode crescer se "
-"for mutável por meio de realocação no heap.\n"
+"* Mencione que uma `String` é suportada por um `Vec`, portanto ela tem um "
+"tamanho e capacidade e pode crescer se for mutável por meio de realocação no "
+"heap.\n"
"\n"
-"* Se os alunos perguntarem sobre isso, você pode mencionar que a memória subjacente é alocada no heap usando o "
-"_[System Allocator]_ e os alocadores personalizados podem ser implementados usando a _[API Allocator][Allocator API]_.\n"
+"* Se os alunos perguntarem sobre isso, você pode mencionar que a memória "
+"subjacente é alocada no heap usando o _[System Allocator]_ e os alocadores "
+"personalizados podem ser implementados usando a _[API Allocator][Allocator "
+"API]_.\n"
"\n"
-"* Podemos inspecionar o layout da memória com código inseguro (`unsafe`). No entanto, você deve apontar que isso é "
-"legitimamente inseguro!\n"
+"* Podemos inspecionar o layout da memória com código inseguro (`unsafe`). No "
+"entanto, você deve apontar que isso é legitimamente inseguro!\n"
"\n"
"```rust,editable\n"
"fn main() {\n"
@@ -4279,11 +4814,14 @@ msgstr ""
" s1.push(' ');\n"
" s1.push_str(\"mundo\");\n"
" // NÃO FAÇA ISSO EM CASA! Somente com propósito educacional.\n"
-" // String não fornece nenhuma garantia sobre o seu layout, então isso pode levar\n"
+" // String não fornece nenhuma garantia sobre o seu layout, então isso "
+"pode levar\n"
" // a um comportamento indefinido.\n"
" unsafe {\n"
-" let (capacity, ptr, len): (usize, usize, usize) = std::mem::transmute(s1);\n"
-" println!(\"Ponteiro = {ptr:#x}, tamanho = {len}, capacidade = {capacity}\");\n"
+" let (capacity, ptr, len): (usize, usize, usize) = std::mem::"
+"transmute(s1);\n"
+" println!(\"Ponteiro = {ptr:#x}, tamanho = {len}, capacidade = "
+"{capacity}\");\n"
" }\n"
"}\n"
"```"
@@ -4298,9 +4836,11 @@ msgstr "Você mesmo aloca e desaloca memória no heap."
#: src/memory-management/manual.md:5
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 não for feito com cuidado, isso pode levar a travamentos, bugs, vulnerabilidades de segurança e vazamentos de memória."
+"Se não for feito com cuidado, isso pode levar a travamentos, bugs, "
+"vulnerabilidades de segurança e vazamentos de memória."
#: src/memory-management/manual.md:7
msgid "## C Example"
@@ -4334,7 +4874,8 @@ msgstr ""
#: src/memory-management/manual.md:21
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 ""
"Memória é vazada se a função retornar mais cedo entre `malloc` e `free`: o\n"
@@ -4345,25 +4886,33 @@ msgid "# Scope-Based Memory Management"
msgstr "# Gerenciamento de Memória Baseado em Escopo"
#: src/memory-management/scope-based.md:3
-msgid "Constructors and destructors let you hook into the lifetime of an object."
-msgstr "Construtores e destrutores permitem que o tempo de vida de um objeto seja rastreado."
+msgid ""
+"Constructors and destructors let you hook into the lifetime of an object."
+msgstr ""
+"Construtores e destrutores permitem que o tempo de vida de um objeto seja "
+"rastreado."
#: src/memory-management/scope-based.md:5
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 ""
-"Ao envolver um ponteiro em um objeto, você pode liberar memória quando o objeto é\n"
-"destruído. O compilador garante que isso aconteça, mesmo que uma exceção seja\n"
+"Ao envolver um ponteiro em um objeto, você pode liberar memória quando o "
+"objeto é\n"
+"destruído. O compilador garante que isso aconteça, mesmo que uma exceção "
+"seja\n"
"lançada."
#: src/memory-management/scope-based.md:9
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 ""
-"Isso geralmente é chamado de _aquisição de recursos é inicialização_ (_Resource Acquisition Is Initialization_, RAII) e fornece\n"
+"Isso geralmente é chamado de _aquisição de recursos é inicialização_ "
+"(_Resource Acquisition Is Initialization_, RAII) e fornece\n"
"ponteiros inteligentes (_smart pointers_)."
#: src/memory-management/scope-based.md:12
@@ -4397,8 +4946,11 @@ msgstr ""
"* O destrutor libera o objeto `Pessoa` para o qual ele aponta."
#: src/memory-management/scope-based.md:25
-msgid "Special move constructors are used when passing ownership to a function:"
-msgstr "Construtores especiais de movimento (_move_) são usados ao passar o _\"ownership\"_ para uma função:"
+msgid ""
+"Special move constructors are used when passing ownership to a function:"
+msgstr ""
+"Construtores especiais de movimento (_move_) são usados ao passar o "
+"_\"ownership\"_ para uma função:"
#: src/memory-management/scope-based.md:27
msgid ""
@@ -4418,19 +4970,23 @@ msgstr "# Gerenciamento Automático de Memória"
#: src/memory-management/garbage-collection.md:3
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 ""
-"Uma alternativa ao gerenciamento de memória manual e baseado em escopo é o gerenciamento automático\n"
+"Uma alternativa ao gerenciamento de memória manual e baseado em escopo é o "
+"gerenciamento automático\n"
"de memória:"
#: src/memory-management/garbage-collection.md:6
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 ""
"* O programador nunca aloca ou desaloca memória explicitamente.\n"
-"* Um \"coletor de lixo\" (_garbage collector_) encontra memória não utilizada e a desaloca para o programador."
+"* Um \"coletor de lixo\" (_garbage collector_) encontra memória não "
+"utilizada e a desaloca para o programador."
#: src/memory-management/garbage-collection.md:9
msgid "## Java Example"
@@ -4465,36 +5021,42 @@ msgstr "O gerenciamento de memória no Rust é uma combinação:"
#: src/memory-management/rust.md:5
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 ""
"* Seguro e correto como Java, mas sem um coletor de lixo.\n"
-"* Dependendo de qual abstração (ou combinação de abstrações) você escolher, pode ser um simples "
-"ponteiro único, referência contada ou referência atomicamente contada.\n"
+"* Dependendo de qual abstração (ou combinação de abstrações) você escolher, "
+"pode ser um simples ponteiro único, referência contada ou referência "
+"atomicamente contada.\n"
"* Baseado em escopo como C++, mas o compilador impõe adesão total.\n"
-"* Um usuário do Rust pode escolher a abstração certa para a situação, algumas até sem custo em "
-"tempo de execução como C."
+"* Um usuário do Rust pode escolher a abstração certa para a situação, "
+"algumas até sem custo em tempo de execução como C."
#: src/memory-management/rust.md:10
msgid "Rust achieves this by modeling _ownership_ explicitly."
-msgstr "O Rust consegue isso modelando a propriedade (_ownership_) explicitamente."
+msgstr ""
+"O Rust consegue isso modelando a propriedade (_ownership_) explicitamente."
#: src/memory-management/rust.md:14
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 ""
-"* Neste ponto, se perguntado como, você pode mencionar que em Rust isso geralmente é tratado por "
-"_wrappers_ (invólucros) RAII tais como [Box], [Vec], [Rc] ou [Arc]. Eles encapsulam a propriedade (ownership) e a "
-"alocação de memória por vários meios e previnem os erros possíveis em C."
-"\n"
-"* Aqui você pode ser perguntado sobre destrutores, o _trait_ [Drop] é o equivalente em Rust."
+"* Neste ponto, se perguntado como, você pode mencionar que em Rust isso "
+"geralmente é tratado por _wrappers_ (invólucros) RAII tais como [Box], "
+"[Vec], [Rc] ou [Arc]. Eles encapsulam a propriedade (ownership) e a alocação "
+"de memória por vários meios e previnem os erros possíveis em C.\n"
+"* Aqui você pode ser perguntado sobre destrutores, o _trait_ [Drop] é o "
+"equivalente em Rust."
#: src/memory-management/comparison.md:1
msgid "# Comparison"
@@ -4502,7 +5064,8 @@ msgstr "# Comparação"
#: src/memory-management/comparison.md:3
msgid "Here is a rough comparison of the memory management techniques."
-msgstr "Aqui está uma comparação aproximada das técnicas de gerenciamento de memória."
+msgstr ""
+"Aqui está uma comparação aproximada das técnicas de gerenciamento de memória."
#: src/memory-management/comparison.md:5
msgid "## Pros of Different Memory Management Techniques"
@@ -4576,10 +5139,12 @@ msgstr "# Ownership (_\"Posse\"_)"
#: src/ownership.md:3
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 ""
-"Todas as associações de variáveis têm um _escopo_ onde são válidas e é um erro\n"
+"Todas as associações de variáveis têm um _escopo_ onde são válidas e é um "
+"erro\n"
"usar uma variável fora de seu escopo:"
#: src/ownership.md:6
@@ -4612,7 +5177,8 @@ msgid ""
"* A destructor can run here to free up resources.\n"
"* We say that the variable _owns_ the value."
msgstr ""
-"* No final do escopo, a variável é eliminada (_\"dropada\"_) e os dados são liberados.\n"
+"* No final do escopo, a variável é eliminada (_\"dropada\"_) e os dados são "
+"liberados.\n"
"* Um destrutor pode ser executado aqui para liberar recursos.\n"
"* Dizemos que a variável _possui_ (_owns_) o valor."
@@ -4656,18 +5222,19 @@ msgstr ""
"* Os dados foram _movidos_ de `s1` e `s1` não está mais acessível.\n"
"* Quando `s1` sai do escopo, nada acontece: ele não tem _ownership_.\n"
"* Quando `s2` sai do escopo, os dados da string são liberados.\n"
-"* Há sempre _exatamente_ uma associação de variável que possui (owns) um valor."
+"* Há sempre _exatamente_ uma associação de variável que possui (owns) um "
+"valor."
#: src/ownership/move-semantics.md:22
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 ""
-"* Mencione que isso é o oposto dos _defaults_ (padrões) em C++, que copia por valor, a menos que você use "
-"`std::move` (e o construtor `move` esteja definido!)."
-"\n"
+"* Mencione que isso é o oposto dos _defaults_ (padrões) em C++, que copia "
+"por valor, a menos que você use `std::move` (e o construtor `move` esteja "
+"definido!).\n"
"* No Rust, clones são explícitos (utilizando-se `clone`)."
#: src/ownership/moved-strings-rust.md:1
@@ -4798,10 +5365,12 @@ msgstr ""
#: src/ownership/double-free-modern-cpp.md:10
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 ""
-"* Os dados de `s1` no heap são duplicados e `s2` obtém sua própria cópia independente.\n"
+"* Os dados de `s1` no heap são duplicados e `s2` obtém sua própria cópia "
+"independente.\n"
"* Quando `s1` e `s2` saem de escopo, cada um libera sua própria memória."
#: src/ownership/double-free-modern-cpp.md:13
@@ -4895,7 +5464,8 @@ msgid ""
"When you pass a value to a function, the value is assigned to the function\n"
"parameter. This transfers ownership:"
msgstr ""
-"Quando você passa um valor para uma função, o valor é atribuído ao parâmetro\n"
+"Quando você passa um valor para uma função, o valor é atribuído ao "
+"parâmetro\n"
"da função. Isso transfere a _ownership_:"
#: src/ownership/moves-function-calls.md:6
@@ -4926,31 +5496,40 @@ msgstr ""
#: src/ownership/moves-function-calls.md:20
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."
-msgstr ""
-"* Com a primeira chamada para `diga_ola`, `main` desiste da ownership de `nome`. Depois disso, "
-"`nome` não pode mais ser usado dentro de `main`.\n"
-"* A memória do heap alocada para `nome` será liberada no final da função `diga_ola`.\n"
-"* `main` pode manter a ownership se passar `nome` como uma referência (`&nome`) e se `diga_ola` "
-"aceitar uma referência como um parâmetro.\n"
-"* Alternativamente, `main` pode passar um clone de `nome` na primeira chamada (`nome.clone()`).\n"
-"* Rust torna mais difícil a criação de cópias inadvertidamente do que o C++, tornando padrão a semântica "
-"de movimento e forçando os programadores a tornar os clones explícitos."
+"* 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 ""
+"* Com a primeira chamada para `diga_ola`, `main` desiste da ownership de "
+"`nome`. Depois disso, `nome` não pode mais ser usado dentro de `main`.\n"
+"* A memória do heap alocada para `nome` será liberada no final da função "
+"`diga_ola`.\n"
+"* `main` pode manter a ownership se passar `nome` como uma referência "
+"(`&nome`) e se `diga_ola` aceitar uma referência como um parâmetro.\n"
+"* Alternativamente, `main` pode passar um clone de `nome` na primeira "
+"chamada (`nome.clone()`).\n"
+"* Rust torna mais difícil a criação de cópias inadvertidamente do que o C++, "
+"tornando padrão a semântica de movimento e forçando os programadores a "
+"tornar os clones explícitos."
#: src/ownership/copy-clone.md:1
msgid "# Copying and Cloning"
msgstr "# Copia e Clonagem"
#: src/ownership/copy-clone.md:3
-msgid "While move semantics are the default, certain types are copied by default:"
-msgstr "Embora a semântica de movimento seja o padrão, certos tipos são copiados por padrão:"
+msgid ""
+"While move semantics are the default, certain types are copied by default:"
+msgstr ""
+"Embora a semântica de movimento seja o padrão, certos tipos são copiados por "
+"padrão:"
#: src/ownership/copy-clone.md:5
msgid ""
@@ -4978,7 +5557,8 @@ msgstr "Esses tipos implementam o _trait_ `Copy`."
#: src/ownership/copy-clone.md:16
msgid "You can opt-in your own types to use copy semantics:"
-msgstr "Você pode habilitar seus próprios tipos para usar a semântica de cópia:"
+msgstr ""
+"Você pode habilitar seus próprios tipos para usar a semântica de cópia:"
#: src/ownership/copy-clone.md:18
msgid ""
@@ -5020,16 +5600,20 @@ msgstr "Copia e clonagem não são a mesma coisa:"
#: src/ownership/copy-clone.md:37
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 ""
-"* Cópia refere-se a cópias bit a bit de regiões de memória e não funciona em objetos arbitrários.\n"
-"* Cópia não permite lógica personalizada (ao contrário dos construtores de cópia em C++).\n"
-"* Clonagem é uma operação mais geral e também permite um comportamento personalizado através da "
-"implementação do trait `Clone`.\n"
+"* Cópia refere-se a cópias bit a bit de regiões de memória e não funciona em "
+"objetos arbitrários.\n"
+"* Cópia não permite lógica personalizada (ao contrário dos construtores de "
+"cópia em C++).\n"
+"* Clonagem é uma operação mais geral e também permite um comportamento "
+"personalizado através da implementação do trait `Clone`.\n"
"* Cópia não funciona em tipos que implementam o trait `Drop`."
#: src/ownership/copy-clone.md:42 src/ownership/lifetimes-function-calls.md:29
@@ -5038,27 +5622,29 @@ msgstr "No exemplo acima, tente o seguinte:"
#: src/ownership/copy-clone.md:44
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 ""
-"* Adicione um campo `String` ao `struct Ponto`. Ele não irá compilar porque `String` não é um tipo "
-"`Copy`.\n"
-"* Remova `Copy` do atributo `derive`. O erro do compilador agora está no `println!` para `p1`.\n"
+"* Adicione um campo `String` ao `struct Ponto`. Ele não irá compilar porque "
+"`String` não é um tipo `Copy`.\n"
+"* Remova `Copy` do atributo `derive`. O erro do compilador agora está no "
+"`println!` para `p1`.\n"
"* Mostre que ele funciona se ao invés disso você clonar `p1`."
#: src/ownership/copy-clone.md:48
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 os alunos perguntarem sobre `derive`, basta dizer que isto é uma forma de gerar código em Rust\n"
-"em tempo de compilação. Nesse caso, as implementações padrão dos traits `Copy` e `Clone` são "
-"geradas."
+"Se os alunos perguntarem sobre `derive`, basta dizer que isto é uma forma de "
+"gerar código em Rust\n"
+"em tempo de compilação. Nesse caso, as implementações padrão dos traits "
+"`Copy` e `Clone` são geradas."
#: src/ownership/borrowing.md:1
msgid "# Borrowing"
@@ -5069,7 +5655,8 @@ msgid ""
"Instead of transferring ownership when calling a function, you can let a\n"
"function _borrow_ the value:"
msgstr ""
-"Em vez de transferir a ownership ao chamar uma função, você pode permitir que uma\n"
+"Em vez de transferir a ownership ao chamar uma função, você pode permitir "
+"que uma\n"
"função _empreste_ o valor:"
#: src/ownership/borrowing.md:6
@@ -5111,7 +5698,8 @@ msgid ""
"* The `add` function _borrows_ two points and returns a new point.\n"
"* The caller retains ownership of the inputs."
msgstr ""
-"* A função `somar` _pega emprestado_ (_borrows_) dois pontos e retorna um novo ponto.\n"
+"* A função `somar` _pega emprestado_ (_borrows_) dois pontos e retorna um "
+"novo ponto.\n"
"* O chamador mantém a _ownership_ das entradas."
#: src/ownership/borrowing.md:27
@@ -5120,10 +5708,11 @@ msgstr "Notas sobre os retornos da pilha:"
#: 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"
@@ -5144,14 +5733,16 @@ 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 "
-"perform 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 ""
-"* Demonstre que o retorno de `somar` é barato porque o compilador pode eliminar a operação de cópia. "
-"Modifique o código acima para imprimir endereços da pilha e execute-o no [Playground]. No "
-"nível de otimização \"DEBUG\", os endereços devem mudar, enquanto eles permanecem os mesmos quando a configuração "
-"é alterada para \"RELEASE\":\n"
+"* Demonstre que o retorno de `somar` é barato porque o compilador pode "
+"eliminar a operação de cópia. Modifique o código acima para imprimir "
+"endereços da pilha e execute-o no [Playground]. No nível de otimização "
+"\"DEBUG\", os endereços devem mudar, enquanto eles permanecem os mesmos "
+"quando a configuração é alterada para \"RELEASE\":\n"
"\n"
"```rust,editable\n"
"#[derive(Debug)]\n"
@@ -5169,10 +5760,12 @@ msgstr ""
" println!(\"{p1:?} + {p2:?} = {p3:?}\");\n"
" }\n"
" ```\n"
-"* O compilador Rust pode fazer otimização de valor de retorno (_Return Value Operation_ - RVO).\n"
-"* Em C++, a elisão (omissão) de cópia deve ser definida na especificação da linguagem porque os construtores "
-"podem ter efeitos colaterais. Em Rust, isso não é um problema. Se o RVO não aconteceu, o Rust "
-"sempre executará uma cópia `memcpy` simples e eficiente."
+"* O compilador Rust pode fazer otimização de valor de retorno (_Return Value "
+"Operation_ - RVO).\n"
+"* Em C++, a elisão (omissão) de cópia deve ser definida na especificação da "
+"linguagem porque os construtores podem ter efeitos colaterais. Em Rust, isso "
+"não é um problema. Se o RVO não aconteceu, o Rust sempre executará uma cópia "
+"`memcpy` simples e eficiente."
#: src/ownership/shared-unique-borrows.md:1
msgid "# Shared and Unique Borrows"
@@ -5224,20 +5817,21 @@ msgstr ""
#: src/ownership/shared-unique-borrows.md:25
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\"."
-msgstr ""
-"* O código acima não compila porque `a` é emprestado como mutável (através de `c`) e como imutável "
-"(através de `b`) ao mesmo tempo.\n"
-"* Mova a instrução `println!` para `b` antes do escopo que introduz `c` para fazer o código "
-"compilar.\n"
-"* Após essa alteração, o compilador percebe que `b` só é usado antes do novo empréstimo mutável de "
-"`a` através de `c`. Este é um recurso do verificador de empréstimo (_borrow checker_) chamado \"tempos de vida não lexicais\"."
+"* 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 ""
+"* O código acima não compila porque `a` é emprestado como mutável (através "
+"de `c`) e como imutável (através de `b`) ao mesmo tempo.\n"
+"* Mova a instrução `println!` para `b` antes do escopo que introduz `c` para "
+"fazer o código compilar.\n"
+"* Após essa alteração, o compilador percebe que `b` só é usado antes do novo "
+"empréstimo mutável de `a` através de `c`. Este é um recurso do verificador "
+"de empréstimo (_borrow checker_) chamado \"tempos de vida não lexicais\"."
#: src/ownership/lifetimes.md:1
msgid "# Lifetimes"
@@ -5264,16 +5858,23 @@ msgid ""
" 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 ""
-"* O tempo de vida pode ser implícito: `somar(p1: &Ponto, p2: &Ponto) -> Ponto`.\n"
-"* Tempos de vida também podem ser explícitos: `&'a Ponto`, `&'documento str`.\n"
-"* Leia `&'a Ponto` como \"um `Ponto` emprestado que é válido por pelo menos o\n"
+"* O tempo de vida pode ser implícito: `somar(p1: &Ponto, p2: &Ponto) -> "
+"Ponto`.\n"
+"* Tempos de vida também podem ser explícitos: `&'a Ponto`, `&'documento "
+"str`.\n"
+"* Leia `&'a Ponto` como \"um `Ponto` emprestado que é válido por pelo menos "
+"o\n"
" tempo de vida `a`\".\n"
-"* Tempos de vida são sempre inferidos pelo compilador: você não pode atribuir um tempo de vida\n"
+"* Tempos de vida são sempre inferidos pelo compilador: você não pode "
+"atribuir um tempo de vida\n"
" você mesmo.\n"
-" * Anotações de tempo de vida criam restrições; o compilador verifica se há\n"
+" * Anotações de tempo de vida criam restrições; o compilador verifica se "
+"há\n"
" uma solução válida.\n"
-"* Tempos de vida para argumentos de função e valores de retorno precisam ser completamente especificados,\n"
-" mas o Rust permite que eles sejam omitidos na maioria das vezes com [algumas regras\n"
+"* Tempos de vida para argumentos de função e valores de retorno precisam ser "
+"completamente especificados,\n"
+" mas o Rust permite que eles sejam omitidos na maioria das vezes com "
+"[algumas regras\n"
" simples](https://doc.rust-lang.org/nomicon/lifetime-elision.html)."
#: src/ownership/lifetimes-function-calls.md:1
@@ -5281,8 +5882,12 @@ msgid "# Lifetimes in Function Calls"
msgstr "# Tempos de Vida (_Lifetimes_) em Chamadas de Função"
#: src/ownership/lifetimes-function-calls.md:3
-msgid "In addition to borrowing its arguments, a function can return a borrowed value:"
-msgstr "Além de emprestar seus argumentos, uma função pode retornar um valor emprestado:"
+msgid ""
+"In addition to borrowing its arguments, a function can return a borrowed "
+"value:"
+msgstr ""
+"Além de emprestar seus argumentos, uma função pode retornar um valor "
+"emprestado:"
#: src/ownership/lifetimes-function-calls.md:5
msgid ""
@@ -5328,13 +5933,16 @@ msgid ""
msgstr ""
"* `'a` é um parâmetro genérico, ele é inferido pelo compilador.\n"
"* Os tempos de vida começam com `'` e `'a` é um name padrão típico.\n"
-"* Leia `&'a Ponto` como \"um `Ponto` emprestado que é válido por pelo menos o\n"
+"* Leia `&'a Ponto` como \"um `Ponto` emprestado que é válido por pelo menos "
+"o\n"
" tempo de vida `a`\".\n"
-" * A parte _pelo menos_ é importante quando os parâmetros estão em escopos diferentes."
+" * A parte _pelo menos_ é importante quando os parâmetros estão em escopos "
+"diferentes."
#: src/ownership/lifetimes-function-calls.md:31
msgid ""
-"* Move the declaration of `p2` and `p3` into 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"
@@ -5355,17 +5963,21 @@ 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 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 ""
-"* Mova a declaração de `p2` e `p3` para um novo escopo (`{ ... }`), resultando no seguinte código:\n"
+"* Mova a declaração de `p2` e `p3` para um novo escopo (`{ ... }`), "
+"resultando no seguinte código:\n"
" ```rust,ignore\n"
" #[derive(Debug)]\n"
" struct Ponto(i32, i32);\n"
@@ -5386,14 +5998,18 @@ msgstr ""
" ```\n"
" Note como isto não compila uma vez que `p3` vive mais que `p2`.\n"
"\n"
-"* Reinicie o espaço de trabalho e altere a assinatura da função para `fn mais_a_esquerda<'a, "
-" 'b>(p1: &'a Ponto, p2: &'a Ponto) -> &'b Ponto`. Isso não será compilado porque a relação entre os "
-" tempos de vida `'a` e `'b` não é clara.\n"
+"* Reinicie o espaço de trabalho e altere a assinatura da função para `fn "
+"mais_a_esquerda<'a, 'b>(p1: &'a Ponto, p2: &'a Ponto) -> &'b Ponto`. Isso "
+"não será compilado porque a relação entre os tempos de vida `'a` e `'b` "
+"não é clara.\n"
"* Outra forma de explicar:\n"
-" * Duas referências a dois valores são emprestadas por uma função e a função retorna\n"
+" * Duas referências a dois valores são emprestadas por uma função e a "
+"função retorna\n"
" outra referência.\n"
-" * Ela deve ter vindo de uma dessas duas entradas (ou de uma variável global).\n"
-" * De qual? O compilador precisa saber, de forma que no local da chamada a referência retornada não seja usada\n"
+" * Ela deve ter vindo de uma dessas duas entradas (ou de uma variável "
+"global).\n"
+" * De qual? O compilador precisa saber, de forma que no local da chamada a "
+"referência retornada não seja usada\n"
" por mais tempo do que uma variável de onde veio a referência."
#: src/ownership/lifetimes-data-structures.md:1
@@ -5401,8 +6017,11 @@ msgid "# Lifetimes in Data Structures"
msgstr "# Tempos de Vida (_Lifetimes_) em Estruturas de Dados"
#: src/ownership/lifetimes-data-structures.md:3
-msgid "If a data type stores borrowed data, it must be annotated with a lifetime:"
-msgstr "Se um tipo de dados armazena dados emprestados, ele deve ser anotado com um tempo de vida:"
+msgid ""
+"If a data type stores borrowed data, it must be annotated with a lifetime:"
+msgstr ""
+"Se um tipo de dados armazena dados emprestados, ele deve ser anotado com um "
+"tempo de vida:"
#: src/ownership/lifetimes-data-structures.md:5
msgid ""
@@ -5415,7 +6034,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"
@@ -5433,7 +6053,8 @@ msgstr ""
"}\n"
"\n"
"fn main() {\n"
-" let texto = String::from(\"A raposa marrom ágil pula sobre o cachorro preguiçoso.\");\n"
+" let texto = String::from(\"A raposa marrom ágil pula sobre o cachorro "
+"preguiçoso.\");\n"
" let raposa = Destaque(&texto[2..21]);\n"
" let cachorro = Destaque(&texto[35..53]);\n"
" // apagar(texto);\n"
@@ -5444,28 +6065,35 @@ msgstr ""
#: src/ownership/lifetimes-data-structures.md:25
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."
-msgstr ""
-"* No exemplo acima, a anotação em `Destaque` impõe que os dados subjacentes ao `&str` contido "
-"vivam pelo menos tanto quanto qualquer instância de `Destaque` que use esses dados.\n"
-"* Se `texto` for consumido antes do final do tempo de vida de `raposa` (ou `cachorro`), o "
-"verificador de empréstimo lançará um erro.\n"
-"* Tipos com dados emprestados forçam os usuários a manter os dados originais. Isso pode ser útil "
-"para criar exibições leves, mas geralmente as tornam um pouco mais difíceis de usar.\n"
-"* Quando possível, faça com que as estruturas de dados possuam (_own_) seus dados diretamente.\n"
-"* Algumas _structs_ com múltiplas referências internas podem ter mais de uma anotação de tempo de vida. Isso "
-"pode ser necessário se houver a necessidade de descrever-se relacionamentos de tempo de vida entre as "
-"próprias referências, além do tempo de vida da própria _struct_. Esses são casos de uso bastante "
-"avançados."
+"* 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 ""
+"* No exemplo acima, a anotação em `Destaque` impõe que os dados subjacentes "
+"ao `&str` contido vivam pelo menos tanto quanto qualquer instância de "
+"`Destaque` que use esses dados.\n"
+"* Se `texto` for consumido antes do final do tempo de vida de `raposa` (ou "
+"`cachorro`), o verificador de empréstimo lançará um erro.\n"
+"* Tipos com dados emprestados forçam os usuários a manter os dados "
+"originais. Isso pode ser útil para criar exibições leves, mas geralmente as "
+"tornam um pouco mais difíceis de usar.\n"
+"* Quando possível, faça com que as estruturas de dados possuam (_own_) seus "
+"dados diretamente.\n"
+"* Algumas _structs_ com múltiplas referências internas podem ter mais de uma "
+"anotação de tempo de vida. Isso pode ser necessário se houver a necessidade "
+"de descrever-se relacionamentos de tempo de vida entre as próprias "
+"referências, além do tempo de vida da própria _struct_. Esses são casos de "
+"uso bastante avançados."
#: src/exercises/day-1/afternoon.md:1
msgid "# Day 1: Afternoon Exercises"
@@ -5484,12 +6112,14 @@ msgid ""
msgstr "* Iteradores e ownership (difícil)."
#: src/exercises/day-1/book-library.md:1
-msgid "# Designing a Library"
-msgstr "# Projetando uma biblioteca"
+#, fuzzy
+msgid "# Storing Books"
+msgstr "# String"
#: src/exercises/day-1/book-library.md:3
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 ""
"Aprenderemos muito mais sobre structs e o tipo `Vec` amanhã. Por hora,\n"
@@ -5522,8 +6152,9 @@ 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 ""
"Use isso para criar um aplicativo de biblioteca. Copie o código abaixo para\n"
@@ -5575,7 +6206,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"
@@ -5590,12 +6222,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"
@@ -5627,10 +6262,12 @@ msgstr "# Iteradores e ownership"
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 ""
-"O modelo de _ownership_ do Rust afeta muitas APIs. Um exemplo disso são os _traits_\n"
+"O modelo de _ownership_ do Rust afeta muitas APIs. Um exemplo disso são os "
+"_traits_\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)."
@@ -5640,11 +6277,15 @@ msgstr "## `Iterator` (iterador)"
#: src/exercises/day-1/iterators-and-ownership.md:10
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 ""
-"Os _traits_ são como interfaces: eles descrevem o comportamento (métodos) para um tipo. o\n"
-"O _trait_ `Iterator` simplesmente diz que você pode chamar `next` até obter `None` como retorno:"
+"Os _traits_ são como interfaces: eles descrevem o comportamento (métodos) "
+"para um tipo. o\n"
+"O _trait_ `Iterator` simplesmente diz que você pode chamar `next` até obter "
+"`None` como retorno:"
#: src/exercises/day-1/iterators-and-ownership.md:13
msgid ""
@@ -5721,10 +6362,12 @@ msgstr "## `IntoIterator`"
#: src/exercises/day-1/iterators-and-ownership.md:50
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 ""
"O _trait_ `Iterator` informa como _iterar_ depois de criar um\n"
-"iterador. A característica relacionada `IntoIterator` informa como criar o iterador:"
+"iterador. A característica relacionada `IntoIterator` informa como criar o "
+"iterador:"
#: src/exercises/day-1/iterators-and-ownership.md:53
#, fuzzy
@@ -5764,7 +6407,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 ""
-"Observe que `IntoIter` e `Item` estão vinculados: o iterador deve ter o mesmo\n"
+"Observe que `IntoIter` e `Item` estão vinculados: o iterador deve ter o "
+"mesmo\n"
"Tipo `Item`, o que significa que ele retorna `Option`"
#: src/exercises/day-1/iterators-and-ownership.md:71
@@ -5776,7 +6420,8 @@ msgstr "Como antes, qual é o tipo retornado pelo iterador?"
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"
@@ -5786,7 +6431,8 @@ msgid ""
msgstr ""
"```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();"
#: src/exercises/day-1/iterators-and-ownership.md:83
@@ -5795,11 +6441,13 @@ msgstr "## Laços `for`"
#: src/exercises/day-1/iterators-and-ownership.md:85
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 ""
-"Agora que conhecemos `Iterator` e `IntoIterator`, podemos construir laços `for`.\n"
+"Agora que conhecemos `Iterator` e `IntoIterator`, podemos construir laços "
+"`for`.\n"
"Eles chamam `into_iter()` em uma expressão e itera sobre o resultado\n"
"iterador:"
@@ -5808,7 +6456,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"
@@ -5834,23 +6483,25 @@ msgid "What is the type of `word` in each loop?"
msgstr "Qual é o tipo de `palavra` em cada laço?"
#: 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 ""
"Experimente o código acima e depois consulte a documentação para [`impl\n"
"IntoIterator para\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 para\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"
"para verificar suas respostas."
#: src/welcome-day-2.md:1
@@ -5867,10 +6518,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."
@@ -5879,13 +6532,16 @@ msgstr ""
"\n"
"* Correspondência de padrões: desestruturando enums, structs, e arrays.\n"
"\n"
-"* Construtos de fluxo de controle: `if`, `if let`, `while`, `while let`, `break`, e\n"
+"* Construtos de fluxo de controle: `if`, `if let`, `while`, `while let`, "
+"`break`, e\n"
" `continue`.\n"
"\n"
-"* A Biblioteca Padrão: `String`, `Option` e `Result`, `Vec`, `HashMap`, `Rc`\n"
+"* A Biblioteca Padrão: `String`, `Option` e `Result`, `Vec`, `HashMap`, "
+"`Rc`\n"
" e `Arc`.\n"
"\n"
-"* Módulos: visibilidade, caminhos (paths), e hierarquia do sistema de arquivos."
+"* Módulos: visibilidade, caminhos (paths), e hierarquia do sistema de "
+"arquivos."
#: src/structs.md:1
msgid "# Structs"
@@ -5942,7 +6598,7 @@ msgstr ""
#: 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:42
+#: src/pattern-matching/match-guards.md:22 src/control-flow/blocks.md:43
#, fuzzy
msgid "Key Points:"
msgstr "Pontos chave:"
@@ -5952,23 +6608,35 @@ 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 ""
"* Structs funcionam como em C ou C++.\n"
-" * Como em C++, e ao contrário de C, nenhum _`typedef`_ é necessário para definir um tipo.\n"
+" * Como em C++, e ao contrário de C, nenhum _`typedef`_ é necessário para "
+"definir um tipo.\n"
" * Ao contrário do C++, não há herança entre _structs_.\n"
-"* Os métodos são definidos em um bloco _`impl`_, que veremos nos próximos slides.\n"
-"* Este pode ser um bom momento para que as pessoas saibam que existem diferentes tipos de _structs_.\n"
-" * _Structs_ de tamanho zero `por exemplo, struct Foo;` podem ser usadas ao implementar uma característica em algum tipo, mas não possuem nenhum dado que\n"
+"* Os métodos são definidos em um bloco _`impl`_, que veremos nos próximos "
+"slides.\n"
+"* Este pode ser um bom momento para que as pessoas saibam que existem "
+"diferentes tipos de _structs_.\n"
+" * _Structs_ de tamanho zero `por exemplo, struct Foo;` podem ser usadas ao "
+"implementar uma característica em algum tipo, mas não possuem nenhum dado "
+"que\n"
"você deseja armazenar nelas.\n"
-" * O próximo slide apresentará as estruturas tuplas (_Estruturas Tupla_) usadas quando o nome dos campos não são importantes.\n"
-"* A sintaxe `..pedro` permite copiar a maioria dos campos de uma _struct_ sem precisar explicitar seus tipos. Sempre deve ser o último elemento."
+" * O próximo slide apresentará as estruturas tuplas (_Estruturas Tupla_) "
+"usadas quando o nome dos campos não são importantes.\n"
+"* A sintaxe `..pedro` permite copiar a maioria dos campos de uma _struct_ "
+"sem precisar explicitar seus tipos. Sempre deve ser o último elemento."
#: src/structs/tuple-structs.md:1
msgid "# Tuple Structs"
@@ -5976,7 +6644,9 @@ msgstr "# Estruturas Tupla (Tuple Structs)"
#: src/structs/tuple-structs.md:3
msgid "If the field names are unimportant, you can use a tuple struct:"
-msgstr "Se os nomes dos campos não forem importantes, você pode usar uma estrutura de tupla:"
+msgstr ""
+"Se os nomes dos campos não forem importantes, você pode usar uma estrutura "
+"de tupla:"
#: src/structs/tuple-structs.md:5
msgid ""
@@ -6000,7 +6670,9 @@ msgstr ""
#: src/structs/tuple-structs.md:14
msgid "This is often used for single-field wrappers (called newtypes):"
-msgstr "Isso é comumente utilizado para _wrappers_ (invólucros) com campo único (chamados _newtypes_):"
+msgstr ""
+"Isso é comumente utilizado para _wrappers_ (invólucros) com campo único "
+"(chamados _newtypes_):"
#: src/structs/tuple-structs.md:16
msgid ""
@@ -6044,26 +6716,33 @@ msgstr ""
#: src/structs/tuple-structs.md:37
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"
+" * 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."
+"* The example is a subtle reference to the [Mars Climate Orbiter](https://en."
+"wikipedia.org/wiki/Mars_Climate_Orbiter) failure."
msgstr ""
-"_Newtypes_ são uma ótima maneira de codificar informações adicionais sobre o valor em um tipo primitivo, por exemplo:\n"
+"_Newtypes_ são uma ótima maneira de codificar informações adicionais sobre o "
+"valor em um tipo primitivo, por exemplo:\n"
" * O número é medido em alguma unidade: `Newtons` no exemplo acima.\n"
-" * O valor passou por alguma validação quando foi criado, então não é preciso validá-lo novamente a cada uso: `NumeroTelefone(String)` ou `NumeroImpar(u32)`.\n"
-"* Demonstre como somar um valor `f64` em um valor do tipo `Newtons` acessando o campo único do _newtype_.\n"
-" * Geralmente, Rust não gosta de coisas implícitas, como _unwrapping_ automático ou, por exemplo, usar booleanos como inteiros.\n"
+" * O valor passou por alguma validação quando foi criado, então não é "
+"preciso validá-lo novamente a cada uso: `NumeroTelefone(String)` ou "
+"`NumeroImpar(u32)`.\n"
+"* Demonstre como somar um valor `f64` em um valor do tipo `Newtons` "
+"acessando o campo único do _newtype_.\n"
+" * Geralmente, Rust não gosta de coisas implícitas, como _unwrapping_ "
+"automático ou, por exemplo, usar booleanos como inteiros.\n"
" * Sobrecarga de operadores é discutido no Dia 3 (_generics_).\n"
-"* O examplo é uma referência sutil a falha do [Orbitador Climático de Marte](https://pt.wikipedia.org/wiki/Mars_Climate_Orbiter)."
+"* O examplo é uma referência sutil a falha do [Orbitador Climático de Marte]"
+"(https://pt.wikipedia.org/wiki/Mars_Climate_Orbiter)."
#: src/structs/field-shorthand.md:1
msgid "# Field Shorthand Syntax"
@@ -6119,8 +6798,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"
@@ -6134,8 +6813,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"
@@ -6163,11 +6842,12 @@ 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 ""
-"* A função `new` poderia ser escrita utilizando `Self` como tipo, já que ele é intercambiável com o nome da _struct_\n"
+"* A função `new` poderia ser escrita utilizando `Self` como tipo, já que "
+"ele é intercambiável com o nome da _struct_\n"
"\n"
" ```rust,editable\n"
" #[derive(Debug)]\n"
@@ -6181,7 +6861,8 @@ msgstr ""
" }\n"
" }\n"
" ``` \n"
-"* Implemente a _trait_ `Default` (Padrão) para a _struct_. Defina alguns campos e utilize valores padrão para os demais.\n"
+"* Implemente a _trait_ `Default` (Padrão) para a _struct_. Defina alguns "
+"campos e utilize valores padrão para os demais.\n"
"\n"
" ```rust,editable\n"
" #[derive(Debug)]\n"
@@ -6209,8 +6890,10 @@ msgstr ""
" ```\n"
"\n"
"* Métodos são definidos no bloco `impl`.\n"
-"* Use struct update syntax to define a new structure using `peter`. Note that the variable `peter` will no longer be accessible afterwards.\n"
-"* Utilize `{:#?}` para imprimir _structs_ para utilizar a representação `Debug` (de Depuração)."
+"* Use struct update syntax to define a new structure using `peter`. Note "
+"that the variable `peter` will no longer be accessible afterwards.\n"
+"* Utilize `{:#?}` para imprimir _structs_ para utilizar a representação "
+"`Debug` (de Depuração)."
#: src/enums.md:1
msgid "# Enums"
@@ -6255,7 +6938,8 @@ msgstr ""
"```rust,editable\n"
"fn gerar_numero_aleatorio() -> i32 {\n"
" // Implementação baseada em https://xkcd.com/221/\n"
-" 4 // Escolhido por uma rolagem de dados justa. Garantido ser aleatório.\n"
+" 4 // Escolhido por uma rolagem de dados justa. Garantido ser "
+"aleatório.\n"
"}\n"
"\n"
"#[derive(Debug)]\n"
@@ -6281,22 +6965,27 @@ msgstr ""
#: src/enums.md:36
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 "
+"`Tail`. 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 ""
"* Enumerações permitem coletar um conjunto de valores em um tipo\n"
-"* Esta página oferece um tipo de _enum_ `MoedaJogada` com duas variantes `Cara` e `Coroa`. Você pode observar o _namespace_ ao usar variantes.\n"
+"* Esta página oferece um tipo de _enum_ `MoedaJogada` com duas variantes "
+"`Cara` e `Coroa`. Você pode observar o _namespace_ ao usar variantes.\n"
"* Este pode ser um bom momento para comparar _Structs_ e _Enums_:\n"
-" * Em ambos, você pode ter uma versão simples sem campos (_unit struct_, ou estrutura unitária) ou uma com diferentes tipos de campo.\n"
-" * Em ambos, as funções associadas são definidas dentro de um bloco `impl`.\n"
-" * Você pode até mesmo implementar as diferentes variantes de uma _Enum_ com _Structs_ separadas, mas elas não seriam do mesmo tipo, como seriam se todas "
-"fossem definidas em uma _Enum_. "
+" * Em ambos, você pode ter uma versão simples sem campos (_unit struct_, ou "
+"estrutura unitária) ou uma com diferentes tipos de campo.\n"
+" * Em ambos, as funções associadas são definidas dentro de um bloco "
+"`impl`.\n"
+" * Você pode até mesmo implementar as diferentes variantes de uma _Enum_ "
+"com _Structs_ separadas, mas elas não seriam do mesmo tipo, como seriam se "
+"todas fossem definidas em uma _Enum_. "
#: src/enums/variant-payloads.md:1
msgid "# Variant Payloads"
@@ -6304,10 +6993,12 @@ msgstr "# Conteúdos Variantes"
#: src/enums/variant-payloads.md:3
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 ""
-"Você pode definir enums mais ricos onde as variantes carregam dados. Você pode então usar a\n"
+"Você pode definir enums mais ricos onde as variantes carregam dados. Você "
+"pode então usar a\n"
"instrução `match` (corresponder) para extrair os dados de cada variante:"
#: src/enums/variant-payloads.md:6
@@ -6350,7 +7041,8 @@ msgstr ""
"fn inspecionar(evento: EventoWeb) {\n"
" match evento {\n"
" EventoWeb::CarregarPagina => println!(\"página carregada\"),\n"
-" EventoWeb::TeclaPressionada(c) => println!(\"pressionou '{c}'\"),\n"
+" EventoWeb::TeclaPressionada(c) => println!(\"pressionou "
+"'{c}'\"),\n"
" EventoWeb::Clique { x, y } => println!(\"clicou em x={x}, y={y}\"),\n"
" }\n"
"}\n"
@@ -6368,37 +7060,48 @@ msgstr ""
#: src/enums/variant-payloads.md:35
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 ""
-"* Os valores nas variantes de uma _enum_ só podem ser acessados após uma correspondência de padrão. O padrão vincula referências aos campos no \"braço\" do "
-"_match_ após `=>`.\n"
-" * A expressão é comparada com os padrões de cima a baixo. Não existe _fall-through_ como em C ou C++.\n"
-" * A expressão _match_ possui um valor. O valor é o da última expressão executada em um \"braço\" do _match_.\n"
-" * Começando do topo, nós procuramos qual padrão corresponde ao valor, e então executamos o código após a flecha. Quando uma correspondência é encontrada, nós "
-"paramos. \n"
-"* Demonstre o que acontece quando a busca não abrange todas as possibilidades. Mencione a vantagem que o compilador do Rust oferece confirmando quando todos os "
-"casos foram tratados. \n"
+"* Os valores nas variantes de uma _enum_ só podem ser acessados após uma "
+"correspondência de padrão. O padrão vincula referências aos campos no "
+"\"braço\" do _match_ após `=>`.\n"
+" * A expressão é comparada com os padrões de cima a baixo. Não existe _fall-"
+"through_ como em C ou C++.\n"
+" * A expressão _match_ possui um valor. O valor é o da última expressão "
+"executada em um \"braço\" do _match_.\n"
+" * Começando do topo, nós procuramos qual padrão corresponde ao valor, e "
+"então executamos o código após a flecha. Quando uma correspondência é "
+"encontrada, nós paramos. \n"
+"* Demonstre o que acontece quando a busca não abrange todas as "
+"possibilidades. Mencione a vantagem que o compilador do Rust oferece "
+"confirmando quando todos os casos foram tratados. \n"
"* `match` inspeciona um campo discriminant escondido na `enum`.\n"
"* É possível recuperar o discriminante chamando `std::mem::discriminant()`\n"
-" * Isso é útil, por exemplo, ao implementar `PartialEq` para _structs_ nas quais comparar valores de campos não afeta a igualdade.\n"
-"* `EventoWeb::Clique { ... }` não é exatamente o mesmo que `EventoWeb::Clique(Clique)` com uma `struct Clique { ... }` _top-level_. A versão no próprio local "
-"(_inline_) não permite implementar _traits_, por exemplo. \n"
+" * Isso é útil, por exemplo, ao implementar `PartialEq` para _structs_ nas "
+"quais comparar valores de campos não afeta a igualdade.\n"
+"* `EventoWeb::Clique { ... }` não é exatamente o mesmo que `EventoWeb::"
+"Clique(Clique)` com uma `struct Clique { ... }` _top-level_. A versão no "
+"próprio local (_inline_) não permite implementar _traits_, por exemplo. \n"
" "
#: src/enums/sizes.md:1
@@ -6406,8 +7109,12 @@ msgid "# Enum Sizes"
msgstr "# Tamanhos de Enum"
#: src/enums/sizes.md:3
-msgid "Rust enums are packed tightly, taking constraints due to alignment into account:"
-msgstr "Enums, em Rust, são empacotados firmemente, levando em consideração as restrições devido ao alinhamento:"
+msgid ""
+"Rust enums are packed tightly, taking constraints due to alignment into "
+"account:"
+msgstr ""
+"Enums, em Rust, são empacotados firmemente, levando em consideração as "
+"restrições devido ao alinhamento:"
#: src/enums/sizes.md:5
msgid ""
@@ -6452,14 +7159,20 @@ msgstr ""
"```"
#: src/enums/sizes.md:25
-msgid "* See the [Rust Reference](https://doc.rust-lang.org/reference/type-layout.html)."
-msgstr "* Consulte a [Referência do 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 ""
+"* Consulte a [Referência do 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"
@@ -6476,35 +7189,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 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::