diff --git a/po/de.po b/po/de.po
index cfa8f599c583..9b2ab99258e2 100644
--- a/po/de.po
+++ b/po/de.po
@@ -4006,8 +4006,8 @@ msgid ""
"Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be "
"easier to read."
msgstr ""
-"Das Hinzufügen von `#`, z. B. `{a:#?}`, ruft ein „hübsches Druckformat“ "
-"(pretty print) auf, das einfacher zu lesen ist."
+"Das Hinzufügen von `#`, z. B. `{a:#?}`, ruft ein „hübsches "
+"Druckformat“ (pretty print) auf, das einfacher zu lesen ist."
#: src/tuples-and-arrays/tuples-and-arrays.md
msgid "Tuples:"
@@ -8926,8 +8926,8 @@ msgstr ""
"Diskussion auslösen, aber die Antwort lautet: aus Gründen der "
"Speichersicherheit kannst Du dies nicht über `a` tun, nachdem Du ein Slice "
"erstellt hast. Allerdings kannst Du die Werte sowohl von `a` als auch von "
-"`s` sicher lesen. Weitere Einzelheiten werden im Abschnitt „Ausleihenprüfer“ "
-"(borrow checker) erläutert."
+"`s` sicher lesen. Weitere Einzelheiten werden im Abschnitt "
+"„Ausleihenprüfer“ (borrow checker) erläutert."
#: src/slices-and-lifetimes/str.md
msgid ""
diff --git a/po/es.po b/po/es.po
index cc143dae5297..eee6739e3e1e 100644
--- a/po/es.po
+++ b/po/es.po
@@ -53,15 +53,14 @@ msgstr "Ejecutar Cargo a nivel local"
msgid "Day 1: Morning"
msgstr "Día 1: mañana"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-1.md src/welcome-day-2.md src/welcome-day-3.md
-#: src/welcome-day-4.md src/concurrency/welcome-async.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-1.md
+#: src/welcome-day-2.md src/welcome-day-3.md src/welcome-day-4.md
+#: src/concurrency/welcome-async.md
msgid "Welcome"
msgstr "Te damos la bienvenida"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-1.md src/hello-world.md src/types-and-values.md
-#: src/types-and-values/hello-world.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-1.md
+#: src/hello-world.md src/types-and-values.md src/types-and-values/hello-world.md
msgid "Hello, World"
msgstr "Hola, Mundo"
@@ -77,8 +76,8 @@ msgstr "Ventajas de Rust"
msgid "Playground"
msgstr "Playground"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-1.md src/types-and-values.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-1.md
+#: src/types-and-values.md
msgid "Types and Values"
msgstr "Tipos y valores"
@@ -106,17 +105,16 @@ msgstr "Ejercicio: Fibonacci"
#: src/control-flow-basics/solution.md src/tuples-and-arrays/solution.md
#: src/references/solution.md src/user-defined-types/solution.md
#: src/pattern-matching/solution.md src/methods-and-traits/solution.md
-#: src/generics/solution.md src/std-types/solution.md
-#: src/std-traits/solution.md src/memory-management/solution.md
-#: src/smart-pointers/solution.md src/borrowing/solution.md
-#: src/lifetimes/solution.md src/iterators/solution.md src/modules/solution.md
-#: src/testing/solution.md src/error-handling/solution.md
+#: src/generics/solution.md src/std-types/solution.md src/std-traits/solution.md
+#: src/memory-management/solution.md src/smart-pointers/solution.md
+#: src/borrowing/solution.md src/lifetimes/solution.md src/iterators/solution.md
+#: src/modules/solution.md src/testing/solution.md src/error-handling/solution.md
#: src/unsafe-rust/solution.md
msgid "Solution"
msgstr "Solución"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-1.md src/control-flow-basics.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-1.md
+#: src/control-flow-basics.md
msgid "Control Flow Basics"
msgstr "Básicos de Control de Flujo"
@@ -153,8 +151,7 @@ msgstr "Bloques y ámbitos"
msgid "Scopes and Shadowing"
msgstr "Ámbitos y _Shadowing_"
-#: src/SUMMARY.md src/control-flow-basics.md
-#: src/control-flow-basics/functions.md
+#: src/SUMMARY.md src/control-flow-basics.md src/control-flow-basics/functions.md
msgid "Functions"
msgstr "Funciones"
@@ -162,8 +159,7 @@ msgstr "Funciones"
msgid "Macros"
msgstr "Macros"
-#: src/SUMMARY.md src/control-flow-basics.md
-#: src/control-flow-basics/exercise.md
+#: src/SUMMARY.md src/control-flow-basics.md src/control-flow-basics/exercise.md
msgid "Exercise: Collatz Sequence"
msgstr "Ejercicio: secuencia de Collatz"
@@ -188,8 +184,7 @@ msgstr "Tuplas"
msgid "Array Iteration"
msgstr "Iteración de Arreglos (_Arrays_)"
-#: src/SUMMARY.md src/tuples-and-arrays.md
-#: src/tuples-and-arrays/destructuring.md
+#: src/SUMMARY.md src/tuples-and-arrays.md src/tuples-and-arrays/destructuring.md
msgid "Patterns and Destructuring"
msgstr "Patrones y Desestructuración"
@@ -262,8 +257,8 @@ msgstr "Ejercicio: eventos de ascensor"
msgid "Day 2: Morning"
msgstr "Día 2: Mañana"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-2.md src/pattern-matching.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-2.md
+#: src/pattern-matching.md
msgid "Pattern Matching"
msgstr "Correspondencia de Patrones"
@@ -279,8 +274,7 @@ msgstr "Desestructurando Structs"
msgid "Destructuring Enums"
msgstr "Desestructurando Enums"
-#: src/SUMMARY.md src/pattern-matching.md
-#: src/pattern-matching/let-control-flow.md
+#: src/SUMMARY.md src/pattern-matching.md src/pattern-matching/let-control-flow.md
msgid "Let Control Flow"
msgstr "Control de Flujo _Let_"
@@ -288,8 +282,8 @@ msgstr "Control de Flujo _Let_"
msgid "Exercise: Expression Evaluation"
msgstr "Ejercicio: evaluación de expresiones"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-2.md src/methods-and-traits.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-2.md
+#: src/methods-and-traits.md
msgid "Methods and Traits"
msgstr "Métodos y Traits"
@@ -438,8 +432,8 @@ msgstr "Ejercicio: ROT13"
msgid "Day 3: Morning"
msgstr "Día 3: Mañana"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-3.md src/memory-management.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-3.md
+#: src/memory-management.md
msgid "Memory Management"
msgstr "Manejo de Memoria"
@@ -475,8 +469,8 @@ msgstr "Trait `Drop`"
msgid "Exercise: Builder Type"
msgstr "Ejercicio: Constructores"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-3.md src/smart-pointers.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-3.md
+#: src/smart-pointers.md
msgid "Smart Pointers"
msgstr "Punteros inteligentes"
@@ -551,8 +545,8 @@ msgstr "Ejercicio: Análisis de Protobuf"
msgid "Day 4: Morning"
msgstr "Día 4: Mañana"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-4.md src/iterators.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-4.md
+#: src/iterators.md
msgid "Iterators"
msgstr "Iteradores"
@@ -572,8 +566,8 @@ msgstr "`FromIterator`"
msgid "Exercise: Iterator Method Chaining"
msgstr "Ejercicio: Encadenamiento de métodos del iterador"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-4.md src/modules.md src/modules/modules.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-4.md
+#: src/modules.md src/modules/modules.md
msgid "Modules"
msgstr "Módulos"
@@ -593,8 +587,8 @@ msgstr "`use`, `super`, `self`"
msgid "Exercise: Modules for a GUI Library"
msgstr "Ejercicio: Módulos para una biblioteca GUI"
-#: src/SUMMARY.md src/running-the-course/course-structure.md
-#: src/welcome-day-4.md src/testing.md src/chromium/testing.md
+#: src/SUMMARY.md src/running-the-course/course-structure.md src/welcome-day-4.md
+#: src/testing.md src/chromium/testing.md
msgid "Testing"
msgstr "Probando"
@@ -962,8 +956,7 @@ msgstr ""
"Compilar secuencias de comandos que compilan C++ o llevan a cabo acciones "
"arbitrarias"
-#: src/SUMMARY.md
-#: src/chromium/adding-third-party-crates/depending-on-a-crate.md
+#: src/SUMMARY.md src/chromium/adding-third-party-crates/depending-on-a-crate.md
msgid "Depending on a Crate"
msgstr "Depender de un crate"
@@ -1049,8 +1042,7 @@ msgid "Compass"
msgstr "Brújula"
#: src/SUMMARY.md src/concurrency/sync-exercises.md
-#: src/concurrency/sync-exercises/solutions.md
-#: src/concurrency/async-exercises.md
+#: src/concurrency/sync-exercises/solutions.md src/concurrency/async-exercises.md
#: src/concurrency/async-exercises/solutions.md
msgid "Solutions"
msgstr "Soluciones"
@@ -1171,8 +1163,7 @@ msgstr "Transmisores y Receptores"
msgid "Unbounded Channels"
msgstr "Canales sin límites"
-#: src/SUMMARY.md src/concurrency/channels.md
-#: src/concurrency/channels/bounded.md
+#: src/SUMMARY.md src/concurrency/channels.md src/concurrency/channels/bounded.md
msgid "Bounded Channels"
msgstr "Canales delimitados"
@@ -1219,8 +1210,7 @@ msgstr "Ejemplo"
#: src/SUMMARY.md src/concurrency/sync-exercises.md
#: src/concurrency/sync-exercises/dining-philosophers.md
-#: src/concurrency/sync-exercises/solutions.md
-#: src/concurrency/async-exercises.md
+#: src/concurrency/sync-exercises/solutions.md src/concurrency/async-exercises.md
msgid "Dining Philosophers"
msgstr "La cena de los filósofos"
@@ -1332,40 +1322,40 @@ msgstr "Créditos"
#: src/index.md
msgid ""
-"[![Build workflow](https://img.shields.io/github/actions/workflow/status/"
-"google/comprehensive-rust/build.yml?style=flat-square)](https://github.com/"
-"google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain) [!"
-"[GitHub contributors](https://img.shields.io/github/contributors/google/"
-"comprehensive-rust?style=flat-square)](https://github.com/google/"
-"comprehensive-rust/graphs/contributors) [![GitHub stars](https://img.shields."
-"io/github/stars/google/comprehensive-rust?style=flat-square)](https://github."
-"com/google/comprehensive-rust/stargazers)"
+"[![Build workflow](https://img.shields.io/github/actions/workflow/status/google/"
+"comprehensive-rust/build.yml?style=flat-square)](https://github.com/google/"
+"comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain) [![GitHub "
+"contributors](https://img.shields.io/github/contributors/google/comprehensive-"
+"rust?style=flat-square)](https://github.com/google/comprehensive-rust/graphs/"
+"contributors) [![GitHub stars](https://img.shields.io/github/stars/google/"
+"comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-"
+"rust/stargazers)"
msgstr ""
"[![Flujo de trabajo](https://img.shields.io/github/actions/workflow/status/"
"google/comprehensive-rust/build.yml?style=flat-square)](https://github.com/"
"google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain) [!"
"[Colaboradores de GitHub](https://img.shields.io/github/contributors/google/"
-"comprehensive-rust?style=flat-square)](https://github.com/google/"
-"comprehensive-rust/graphs/contributors) [![Estrellas de GitHub](https://img."
-"shields.io/github/stars/google/comprehensive-rust?style=flat-square)]"
-"(https://github.com/google/comprehensive-rust/stargazers)"
+"comprehensive-rust?style=flat-square)](https://github.com/google/comprehensive-"
+"rust/graphs/contributors) [![Estrellas de GitHub](https://img.shields.io/github/"
+"stars/google/comprehensive-rust?style=flat-square)](https://github.com/google/"
+"comprehensive-rust/stargazers)"
#: src/index.md
msgid ""
-"This is a free Rust course developed by the Android team at Google. The "
-"course covers the full spectrum of Rust, from basic syntax to advanced "
-"topics like generics and error handling."
+"This is a free Rust course developed by the Android team at Google. The course "
+"covers the full spectrum of Rust, from basic syntax to advanced topics like "
+"generics and error handling."
msgstr ""
-"Este es un curso de Rust de tres días que ha desarrollado el equipo de "
-"Android de Google. El curso abarca todo lo relacionado con Rust, desde la "
-"sintaxis básica hasta temas avanzados como los genéricos y la gestión de "
-"errores. También incluye contenidos específicos de Android el último día."
+"Este es un curso de Rust de tres días que ha desarrollado el equipo de Android "
+"de Google. El curso abarca todo lo relacionado con Rust, desde la sintaxis "
+"básica hasta temas avanzados como los genéricos y la gestión de errores. "
+"También incluye contenidos específicos de Android el último día."
#: src/index.md
msgid ""
"The latest version of the course can be found at . If you are reading somewhere else, please check there "
-"for updates."
+"comprehensive-rust/>. If you are reading somewhere else, please check there for "
+"updates."
msgstr ""
"La última versión del curso se puede encontrar en . Si lo estás leyendo en otro lugar, consulta allí para "
@@ -1373,27 +1363,26 @@ msgstr ""
#: src/index.md
msgid ""
-"The course is available in other languages. Select your preferred language "
-"in the top right corner of the page or check the [Translations](running-the-"
-"course/translations.md) page for a list of all available translations."
+"The course is available in other languages. Select your preferred language in "
+"the top right corner of the page or check the [Translations](running-the-course/"
+"translations.md) page for a list of all available translations."
msgstr ""
-"Este curso está disponible en otros idiomas. Seleccione su idioma preferido "
-"en la esquina superior a la derecha, o navega a la página de [Tradduciones]"
-"(Translations](running-the-course/translations.md) para una lista de todas "
-"las traducciones disponibles."
+"Este curso está disponible en otros idiomas. Seleccione su idioma preferido en "
+"la esquina superior a la derecha, o navega a la página de [Tradduciones]"
+"(Translations](running-the-course/translations.md) para una lista de todas las "
+"traducciones disponibles."
#: src/index.md
msgid "The course is also available [as a PDF](comprehensive-rust.pdf)."
-msgstr ""
-"Este curso tambien está disponible [como un PDF](comprehensive-rust.pdf)."
+msgstr "Este curso tambien está disponible [como un PDF](comprehensive-rust.pdf)."
#: src/index.md
msgid ""
-"The goal of the course is to teach you Rust. We assume you don't know "
-"anything about Rust and hope to:"
+"The goal of the course is to teach you Rust. We assume you don't know anything "
+"about Rust and hope to:"
msgstr ""
-"El objetivo del curso es enseñarte Rust. Suponemos que no sabes nada sobre "
-"Rust y esperamos lograr lo siguiente:"
+"El objetivo del curso es enseñarte Rust. Suponemos que no sabes nada sobre Rust "
+"y esperamos lograr lo siguiente:"
#: src/index.md
msgid "Give you a comprehensive understanding of the Rust syntax and language."
@@ -1429,13 +1418,13 @@ msgstr ""
#: src/index.md
msgid ""
-"[Chromium](chromium.md): a half-day course on using Rust within Chromium "
-"based browsers. This includes interoperability with C++ and how to include "
-"third-party crates in Chromium."
+"[Chromium](chromium.md): a half-day course on using Rust within Chromium based "
+"browsers. This includes interoperability with C++ and how to include third-"
+"party crates in Chromium."
msgstr ""
-"[Chromium](../chromium.md): una clase de medio día sobre el uso de Rust "
-"dentro del navegador Chromium. Incluye interoperabilidad con C++ y como "
-"incorporar bibliotecas de tercer partido (\"crates\") en Chromium."
+"[Chromium](../chromium.md): una clase de medio día sobre el uso de Rust dentro "
+"del navegador Chromium. Incluye interoperabilidad con C++ y como incorporar "
+"bibliotecas de tercer partido (\"crates\") en Chromium."
#: src/index.md
msgid ""
@@ -1443,21 +1432,20 @@ msgid ""
"(embedded) development. Both microcontrollers and application processors are "
"covered."
msgstr ""
-"[Bare Metal](bare-metal.md): una clase de un día sobre el uso de Rust para "
-"el desarrollo bare-metal (insertado). Se tratarán tanto los "
-"microcontroladores como los procesadores de aplicaciones."
+"[Bare Metal](bare-metal.md): una clase de un día sobre el uso de Rust para el "
+"desarrollo bare-metal (insertado). Se tratarán tanto los microcontroladores "
+"como los procesadores de aplicaciones."
#: src/index.md
msgid ""
"[Concurrency](concurrency.md): a whole-day class on concurrency in Rust. We "
"cover both classical concurrency (preemptively scheduling using threads and "
-"mutexes) and async/await concurrency (cooperative multitasking using "
-"futures)."
+"mutexes) and async/await concurrency (cooperative multitasking using futures)."
msgstr ""
-"[Concurrencia](concurrency.md): una clase de un día sobre concurrencia en "
-"Rust. Abordaremos tanto la concurrencia clásica (programación interrumpible "
-"mediante hilos y exclusiones mutuas), como la concurrencia async / await "
-"(multitarea cooperativa mediante traits future)."
+"[Concurrencia](concurrency.md): una clase de un día sobre concurrencia en Rust. "
+"Abordaremos tanto la concurrencia clásica (programación interrumpible mediante "
+"hilos y exclusiones mutuas), como la concurrencia async / await (multitarea "
+"cooperativa mediante traits future)."
#: src/index.md
msgid "Non-Goals"
@@ -1465,12 +1453,11 @@ msgstr "Objetivos que no trataremos"
#: src/index.md
msgid ""
-"Rust is a large language and we won't be able to cover all of it in a few "
-"days. Some non-goals of this course are:"
+"Rust is a large language and we won't be able to cover all of it in a few days. "
+"Some non-goals of this course are:"
msgstr ""
-"Rust es un lenguaje muy amplio y no podremos abarcarlo todo en unos pocos "
-"días. Algunos de los objetivos que no se plantean en este curso son los "
-"siguientes:"
+"Rust es un lenguaje muy amplio y no podremos abarcarlo todo en unos pocos días. "
+"Algunos de los objetivos que no se plantean en este curso son los siguientes:"
#: src/index.md
msgid ""
@@ -1488,9 +1475,9 @@ msgstr "Suposiciones"
#: src/index.md
msgid ""
-"The course assumes that you already know how to program. Rust is a "
-"statically-typed language and we will sometimes make comparisons with C and "
-"C++ to better explain or contrast the Rust approach."
+"The course assumes that you already know how to program. Rust is a statically-"
+"typed language and we will sometimes make comparisons with C and C++ to better "
+"explain or contrast the Rust approach."
msgstr ""
"El curso presupone que ya sabes programar. Rust es un lenguaje estáticamente "
"tipado y, a veces, haremos comparaciones con C y C++ para explicarlo mejor o "
@@ -1507,13 +1494,13 @@ msgstr ""
#: src/index.md
msgid ""
"This is an example of a _speaker note_. We will use these to add additional "
-"information to the slides. This could be key points which the instructor "
-"should cover as well as answers to typical questions which come up in class."
+"information to the slides. This could be key points which the instructor should "
+"cover as well as answers to typical questions which come up in class."
msgstr ""
"Este es un ejemplo de una _nota del orador_. Las utilizaremos para añadir "
-"información adicional a las diapositivas. Puede tratarse de puntos clave que "
-"el instructor debería tratar, así como de respuestas a preguntas frecuentes "
-"que surgen en clase."
+"información adicional a las diapositivas. Puede tratarse de puntos clave que el "
+"instructor debería tratar, así como de respuestas a preguntas frecuentes que "
+"surgen en clase."
#: src/running-the-course.md src/running-the-course/course-structure.md
msgid "This page is for the course instructor."
@@ -1521,23 +1508,23 @@ msgstr "Esta página está dirigida al instructor del curso."
#: src/running-the-course.md
msgid ""
-"Here is a bit of background information about how we've been running the "
-"course internally at Google."
+"Here is a bit of background information about how we've been running the course "
+"internally at Google."
msgstr ""
-"A continuación, te ofrecemos información general sobre cómo se ha "
-"desarrollado el curso en Google."
+"A continuación, te ofrecemos información general sobre cómo se ha desarrollado "
+"el curso en Google."
#: src/running-the-course.md
msgid ""
-"We typically run classes from 9:00 am to 4:00 pm, with a 1 hour lunch break "
-"in the middle. This leaves 3 hours for the morning class and 3 hours for the "
-"afternoon class. Both sessions contain multiple breaks and time for students "
-"to work on exercises."
+"We typically run classes from 9:00 am to 4:00 pm, with a 1 hour lunch break in "
+"the middle. This leaves 3 hours for the morning class and 3 hours for the "
+"afternoon class. Both sessions contain multiple breaks and time for students to "
+"work on exercises."
msgstr ""
-"Normalmente impartimos las clases de 09:00 a 16:00, con una pausa para "
-"almorzar de una hora. Esto deja 3 horas para la clase de la mañana y 3 horas "
-"para la clase de la tarde. Ambas sesiones incluyen varias pausas y tiempo "
-"para que los estudiantes completen los ejercicios."
+"Normalmente impartimos las clases de 09:00 a 16:00, con una pausa para almorzar "
+"de una hora. Esto deja 3 horas para la clase de la mañana y 3 horas para la "
+"clase de la tarde. Ambas sesiones incluyen varias pausas y tiempo para que los "
+"estudiantes completen los ejercicios."
#: src/running-the-course.md
msgid "Before you run the course, you will want to:"
@@ -1545,88 +1532,86 @@ msgstr "Antes de impartir el curso, te recomdamos hacer lo siguiente:"
#: src/running-the-course.md
msgid ""
-"Make yourself familiar with the course material. We've included speaker "
-"notes to help highlight the key points (please help us by contributing more "
-"speaker notes!). When presenting, you should make sure to open the speaker "
-"notes in a popup (click the link with a little arrow next to \"Speaker "
-"Notes\"). This way you have a clean screen to present to the class."
+"Make yourself familiar with the course material. We've included speaker notes "
+"to help highlight the key points (please help us by contributing more speaker "
+"notes!). When presenting, you should make sure to open the speaker notes in a "
+"popup (click the link with a little arrow next to \"Speaker Notes\"). This way "
+"you have a clean screen to present to the class."
msgstr ""
-"Familiarízate con el material del curso. Hemos incluido notas del orador "
-"para destacar los puntos clave (ayúdanos a añadir más notas de este tipo). "
-"Cuando hagas una presentación, asegúrate de abrir las notas del orador en "
-"una ventana emergente (haz clic en el enlace que tiene una pequeña flecha "
-"junto a \"Notas del orador\"). De esta manera, tendrás una pantalla "
-"despejada para mostrar a la clase."
+"Familiarízate con el material del curso. Hemos incluido notas del orador para "
+"destacar los puntos clave (ayúdanos a añadir más notas de este tipo). Cuando "
+"hagas una presentación, asegúrate de abrir las notas del orador en una ventana "
+"emergente (haz clic en el enlace que tiene una pequeña flecha junto a \"Notas "
+"del orador\"). De esta manera, tendrás una pantalla despejada para mostrar a la "
+"clase."
#: src/running-the-course.md
msgid ""
"Decide on the dates. Since the course takes four days, we recommend that you "
-"schedule the days over two weeks. Course participants have said that they "
-"find it helpful to have a gap in the course since it helps them process all "
-"the information we give them."
+"schedule the days over two weeks. Course participants have said that they find "
+"it helpful to have a gap in the course since it helps them process all the "
+"information we give them."
msgstr ""
-"Decide bien las fechas. Dado que el curso dura cuatro días, te recomendamos "
-"que repartas los días a lo largo de dos semanas. Los participantes del curso "
-"han dicho que les resulta útil hacer pausas durante el curso, ya que les "
-"ayuda a procesar toda la información que les proporcionamos."
+"Decide bien las fechas. Dado que el curso dura cuatro días, te recomendamos que "
+"repartas los días a lo largo de dos semanas. Los participantes del curso han "
+"dicho que les resulta útil hacer pausas durante el curso, ya que les ayuda a "
+"procesar toda la información que les proporcionamos."
#: src/running-the-course.md
msgid ""
-"Find a room large enough for your in-person participants. We recommend a "
-"class size of 15-25 people. That's small enough that people are comfortable "
-"asking questions --- it's also small enough that one instructor will have "
-"time to answer the questions. Make sure the room has _desks_ for yourself "
-"and for the students: you will all need to be able to sit and work with your "
-"laptops. In particular, you will be doing a lot of live-coding as an "
-"instructor, so a lectern won't be very helpful for you."
+"Find a room large enough for your in-person participants. We recommend a class "
+"size of 15-25 people. That's small enough that people are comfortable asking "
+"questions --- it's also small enough that one instructor will have time to "
+"answer the questions. Make sure the room has _desks_ for yourself and for the "
+"students: you will all need to be able to sit and work with your laptops. In "
+"particular, you will be doing a lot of live-coding as an instructor, so a "
+"lectern won't be very helpful for you."
msgstr ""
"Busca una sala con capacidad suficiente para los participantes presenciales. "
-"Recomendamos una sala para entre 15 y 25 personas. Es el tamaño ideal para "
-"que los alumnos se sientan cómodos haciendo preguntas y para que el profesor "
-"tenga tiempo de responderlas. Asegúrate de que en la sala haya _mesas_ para "
-"ti y para los alumnos: todos necesitaréis sentaros y trabajar con vuestros "
-"portátiles. Además, como instructor, programarás mucho en directo, por lo "
-"que un atril no te resultará muy útil."
+"Recomendamos una sala para entre 15 y 25 personas. Es el tamaño ideal para que "
+"los alumnos se sientan cómodos haciendo preguntas y para que el profesor tenga "
+"tiempo de responderlas. Asegúrate de que en la sala haya _mesas_ para ti y para "
+"los alumnos: todos necesitaréis sentaros y trabajar con vuestros portátiles. "
+"Además, como instructor, programarás mucho en directo, por lo que un atril no "
+"te resultará muy útil."
#: src/running-the-course.md
msgid ""
-"On the day of your course, show up to the room a little early to set things "
-"up. We recommend presenting directly using `mdbook serve` running on your "
-"laptop (see the [installation instructions](https://github.com/google/"
-"comprehensive-rust#building)). This ensures optimal performance with no lag "
-"as you change pages. Using your laptop will also allow you to fix typos as "
-"you or the course participants spot them."
+"On the day of your course, show up to the room a little early to set things up. "
+"We recommend presenting directly using `mdbook serve` running on your laptop "
+"(see the [installation instructions](https://github.com/google/comprehensive-"
+"rust#building)). This ensures optimal performance with no lag as you change "
+"pages. Using your laptop will also allow you to fix typos as you or the course "
+"participants spot them."
msgstr ""
-"El mismo día del curso, llega con antelación a la clase para preparar todo "
-"lo necesario. Te recomendamos que realices la presentación directamente "
-"desde `mdbook serve` en tu portátil (consulta las \\[instrucciones de "
+"El mismo día del curso, llega con antelación a la clase para preparar todo lo "
+"necesario. Te recomendamos que realices la presentación directamente desde "
+"`mdbook serve` en tu portátil (consulta las \\[instrucciones de "
"instalación\\]\\[3\\]). Así conseguirás un rendimiento óptimo y que no haya "
"demoras al pasar de una página a otra. También podrás corregir las erratas a "
"medida que tú o los participantes del curso las detectéis."
#: src/running-the-course.md
msgid ""
-"Let people solve the exercises by themselves or in small groups. We "
-"typically spend 30-45 minutes on exercises in the morning and in the "
-"afternoon (including time to review the solutions). Make sure to ask people "
-"if they're stuck or if there is anything you can help with. When you see "
-"that several people have the same problem, call it out to the class and "
-"offer a solution, e.g., by showing people where to find the relevant "
-"information in the standard library."
+"Let people solve the exercises by themselves or in small groups. We typically "
+"spend 30-45 minutes on exercises in the morning and in the afternoon (including "
+"time to review the solutions). Make sure to ask people if they're stuck or if "
+"there is anything you can help with. When you see that several people have the "
+"same problem, call it out to the class and offer a solution, e.g., by showing "
+"people where to find the relevant information in the standard library."
msgstr ""
"Deja que los alumnos resuelvan los ejercicios por sí mismos o en pequeños "
-"grupos. Solemos dedicar entre 30 y 45 minutos a los ejercicios por la mañana "
-"y por la tarde (incluido el tiempo para revisar las soluciones). Asegúrate "
-"de preguntar a los asistentes si les está costando hacerlo o si hay algo en "
-"lo que puedas ayudarles. Cuando veas que varias personas tienen el mismo "
-"problema, coméntalo delante de la clase y ofrece una solución. Por ejemplo, "
-"enséñales dónde encontrar la información importante en la biblioteca "
-"estándar."
+"grupos. Solemos dedicar entre 30 y 45 minutos a los ejercicios por la mañana y "
+"por la tarde (incluido el tiempo para revisar las soluciones). Asegúrate de "
+"preguntar a los asistentes si les está costando hacerlo o si hay algo en lo que "
+"puedas ayudarles. Cuando veas que varias personas tienen el mismo problema, "
+"coméntalo delante de la clase y ofrece una solución. Por ejemplo, enséñales "
+"dónde encontrar la información importante en la biblioteca estándar."
#: src/running-the-course.md
msgid ""
-"That is all, good luck running the course! We hope it will be as much fun "
-"for you as it has been for us!"
+"That is all, good luck running the course! We hope it will be as much fun for "
+"you as it has been for us!"
msgstr ""
"Eso es todo. ¡Buena suerte con el curso, y esperamos que te diviertas tanto "
"como nosotros!"
@@ -1634,16 +1619,16 @@ msgstr ""
#: src/running-the-course.md
msgid ""
"Please [provide feedback](https://github.com/google/comprehensive-rust/"
-"discussions/86) afterwards so that we can keep improving the course. We "
-"would love to hear what worked well for you and what can be made better. "
-"Your students are also very welcome to [send us feedback](https://github.com/"
+"discussions/86) afterwards so that we can keep improving the course. We would "
+"love to hear what worked well for you and what can be made better. Your "
+"students are also very welcome to [send us feedback](https://github.com/google/"
+"comprehensive-rust/discussions/100)!"
+msgstr ""
+"Después, [envíanos un comentario](https://github.com/google/comprehensive-rust/"
+"discussions/86) para que podamos seguir mejorando el curso. Estaremos "
+"encantados de que nos cuentes qué aspectos destacarías y qué se puede mejorar. "
+"Tus alumnos también pueden [enviarnos sus sugerencias](https://github.com/"
"google/comprehensive-rust/discussions/100)!"
-msgstr ""
-"Después, [envíanos un comentario](https://github.com/google/comprehensive-"
-"rust/discussions/86) para que podamos seguir mejorando el curso. Estaremos "
-"encantados de que nos cuentes qué aspectos destacarías y qué se puede "
-"mejorar. Tus alumnos también pueden [enviarnos sus sugerencias](https://"
-"github.com/google/comprehensive-rust/discussions/100)!"
#: src/running-the-course/course-structure.md
msgid "Rust Fundamentals"
@@ -1651,11 +1636,11 @@ msgstr "Fundamentos de Rust"
#: src/running-the-course/course-structure.md
msgid ""
-"The first four days make up [Rust Fundamentals](../welcome-day-1.md). The "
-"days are fast paced and we cover a lot of ground!"
+"The first four days make up [Rust Fundamentals](../welcome-day-1.md). The days "
+"are fast paced and we cover a lot of ground!"
msgstr ""
-"Los primeros cuatro días forman los [Fundamentos de Rust](../welcome-day-1."
-"md). ¡Los días son muy intensos y cubrimos mucho terreno!"
+"Los primeros cuatro días forman los [Fundamentos de Rust](../welcome-day-1.md). "
+"¡Los días son muy intensos y cubrimos mucho terreno!"
#: src/running-the-course/course-structure.md
msgid "Course schedule:"
@@ -1680,16 +1665,15 @@ msgstr "Sección"
#: src/user-defined-types.md src/welcome-day-2.md src/pattern-matching.md
#: src/methods-and-traits.md src/welcome-day-2-afternoon.md src/generics.md
#: src/std-types.md src/std-traits.md src/welcome-day-3.md
-#: src/memory-management.md src/smart-pointers.md
-#: src/welcome-day-3-afternoon.md src/borrowing.md src/lifetimes.md
-#: src/welcome-day-4.md src/iterators.md src/modules.md src/testing.md
-#: src/welcome-day-4-afternoon.md src/error-handling.md src/unsafe-rust.md
-#: src/concurrency/welcome.md src/concurrency/threads.md
-#: src/concurrency/channels.md src/concurrency/send-sync.md
-#: src/concurrency/shared-state.md src/concurrency/sync-exercises.md
-#: src/concurrency/welcome-async.md src/concurrency/async.md
-#: src/concurrency/async-control-flow.md src/concurrency/async-pitfalls.md
-#: src/concurrency/async-exercises.md
+#: src/memory-management.md src/smart-pointers.md src/welcome-day-3-afternoon.md
+#: src/borrowing.md src/lifetimes.md src/welcome-day-4.md src/iterators.md
+#: src/modules.md src/testing.md src/welcome-day-4-afternoon.md
+#: src/error-handling.md src/unsafe-rust.md src/concurrency/welcome.md
+#: src/concurrency/threads.md src/concurrency/channels.md
+#: src/concurrency/send-sync.md src/concurrency/shared-state.md
+#: src/concurrency/sync-exercises.md src/concurrency/welcome-async.md
+#: src/concurrency/async.md src/concurrency/async-control-flow.md
+#: src/concurrency/async-pitfalls.md src/concurrency/async-exercises.md
msgid "Duration"
msgstr "Duración"
@@ -1796,8 +1780,8 @@ msgid ""
"In addition to the 4-day class on Rust Fundamentals, we cover some more "
"specialized topics:"
msgstr ""
-"Además de la clase de 4 días sobre los fundamentos de Rust, abordamos "
-"algunos temas más especializados:"
+"Además de la clase de 4 días sobre los fundamentos de Rust, abordamos algunos "
+"temas más especializados:"
#: src/running-the-course/course-structure.md
msgid "Rust in Android"
@@ -1806,37 +1790,37 @@ msgstr "Rust en Android"
#: src/running-the-course/course-structure.md
msgid ""
"The [Rust in Android](../android.md) deep dive is a half-day course on using "
-"Rust for Android platform development. This includes interoperability with "
-"C, C++, and Java."
+"Rust for Android platform development. This includes interoperability with C, C+"
+"+, and Java."
msgstr ""
-"[Rust en Android](../android.md) es un curso de medio día sobre el uso de "
-"Rust para el desarrollo de la plataforma Android. En él se incluye la "
+"[Rust en Android](../android.md) es un curso de medio día sobre el uso de Rust "
+"para el desarrollo de la plataforma Android. En él se incluye la "
"interoperabilidad con C, C++ y Java."
#: src/running-the-course/course-structure.md
msgid ""
-"You will need an [AOSP checkout](https://source.android.com/docs/setup/"
-"download/downloading). Make a checkout of the [course repository](https://"
-"github.com/google/comprehensive-rust) on the same machine and move the `src/"
-"android/` directory into the root of your AOSP checkout. This will ensure "
-"that the Android build system sees the `Android.bp` files in `src/android/`."
+"You will need an [AOSP checkout](https://source.android.com/docs/setup/download/"
+"downloading). Make a checkout of the [course repository](https://github.com/"
+"google/comprehensive-rust) on the same machine and move the `src/android/` "
+"directory into the root of your AOSP checkout. This will ensure that the "
+"Android build system sees the `Android.bp` files in `src/android/`."
msgstr ""
-"Necesitarás [conseguir el AOSP](https://source.android.com/docs/setup/"
-"download/downloading). Descarga el [repositorio del curso](https://github."
-"com/google/comprehensive-rust) en el mismo ordenador y mueve el directorio "
-"`src/android/` a la raíz del AOSP. De esta forma, el sistema de compilación "
-"de Android verá los archivos `Android.bp` en `src/android/`."
+"Necesitarás [conseguir el AOSP](https://source.android.com/docs/setup/download/"
+"downloading). Descarga el [repositorio del curso](https://github.com/google/"
+"comprehensive-rust) en el mismo ordenador y mueve el directorio `src/android/` "
+"a la raíz del AOSP. De esta forma, el sistema de compilación de Android verá "
+"los archivos `Android.bp` en `src/android/`."
#: src/running-the-course/course-structure.md
msgid ""
"Ensure that `adb sync` works with your emulator or real device and pre-build "
-"all Android examples using `src/android/build_all.sh`. Read the script to "
-"see the commands it runs and make sure they work when you run them by hand."
+"all Android examples using `src/android/build_all.sh`. Read the script to see "
+"the commands it runs and make sure they work when you run them by hand."
msgstr ""
-"Asegúrate que `adb sync` funciona con tu emulador o en un dispositivo físico "
-"y haz pre-build en todos los ejemplos de Android usando `src/android/"
-"build_all.sh`. Lee el script para ver los comandos que corren y asegúrate "
-"que funcionan cuando lo corres a mano."
+"Asegúrate que `adb sync` funciona con tu emulador o en un dispositivo físico y "
+"haz pre-build en todos los ejemplos de Android usando `src/android/build_all."
+"sh`. Lee el script para ver los comandos que corren y asegúrate que funcionan "
+"cuando lo corres a mano."
#: src/running-the-course/course-structure.md
msgid "Rust in Chromium"
@@ -1844,26 +1828,26 @@ msgstr "Rust en Chromium"
#: src/running-the-course/course-structure.md
msgid ""
-"The [Rust in Chromium](../chromium.md) deep dive is a half-day course on "
-"using Rust as part of the Chromium browser. It includes using Rust in "
-"Chromium's `gn` build system, bringing in third-party libraries (\"crates\") "
-"and C++ interoperability."
+"The [Rust in Chromium](../chromium.md) deep dive is a half-day course on using "
+"Rust as part of the Chromium browser. It includes using Rust in Chromium's `gn` "
+"build system, bringing in third-party libraries (\"crates\") and C++ "
+"interoperability."
msgstr ""
"[Rust en Chromium](../chromium.md) es una clase en profundidad de medio día "
-"sobre el uso de Rust como parte del navegador Chromium. Incluye el uso de "
-"Rust en el sistema de compilación `gn` de Chromium e incorpora bibliotecas "
-"de terceros (\"crates\") e interoperabilidad en C++."
+"sobre el uso de Rust como parte del navegador Chromium. Incluye el uso de Rust "
+"en el sistema de compilación `gn` de Chromium e incorpora bibliotecas de "
+"terceros (\"crates\") e interoperabilidad en C++."
#: src/running-the-course/course-structure.md
msgid ""
"You will need to be able to build Chromium --- a debug, component build is "
-"[recommended](../chromium/setup.md) for speed but any build will work. "
-"Ensure that you can run the Chromium browser that you've built."
+"[recommended](../chromium/setup.md) for speed but any build will work. Ensure "
+"that you can run the Chromium browser that you've built."
msgstr ""
-"Deberás poder compilar Chromium: [recomendamos] una compilación de "
-"depuración de componentes (../chromium/setup.md) por cuestiones de "
-"velocidad, pero cualquier compilación funcionará de forma correcta. "
-"Asegúrate de que puedes ejecutar el navegador Chromium que has compilado."
+"Deberás poder compilar Chromium: [recomendamos] una compilación de depuración "
+"de componentes (../chromium/setup.md) por cuestiones de velocidad, pero "
+"cualquier compilación funcionará de forma correcta. Asegúrate de que puedes "
+"ejecutar el navegador Chromium que has compilado."
#: src/running-the-course/course-structure.md
msgid "Bare-Metal Rust"
@@ -1871,25 +1855,25 @@ msgstr "Bare Metal Rust"
#: src/running-the-course/course-structure.md
msgid ""
-"The [Bare-Metal Rust](../bare-metal.md) deep dive is a full day class on "
-"using Rust for bare-metal (embedded) development. Both microcontrollers and "
+"The [Bare-Metal Rust](../bare-metal.md) deep dive is a full day class on using "
+"Rust for bare-metal (embedded) development. Both microcontrollers and "
"application processors are covered."
msgstr ""
-"[Bare Metal Rust](../bare-metal.md) es una clase de un día sobre cómo usar "
-"Rust para el desarrollo bare-metal (insertado). Se tratarán tanto "
-"microcontroladores como procesadores de aplicaciones."
+"[Bare Metal Rust](../bare-metal.md) es una clase de un día sobre cómo usar Rust "
+"para el desarrollo bare-metal (insertado). Se tratarán tanto microcontroladores "
+"como procesadores de aplicaciones."
#: src/running-the-course/course-structure.md
msgid ""
-"For the microcontroller part, you will need to buy the [BBC micro:bit]"
-"(https://microbit.org/) v2 development board ahead of time. Everybody will "
-"need to install a number of packages as described on the [welcome page](../"
-"bare-metal.md)."
+"For the microcontroller part, you will need to buy the [BBC micro:bit](https://"
+"microbit.org/) v2 development board ahead of time. Everybody will need to "
+"install a number of packages as described on the [welcome page](../bare-metal."
+"md)."
msgstr ""
-"Para la parte de los microcontroladores, necesitarás comprar con antelación "
-"la segunda versión de la placa programable [BBC micro:bit](https://microbit."
-"org/). Todo el mundo deberá instalar una serie de paquetes, tal como se "
-"describe en la [página de bienvenida](../bare-metal.md)."
+"Para la parte de los microcontroladores, necesitarás comprar con antelación la "
+"segunda versión de la placa programable [BBC micro:bit](https://microbit.org/). "
+"Todo el mundo deberá instalar una serie de paquetes, tal como se describe en la "
+"[página de bienvenida](../bare-metal.md)."
#: src/running-the-course/course-structure.md
msgid "Concurrency in Rust"
@@ -1897,21 +1881,21 @@ msgstr "Concurrencia en Rust"
#: src/running-the-course/course-structure.md
msgid ""
-"The [Concurrency in Rust](../concurrency.md) deep dive is a full day class "
-"on classical as well as `async`/`await` concurrency."
+"The [Concurrency in Rust](../concurrency.md) deep dive is a full day class on "
+"classical as well as `async`/`await` concurrency."
msgstr ""
-"[Concurrencia en profundidad](../concurrency.md) es una clase de un día "
-"sobre la concurrencia clásica y la concurrencia `async`/`await`."
+"[Concurrencia en profundidad](../concurrency.md) es una clase de un día sobre "
+"la concurrencia clásica y la concurrencia `async`/`await`."
#: src/running-the-course/course-structure.md
msgid ""
-"You will need a fresh crate set up and the dependencies downloaded and ready "
-"to go. You can then copy/paste the examples into `src/main.rs` to experiment "
-"with them:"
+"You will need a fresh crate set up and the dependencies downloaded and ready to "
+"go. You can then copy/paste the examples into `src/main.rs` to experiment with "
+"them:"
msgstr ""
-"Necesitarás configurar un nuevo crate, y descargar y preparar las "
-"dependencias. A continuación, podrás copiar y pegar los ejemplos en `src/"
-"main.rs` para experimentar con ellos:"
+"Necesitarás configurar un nuevo crate, y descargar y preparar las dependencias. "
+"A continuación, podrás copiar y pegar los ejemplos en `src/main.rs` para "
+"experimentar con ellos:"
#: src/running-the-course/course-structure.md
msgid "Morning (3 hours and 20 minutes, including breaks)"
@@ -1950,8 +1934,8 @@ msgid ""
"The course is meant to be very interactive and we recommend letting the "
"questions drive the exploration of Rust!"
msgstr ""
-"El curso está diseñado para ser muy interactivo, por lo que te recomendamos "
-"que dejes que las preguntas guíen el aprendizaje de Rust."
+"El curso está diseñado para ser muy interactivo, por lo que te recomendamos que "
+"dejes que las preguntas guíen el aprendizaje de Rust."
#: src/running-the-course/keyboard-shortcuts.md
msgid "There are several useful keyboard shortcuts in mdBook:"
@@ -1983,57 +1967,56 @@ msgstr ""
#: src/running-the-course/translations.md
msgid ""
-"[Brazilian Portuguese](https://google.github.io/comprehensive-rust/pt-BR/) "
-"by [@rastringer](https://github.com/rastringer), [@hugojacob](https://github."
-"com/hugojacob), [@joaovicmendes](https://github.com/joaovicmendes), and "
-"[@henrif75](https://github.com/henrif75)."
+"[Brazilian Portuguese](https://google.github.io/comprehensive-rust/pt-BR/) by "
+"[@rastringer](https://github.com/rastringer), [@hugojacob](https://github.com/"
+"hugojacob), [@joaovicmendes](https://github.com/joaovicmendes), and [@henrif75]"
+"(https://github.com/henrif75)."
msgstr ""
-"[Portugués Brasileño](https://google.github.io/comprehensive-rust/pt-BR/) "
-"por [@rastringer](https://github.com/rastringer), [@hugojacob](https://"
-"github.com/hugojacob), [@joaovicmendes](https://github.com/joaovicmendes) y "
-"[@henrif75](https://github.com/henrif75)."
+"[Portugués Brasileño](https://google.github.io/comprehensive-rust/pt-BR/) por "
+"[@rastringer](https://github.com/rastringer), [@hugojacob](https://github.com/"
+"hugojacob), [@joaovicmendes](https://github.com/joaovicmendes) y [@henrif75]"
+"(https://github.com/henrif75)."
#: src/running-the-course/translations.md
msgid ""
-"[Chinese (Simplified)](https://google.github.io/comprehensive-rust/zh-CN/) "
-"by [@suetfei](https://github.com/suetfei), [@wnghl](https://github.com/"
-"wnghl), [@anlunx](https://github.com/anlunx), [@kongy](https://github.com/"
-"kongy), [@noahdragon](https://github.com/noahdragon), [@superwhd](https://"
-"github.com/superwhd), [@SketchK](https://github.com/SketchK), and [@nodmp]"
-"(https://github.com/nodmp)."
+"[Chinese (Simplified)](https://google.github.io/comprehensive-rust/zh-CN/) by "
+"[@suetfei](https://github.com/suetfei), [@wnghl](https://github.com/wnghl), "
+"[@anlunx](https://github.com/anlunx), [@kongy](https://github.com/kongy), "
+"[@noahdragon](https://github.com/noahdragon), [@superwhd](https://github.com/"
+"superwhd), [@SketchK](https://github.com/SketchK), and [@nodmp](https://github."
+"com/nodmp)."
msgstr ""
-"[Chino (simplificado)](https://google.github.io/comprehensive-rust/zh-CN/) "
-"por [@suetfei](https://github.com/suetfei), [@wnghl](https://github.com/"
-"wnghl), [@anlunx](https://github.com/anlunx), [@kongy](https://github.com/"
-"kongy), [@noahdragon](https://github.com/noahdragon), [@superwhd](https://"
-"github.com/superwhd), [@SketchK](https://github.com/SketchK) y [@nodmp]"
-"(https://github.com/nodmp)."
+"[Chino (simplificado)](https://google.github.io/comprehensive-rust/zh-CN/) por "
+"[@suetfei](https://github.com/suetfei), [@wnghl](https://github.com/wnghl), "
+"[@anlunx](https://github.com/anlunx), [@kongy](https://github.com/kongy), "
+"[@noahdragon](https://github.com/noahdragon), [@superwhd](https://github.com/"
+"superwhd), [@SketchK](https://github.com/SketchK) y [@nodmp](https://github.com/"
+"nodmp)."
#: src/running-the-course/translations.md
msgid ""
-"[Chinese (Traditional)](https://google.github.io/comprehensive-rust/zh-TW/) "
-"by [@hueich](https://github.com/hueich), [@victorhsieh](https://github.com/"
+"[Chinese (Traditional)](https://google.github.io/comprehensive-rust/zh-TW/) by "
+"[@hueich](https://github.com/hueich), [@victorhsieh](https://github.com/"
"victorhsieh), [@mingyc](https://github.com/mingyc), [@kuanhungchen](https://"
"github.com/kuanhungchen), and [@johnathan79717](https://github.com/"
"johnathan79717)."
msgstr ""
-"[Chino (tradicional)](https://google.github.io/comprehensive-rust/zh-TW/) "
-"por [@hueich](https://github.com/hueich), [@victorhsieh](https://github.com/"
+"[Chino (tradicional)](https://google.github.io/comprehensive-rust/zh-TW/) por "
+"[@hueich](https://github.com/hueich), [@victorhsieh](https://github.com/"
"victorhsieh), [@mingyc](https://github.com/mingyc), [@kuanhungchen](https://"
-"github.com/kuanhungchen) y [@johnathan79717](https://github.com/"
-"johnathan79717)."
+"github.com/kuanhungchen) y [@johnathan79717](https://github.com/johnathan79717)."
#: src/running-the-course/translations.md
msgid ""
"[Japanese](https://google.github.io/comprehensive-rust/ja/) by [@CoinEZ-JPN]"
-"(https://github.com/CoinEZ), [@momotaro1105](https://github.com/"
-"momotaro1105), [@HidenoriKobayashi](https://github.com/HidenoriKobayashi) "
-"and [@kantasv](https://github.com/kantasv)."
+"(https://github.com/CoinEZ), [@momotaro1105](https://github.com/momotaro1105), "
+"[@HidenoriKobayashi](https://github.com/HidenoriKobayashi) and [@kantasv]"
+"(https://github.com/kantasv)."
msgstr ""
"[Japonés](https://google.github.io/comprehensive-rust/ja/) por [@CoinEZ-JPN]"
-"(https://github.com/CoinEZ), [@momotaro1105](https://github.com/"
-"momotaro1105), [@HidenoriKobayashi](https://github.com/HidenoriKobayashi) y "
-"[@kantasv](https://github.com/kantasv)."
+"(https://github.com/CoinEZ), [@momotaro1105](https://github.com/momotaro1105), "
+"[@HidenoriKobayashi](https://github.com/HidenoriKobayashi) y [@kantasv](https://"
+"github.com/kantasv)."
#: src/running-the-course/translations.md
msgid ""
@@ -2044,26 +2027,26 @@ msgid ""
msgstr ""
"[Coreano](https://google.github.io/comprehensive-rust/ko/) por [@keispace]"
"(https://github.com/keispace), [@jiyongp](https://github.com/jiyongp), "
-"[@jooyunghan](https://github.com/jooyunghan), y [@namhyung](https://github."
-"com/namhyung)."
+"[@jooyunghan](https://github.com/jooyunghan), y [@namhyung](https://github.com/"
+"namhyung)."
#: src/running-the-course/translations.md
msgid ""
-"[Spanish](https://google.github.io/comprehensive-rust/es/) by [@deavid]"
-"(https://github.com/deavid)."
+"[Spanish](https://google.github.io/comprehensive-rust/es/) by [@deavid](https://"
+"github.com/deavid)."
msgstr ""
"[Español](https://google.github.io/comprehensive-rust/es/) por [@deavid]"
"(https://github.com/deavid)."
#: src/running-the-course/translations.md
msgid ""
-"[Ukrainian](https://google.github.io/comprehensive-rust/uk/) by [@git-user-"
-"cpp](https://github.com/git-user-cpp), [@yaremam](https://github.com/"
-"yaremam) and [@reta](https://github.com/reta)."
+"[Ukrainian](https://google.github.io/comprehensive-rust/uk/) by [@git-user-cpp]"
+"(https://github.com/git-user-cpp), [@yaremam](https://github.com/yaremam) and "
+"[@reta](https://github.com/reta)."
msgstr ""
-"[Ucranio](https://google.github.io/comprehensive-rust/uk/) por [@git-user-"
-"cpp](https://github.com/git-user-cpp), [@yaremam](https://github.com/"
-"yaremam), y [@reta](https://github.com/reta)."
+"[Ucranio](https://google.github.io/comprehensive-rust/uk/) por [@git-user-cpp]"
+"(https://github.com/git-user-cpp), [@yaremam](https://github.com/yaremam), y "
+"[@reta](https://github.com/reta)."
#: src/running-the-course/translations.md
msgid ""
@@ -2080,16 +2063,16 @@ msgid ""
"There is a large number of in-progress translations. We link to the most "
"recently updated translations:"
msgstr ""
-"Hay muchas traducciones todavía en curso. A continuación, incluimos enlaces "
-"a las traducciones más actualizadas:"
+"Hay muchas traducciones todavía en curso. A continuación, incluimos enlaces a "
+"las traducciones más actualizadas:"
#: src/running-the-course/translations.md
msgid ""
-"[Arabic](https://google.github.io/comprehensive-rust/ar/) by [@younies]"
-"(https://github.com/younies)"
+"[Arabic](https://google.github.io/comprehensive-rust/ar/) by [@younies](https://"
+"github.com/younies)"
msgstr ""
-"[Árabe](https://google.github.io/comprehensive-rust/es/) por [@younies]"
-"(https://github.com/younies)"
+"[Árabe](https://google.github.io/comprehensive-rust/es/) por [@younies](https://"
+"github.com/younies)"
#: src/running-the-course/translations.md
msgid ""
@@ -2101,9 +2084,9 @@ msgstr ""
#: src/running-the-course/translations.md
msgid ""
-"[French](https://google.github.io/comprehensive-rust/fr/) by [@KookaS]"
-"(https://github.com/KookaS), [@vcaen](https://github.com/vcaen) and "
-"[@AdrienBaudemont](https://github.com/AdrienBaudemont)."
+"[French](https://google.github.io/comprehensive-rust/fr/) by [@KookaS](https://"
+"github.com/KookaS), [@vcaen](https://github.com/vcaen) and [@AdrienBaudemont]"
+"(https://github.com/AdrienBaudemont)."
msgstr ""
"[Francés](https://google.github.io/comprehensive-rust/fr/) por [@KookaS]"
"(https://github.com/KookaS), [@vcaen](https://github.com/vcaen), y "
@@ -2111,17 +2094,16 @@ msgstr ""
#: src/running-the-course/translations.md
msgid ""
-"[German](https://google.github.io/comprehensive-rust/de/) by [@Throvn]"
-"(https://github.com/Throvn) and [@ronaldfw](https://github.com/ronaldfw)."
+"[German](https://google.github.io/comprehensive-rust/de/) by [@Throvn](https://"
+"github.com/Throvn) and [@ronaldfw](https://github.com/ronaldfw)."
msgstr ""
-"[Alemán](https://google.github.io/comprehensive-rust/de/) por [@Throvn]"
-"(https://github.com/Throvn) y [@ronaldfw](https://github.com/ronaldfw)."
+"[Alemán](https://google.github.io/comprehensive-rust/de/) por [@Throvn](https://"
+"github.com/Throvn) y [@ronaldfw](https://github.com/ronaldfw)."
#: src/running-the-course/translations.md
msgid ""
-"[Italian](https://google.github.io/comprehensive-rust/it/) by "
-"[@henrythebuilder](https://github.com/henrythebuilder) and [@detro](https://"
-"github.com/detro)."
+"[Italian](https://google.github.io/comprehensive-rust/it/) by [@henrythebuilder]"
+"(https://github.com/henrythebuilder) and [@detro](https://github.com/detro)."
msgstr ""
"[Italiano](https://google.github.io/comprehensive-rust/it/) por "
"[@henrythebuilder](https://github.com/henrythebuilder) y [@detro](https://"
@@ -2143,29 +2125,27 @@ msgstr ""
#: src/running-the-course/translations.md
msgid ""
"If you want to help with this effort, please see [our instructions](https://"
-"github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md) for how to "
-"get going. Translations are coordinated on the [issue tracker](https://"
-"github.com/google/comprehensive-rust/issues/282)."
+"github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md) for how to get "
+"going. Translations are coordinated on the [issue tracker](https://github.com/"
+"google/comprehensive-rust/issues/282)."
msgstr ""
-"Si quieres ayudar en esta iniciativa, consulta [nuestras instrucciones]"
-"(https://github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md) "
-"para empezar. Las traducciones se coordinan en la [herramienta de "
-"seguimiento de incidencias](https://github.com/google/comprehensive-rust/"
-"issues/282)."
+"Si quieres ayudar en esta iniciativa, consulta [nuestras instrucciones](https://"
+"github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md) para empezar. "
+"Las traducciones se coordinan en la [herramienta de seguimiento de incidencias]"
+"(https://github.com/google/comprehensive-rust/issues/282)."
#: src/cargo.md
msgid ""
-"When you start reading about Rust, you will soon meet [Cargo](https://doc."
-"rust-lang.org/cargo/), the standard tool used in the Rust ecosystem to build "
-"and run Rust applications. Here we want to give a brief overview of what "
-"Cargo is and how it fits into the wider ecosystem and how it fits into this "
-"training."
+"When you start reading about Rust, you will soon meet [Cargo](https://doc.rust-"
+"lang.org/cargo/), the standard tool used in the Rust ecosystem to build and run "
+"Rust applications. Here we want to give a brief overview of what Cargo is and "
+"how it fits into the wider ecosystem and how it fits into this training."
msgstr ""
"Cuando empieces a informarte sobre Rust, conocerás [Cargo](https://doc.rust-"
"lang.org/cargo/), la herramienta estándar que se utiliza en el ecosistema de "
-"Rust para crear y ejecutar sus aplicaciones. En este artículo, te ofrecemos "
-"una breve descripción de lo que es Cargo, cómo se integra en el ecosistema "
-"más amplio y cómo encaja en esta formación."
+"Rust para crear y ejecutar sus aplicaciones. En este artículo, te ofrecemos una "
+"breve descripción de lo que es Cargo, cómo se integra en el ecosistema más "
+"amplio y cómo encaja en esta formación."
#: src/cargo.md
msgid "Installation"
@@ -2178,53 +2158,52 @@ msgstr "**Sigue las instrucciones que se indican en .**"
#: src/cargo.md
msgid ""
"This will give you the Cargo build tool (`cargo`) and the Rust compiler "
-"(`rustc`). You will also get `rustup`, a command line utility that you can "
-"use to install to different compiler versions."
+"(`rustc`). You will also get `rustup`, a command line utility that you can use "
+"to install to different compiler versions."
msgstr ""
-"Esto te dará la herramienta de compilación Cargo (`cargo`) y el compilador "
-"Rust (`rustc`). También obtendrás `rustup`, una utilidad de línea de "
-"comandos que puedes utilizar para instalar diferentes versiones del "
-"compilador."
+"Esto te dará la herramienta de compilación Cargo (`cargo`) y el compilador Rust "
+"(`rustc`). También obtendrás `rustup`, una utilidad de línea de comandos que "
+"puedes utilizar para instalar diferentes versiones del compilador."
#: src/cargo.md
msgid ""
"After installing Rust, you should configure your editor or IDE to work with "
-"Rust. Most editors do this by talking to [rust-analyzer](https://rust-"
-"analyzer.github.io/), which provides auto-completion and jump-to-definition "
+"Rust. Most editors do this by talking to [rust-analyzer](https://rust-analyzer."
+"github.io/), which provides auto-completion and jump-to-definition "
"functionality for [VS Code](https://code.visualstudio.com/), [Emacs](https://"
-"rust-analyzer.github.io/manual.html#emacs), [Vim/Neovim](https://rust-"
-"analyzer.github.io/manual.html#vimneovim), and many others. There is also a "
-"different IDE available called [RustRover](https://www.jetbrains.com/rust/)."
-msgstr ""
-"Después de instalar Rust, debes configurar tu editor o IDE para utilizar "
-"Rust. La mayoría de los editores lo hacen con [rust-analyzer](https://rust-"
-"analyzer.github.io/), que ofrece funciones de autocompletado y salto a la "
-"definición para [VS Code](https://code.visualstudio.com/), [Emacs](https://"
-"rust-analyzer.github.io/manual.html#emacs) y [Vim/Neovim](https://rust-"
-"analyzer.github.io/manual.html#vimneovim), entre otros. También hay "
-"disponible otro IDE denominado [RustRover](https://www.jetbrains.com/rust/)."
+"rust-analyzer.github.io/manual.html#emacs), [Vim/Neovim](https://rust-analyzer."
+"github.io/manual.html#vimneovim), and many others. There is also a different "
+"IDE available called [RustRover](https://www.jetbrains.com/rust/)."
+msgstr ""
+"Después de instalar Rust, debes configurar tu editor o IDE para utilizar Rust. "
+"La mayoría de los editores lo hacen con [rust-analyzer](https://rust-analyzer."
+"github.io/), que ofrece funciones de autocompletado y salto a la definición "
+"para [VS Code](https://code.visualstudio.com/), [Emacs](https://rust-analyzer."
+"github.io/manual.html#emacs) y [Vim/Neovim](https://rust-analyzer.github.io/"
+"manual.html#vimneovim), entre otros. También hay disponible otro IDE denominado "
+"[RustRover](https://www.jetbrains.com/rust/)."
#: src/cargo.md
msgid ""
"On Debian/Ubuntu, you can also install Cargo, the Rust source and the [Rust "
-"formatter](https://github.com/rust-lang/rustfmt) via `apt`. However, this "
-"gets you an outdated rust version and may lead to unexpected behavior. The "
-"command would be:"
+"formatter](https://github.com/rust-lang/rustfmt) via `apt`. However, this gets "
+"you an outdated rust version and may lead to unexpected behavior. The command "
+"would be:"
msgstr ""
-"En Debian o Ubuntu, también puedes instalar Cargo, el código fuente de Rust "
-"y [el formateador de Rust](https://github.com/rust-lang/rustfmt) a través de "
+"En Debian o Ubuntu, también puedes instalar Cargo, el código fuente de Rust y "
+"[el formateador de Rust](https://github.com/rust-lang/rustfmt) a través de "
"`apt`. Sin embargo, solo podrás conseguir una versión de Rust obsoleta que "
"podría dar lugar a comportamientos inesperados. El comando es el siguiente:"
#: src/cargo.md
msgid ""
"On macOS, you can use [Homebrew](https://brew.sh/) to install Rust, but this "
-"may provide an outdated version. Therefore, it is recommended to install "
-"Rust from the official site."
+"may provide an outdated version. Therefore, it is recommended to install Rust "
+"from the official site."
msgstr ""
"En macOS, puedes usar [Homebrew](https://brew.sh/) para instalar Rust, pero "
-"esto podría proveer una versión anticuada. Por lo tanto, es recomendad "
-"instalar Rust del sitio oficial."
+"esto podría proveer una versión anticuada. Por lo tanto, es recomendad instalar "
+"Rust del sitio oficial."
#: src/cargo/rust-ecosystem.md
msgid "The Rust Ecosystem"
@@ -2242,36 +2221,35 @@ msgid ""
"`rustc`: the Rust compiler which turns `.rs` files into binaries and other "
"intermediate formats."
msgstr ""
-"`rustc`: el compilador de Rust que convierte archivos `.rs` en binarios y "
-"otros formatos intermedios."
+"`rustc`: el compilador de Rust que convierte archivos `.rs` en binarios y otros "
+"formatos intermedios."
#: src/cargo/rust-ecosystem.md
msgid ""
"`cargo`: the Rust dependency manager and build tool. Cargo knows how to "
-"download dependencies, usually hosted on , and it will "
-"pass them to `rustc` when building your project. Cargo also comes with a "
-"built-in test runner which is used to execute unit tests."
+"download dependencies, usually hosted on , and it will pass "
+"them to `rustc` when building your project. Cargo also comes with a built-in "
+"test runner which is used to execute unit tests."
msgstr ""
"`cargo`: herramienta de compilación y gestión de dependencias de Rust. Cargo "
-"sabe cómo descargar dependencias, que normalmente se alojan en , y las transfiere a `rustc` al crear el proyecto. Cargo también "
-"incorpora un ejecutor de pruebas que se utiliza para realizar pruebas "
-"unitarias."
+"sabe cómo descargar dependencias, que normalmente se alojan en , y las transfiere a `rustc` al crear el proyecto. Cargo también incorpora "
+"un ejecutor de pruebas que se utiliza para realizar pruebas unitarias."
#: src/cargo/rust-ecosystem.md
msgid ""
"`rustup`: the Rust toolchain installer and updater. This tool is used to "
-"install and update `rustc` and `cargo` when new versions of Rust are "
-"released. In addition, `rustup` can also download documentation for the "
-"standard library. You can have multiple versions of Rust installed at once "
-"and `rustup` will let you switch between them as needed."
-msgstr ""
-"`rustup`: el instalador y actualizador de cadenas de herramientas de Rust. "
-"Esta herramienta se utiliza para instalar y actualizar `rustc` y `cargo` "
-"cuando se lanzan nuevas versiones de Rust. Además, `rustup` también puede "
-"descargar documentación de la biblioteca estándar. Puedes tener varias "
-"versiones de Rust instaladas a la vez y `rustup` te permitirá cambiar de una "
-"a otra según lo necesites."
+"install and update `rustc` and `cargo` when new versions of Rust are released. "
+"In addition, `rustup` can also download documentation for the standard library. "
+"You can have multiple versions of Rust installed at once and `rustup` will let "
+"you switch between them as needed."
+msgstr ""
+"`rustup`: el instalador y actualizador de cadenas de herramientas de Rust. Esta "
+"herramienta se utiliza para instalar y actualizar `rustc` y `cargo` cuando se "
+"lanzan nuevas versiones de Rust. Además, `rustup` también puede descargar "
+"documentación de la biblioteca estándar. Puedes tener varias versiones de Rust "
+"instaladas a la vez y `rustup` te permitirá cambiar de una a otra según lo "
+"necesites."
#: src/cargo/rust-ecosystem.md src/types-and-values/hello-world.md
#: src/references/exclusive.md src/memory-management/move.md
@@ -2283,8 +2261,8 @@ msgstr "Puntos clave:"
#: src/cargo/rust-ecosystem.md
msgid ""
"Rust has a rapid release schedule with a new release coming out every six "
-"weeks. New releases maintain backwards compatibility with old releases --- "
-"plus they enable new functionality."
+"weeks. New releases maintain backwards compatibility with old releases --- plus "
+"they enable new functionality."
msgstr ""
"Rust cuenta con un programa de lanzamiento rápido en el que se publica una "
"nueva versión cada seis semanas. Las nuevas versiones mantienen la "
@@ -2292,8 +2270,7 @@ msgstr ""
"funciones."
#: src/cargo/rust-ecosystem.md
-msgid ""
-"There are three release channels: \"stable\", \"beta\", and \"nightly\"."
+msgid "There are three release channels: \"stable\", \"beta\", and \"nightly\"."
msgstr "Hay tres canales de lanzamiento: \"stable\", \"beta\" y \"nightly\"."
#: src/cargo/rust-ecosystem.md
@@ -2309,58 +2286,56 @@ msgid ""
"Dependencies can also be resolved from alternative [registries](https://doc."
"rust-lang.org/cargo/reference/registries.html), git, folders, and more."
msgstr ""
-"Las dependencias también pueden resolverse desde \\[registros\\] "
-"alternativos, git, carpetas, etc."
+"Las dependencias también pueden resolverse desde \\[registros\\] alternativos, "
+"git, carpetas, etc."
#: src/cargo/rust-ecosystem.md
msgid ""
-"Rust also has [editions](https://doc.rust-lang.org/edition-guide/): the "
-"current edition is Rust 2021. Previous editions were Rust 2015 and Rust 2018."
+"Rust also has [editions](https://doc.rust-lang.org/edition-guide/): the current "
+"edition is Rust 2021. Previous editions were Rust 2015 and Rust 2018."
msgstr ""
"Rust también tiene varias \\[ediciones\\]: la más actual es Rust 2021. Las "
"ediciones anteriores son Rust 2015 y Rust 2018."
#: src/cargo/rust-ecosystem.md
msgid ""
-"The editions are allowed to make backwards incompatible changes to the "
-"language."
+"The editions are allowed to make backwards incompatible changes to the language."
msgstr ""
"Las ediciones pueden introducir cambios de incompatibilidad con versiones "
"anteriores en el lenguaje."
#: src/cargo/rust-ecosystem.md
msgid ""
-"To prevent breaking code, editions are opt-in: you select the edition for "
-"your crate via the `Cargo.toml` file."
+"To prevent breaking code, editions are opt-in: you select the edition for your "
+"crate via the `Cargo.toml` file."
msgstr ""
-"Para evitar que se rompa el código, las ediciones son opcionales: selecciona "
-"la edición para tu crate a través del archivo `Cargo.toml`."
+"Para evitar que se rompa el código, las ediciones son opcionales: selecciona la "
+"edición para tu crate a través del archivo `Cargo.toml`."
#: src/cargo/rust-ecosystem.md
msgid ""
"To avoid splitting the ecosystem, Rust compilers can mix code written for "
"different editions."
msgstr ""
-"Para evitar la división del ecosistema, los compiladores de Rust pueden "
-"mezclar el código escrito para distintas ediciones."
+"Para evitar la división del ecosistema, los compiladores de Rust pueden mezclar "
+"el código escrito para distintas ediciones."
#: src/cargo/rust-ecosystem.md
msgid ""
"Mention that it is quite rare to ever use the compiler directly not through "
"`cargo` (most users never do)."
msgstr ""
-"Hay que mencionar que es bastante raro utilizar el compilador directamente y "
-"no a través de `cargo` (la mayoría de los usuarios nunca lo hacen)."
+"Hay que mencionar que es bastante raro utilizar el compilador directamente y no "
+"a través de `cargo` (la mayoría de los usuarios nunca lo hacen)."
#: src/cargo/rust-ecosystem.md
msgid ""
"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:"
+"comprehensive tool. It is capable of many advanced features including but not "
+"limited to:"
msgstr ""
"Vale la pena mencionar que Cargo en sí es una herramienta extremadamente "
-"poderosa e integral. Es capaz de hacer muchas cosas avanzadas y no "
-"limitadas a:"
+"poderosa e integral. Es capaz de hacer muchas cosas avanzadas y no limitadas a:"
#: src/cargo/rust-ecosystem.md
msgid "Project/package structure"
@@ -2368,8 +2343,7 @@ msgstr "Estructura del proyecto/paquete"
#: src/cargo/rust-ecosystem.md
msgid "[workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html)"
-msgstr ""
-"[workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html)"
+msgstr "[workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html)"
#: src/cargo/rust-ecosystem.md
msgid "Dev Dependencies and Runtime Dependency management/caching"
@@ -2377,11 +2351,9 @@ msgstr "Manejo/Cache de Dependencias de Desarrollo y de Runtime"
#: src/cargo/rust-ecosystem.md
msgid ""
-"[build scripting](https://doc.rust-lang.org/cargo/reference/build-scripts."
-"html)"
+"[build scripting](https://doc.rust-lang.org/cargo/reference/build-scripts.html)"
msgstr ""
-"[build scripting](https://doc.rust-lang.org/cargo/reference/build-scripts."
-"html)"
+"[build scripting](https://doc.rust-lang.org/cargo/reference/build-scripts.html)"
#: src/cargo/rust-ecosystem.md
msgid ""
@@ -2393,18 +2365,17 @@ msgstr ""
#: src/cargo/rust-ecosystem.md
msgid ""
-"It is also extensible with sub command plugins as well (such as [cargo "
-"clippy](https://github.com/rust-lang/rust-clippy))."
-msgstr ""
-"También es extensible con plugins de subcomandos (como [cargo clippy]"
+"It is also extensible with sub command plugins as well (such as [cargo clippy]"
"(https://github.com/rust-lang/rust-clippy))."
+msgstr ""
+"También es extensible con plugins de subcomandos (como [cargo clippy](https://"
+"github.com/rust-lang/rust-clippy))."
#: src/cargo/rust-ecosystem.md
-msgid ""
-"Read more from the [official Cargo Book](https://doc.rust-lang.org/cargo/)"
+msgid "Read more from the [official Cargo Book](https://doc.rust-lang.org/cargo/)"
msgstr ""
-"Consulta más información en el [libro oficial de Cargo](https://doc.rust-"
-"lang.org/cargo/)"
+"Consulta más información en el [libro oficial de Cargo](https://doc.rust-lang."
+"org/cargo/)"
#: src/cargo/code-samples.md
msgid "Code Samples in This Training"
@@ -2417,14 +2388,14 @@ msgid ""
"and ensures a consistent experience for everyone."
msgstr ""
"En esta formación, aprenderemos el lenguaje Rust principalmente con ejemplos "
-"que podrás ejecutar con tu navegador. De este modo, la configuración es "
-"mucho más sencilla y se asegura una experiencia homogénea para todos."
+"que podrás ejecutar con tu navegador. De este modo, la configuración es mucho "
+"más sencilla y se asegura una experiencia homogénea para todos."
#: src/cargo/code-samples.md
msgid ""
-"Installing Cargo is still encouraged: it will make it easier for you to do "
-"the exercises. On the last day, we will do a larger exercise which shows you "
-"how to work with dependencies and for that you need Cargo."
+"Installing Cargo is still encouraged: it will make it easier for you to do the "
+"exercises. On the last day, we will do a larger exercise which shows you how to "
+"work with dependencies and for that you need Cargo."
msgstr ""
"Se recomienda instalar Cargo, ya que facilitará la realización de los "
"ejercicios. El último día realizaremos un ejercicio más largo en el que se "
@@ -2451,23 +2422,22 @@ msgid ""
"Most code samples are editable like shown above. A few code samples are not "
"editable for various reasons:"
msgstr ""
-"La mayoría de los códigos de ejemplo se pueden editar, como se muestra "
-"arriba, pero hay algunos que no se pueden editar por varios motivos:"
+"La mayoría de los códigos de ejemplo se pueden editar, como se muestra arriba, "
+"pero hay algunos que no se pueden editar por varios motivos:"
#: src/cargo/code-samples.md
msgid ""
"The embedded playgrounds cannot execute unit tests. Copy-paste the code and "
"open it in the real Playground to demonstrate unit tests."
msgstr ""
-"Los playgrounds insertados no pueden ejecutar pruebas unitarias. Copia y "
-"pega el código y ábrelo en la página del playground para mostrar pruebas "
-"unitarias."
+"Los playgrounds insertados no pueden ejecutar pruebas unitarias. Copia y pega "
+"el código y ábrelo en la página del playground para mostrar pruebas unitarias."
#: src/cargo/code-samples.md
msgid ""
-"The embedded playgrounds lose their state the moment you navigate away from "
-"the page! This is the reason that the students should solve the exercises "
-"using a local Rust installation or via the Playground."
+"The embedded playgrounds lose their state the moment you navigate away from the "
+"page! This is the reason that the students should solve the exercises using a "
+"local Rust installation or via the Playground."
msgstr ""
"Los playgrounds insertados pierden su estado en cuanto sales e de la página. "
"Por este motivo, los alumnos deben resolver los ejercicios con una versión "
@@ -2479,33 +2449,32 @@ msgstr "Ejecutar código de forma local con Cargo"
#: src/cargo/running-locally.md
msgid ""
-"If you want to experiment with the code on your own system, then you will "
-"need to first install Rust. Do this by following the [instructions in the "
-"Rust Book](https://doc.rust-lang.org/book/ch01-01-installation.html). This "
-"should give you a working `rustc` and `cargo`. At the time of writing, the "
-"latest stable Rust release has these version numbers:"
+"If you want to experiment with the code on your own system, then you will need "
+"to first install Rust. Do this by following the [instructions in the Rust Book]"
+"(https://doc.rust-lang.org/book/ch01-01-installation.html). This should give "
+"you a working `rustc` and `cargo`. At the time of writing, the latest stable "
+"Rust release has these version numbers:"
msgstr ""
-"Si quieres experimentar con el código en tu propio sistema, primero tendrás "
-"que instalar Rust. Para ello, sigue las [instrucciones del Libro de Rust]"
-"(https://doc.rust-lang.org/book/ch01-01-installation.html). De este modo, "
-"obtendrás un `rustc` y un `cargo` que funcionen. En el momento de escribir "
-"esto, la última versión estable de Rust tiene estos números de versión:"
+"Si quieres experimentar con el código en tu propio sistema, primero tendrás que "
+"instalar Rust. Para ello, sigue las [instrucciones del Libro de Rust](https://"
+"doc.rust-lang.org/book/ch01-01-installation.html). De este modo, obtendrás un "
+"`rustc` y un `cargo` que funcionen. En el momento de escribir esto, la última "
+"versión estable de Rust tiene estos números de versión:"
#: src/cargo/running-locally.md
msgid ""
-"You can use any later version too since Rust maintains backwards "
-"compatibility."
+"You can use any later version too since Rust maintains backwards compatibility."
msgstr ""
"También puedes usar cualquier versión posterior, ya que Rust mantiene la "
"retrocompatibilidad."
#: src/cargo/running-locally.md
msgid ""
-"With this in place, follow these steps to build a Rust binary from one of "
-"the examples in this training:"
+"With this in place, follow these steps to build a Rust binary from one of the "
+"examples in this training:"
msgstr ""
-"Una vez hecho lo anterior, sigue estos pasos para compilar un binario de "
-"Rust a partir de uno de los ejemplos de la formación:"
+"Una vez hecho lo anterior, sigue estos pasos para compilar un binario de Rust a "
+"partir de uno de los ejemplos de la formación:"
#: src/cargo/running-locally.md
msgid "Click the \"Copy to clipboard\" button on the example you want to copy."
@@ -2522,17 +2491,16 @@ msgstr ""
#: src/cargo/running-locally.md
msgid ""
"Navigate into `exercise/` and use `cargo run` to build and run your binary:"
-msgstr ""
-"Ve a `exercise/` y usa `cargo run` para compilar y ejecutar tu binario:"
+msgstr "Ve a `exercise/` y usa `cargo run` para compilar y ejecutar tu binario:"
#: src/cargo/running-locally.md
msgid ""
-"Replace the boiler-plate code in `src/main.rs` with your own code. For "
-"example, using the example on the previous page, make `src/main.rs` look like"
+"Replace the boiler-plate code in `src/main.rs` with your own code. For example, "
+"using the example on the previous page, make `src/main.rs` look like"
msgstr ""
"Sustituye el código de plantilla en `src/main.rs` con tu propio código. Por "
-"ejemplo, usando el ejemplo de la página anterior, haz que `src/main.rs` "
-"tenga el siguiente aspecto:"
+"ejemplo, usando el ejemplo de la página anterior, haz que `src/main.rs` tenga "
+"el siguiente aspecto:"
#: src/cargo/running-locally.md
msgid "Use `cargo run` to build and run your updated binary:"
@@ -2540,25 +2508,25 @@ msgstr "Usa `cargo run` para hacer build y ejecutar tu binario actualizado:"
#: src/cargo/running-locally.md
msgid ""
-"Use `cargo check` to quickly check your project for errors, use `cargo "
-"build` to compile it without running it. You will find the output in `target/"
-"debug/` for a normal debug build. Use `cargo build --release` to produce an "
-"optimized release build in `target/release/`."
+"Use `cargo check` to quickly check your project for errors, use `cargo build` "
+"to compile it without running it. You will find the output in `target/debug/` "
+"for a normal debug build. Use `cargo build --release` to produce an optimized "
+"release build in `target/release/`."
msgstr ""
-"Comprueba que no haya errores en el proyecto con `cargo check`. Compílalo "
-"sin ejecutarlo con `cargo build`. Encontrarás la salida en `target/debug/` "
-"para una versión de depuración normal. Usa `cargo build --release` para "
-"generar una compilación de lanzamiento optimizada en `target/release/`."
+"Comprueba que no haya errores en el proyecto con `cargo check`. Compílalo sin "
+"ejecutarlo con `cargo build`. Encontrarás la salida en `target/debug/` para una "
+"versión de depuración normal. Usa `cargo build --release` para generar una "
+"compilación de lanzamiento optimizada en `target/release/`."
#: src/cargo/running-locally.md
msgid ""
-"You can add dependencies for your project by editing `Cargo.toml`. When you "
-"run `cargo` commands, it will automatically download and compile missing "
+"You can add dependencies for your project by editing `Cargo.toml`. When you run "
+"`cargo` commands, it will automatically download and compile missing "
"dependencies for you."
msgstr ""
"Edita `Cargo.toml` para añadir dependencias a tu proyecto. Cuando ejecutes "
-"comandos `cargo`, se descargarán y compilarán automáticamente las "
-"dependencias que falten."
+"comandos `cargo`, se descargarán y compilarán automáticamente las dependencias "
+"que falten."
#: src/cargo/running-locally.md
msgid ""
@@ -2576,10 +2544,8 @@ msgstr "Te damos la bienvenida al Día 1"
#: src/welcome-day-1.md
msgid ""
-"This is the first day of Rust Fundamentals. We will cover a lot of ground "
-"today:"
-msgstr ""
-"Este es el primer día de Comprehensive Rust. Hoy trataremos muchos temas:"
+"This is the first day of Rust Fundamentals. We will cover a lot of ground today:"
+msgstr "Este es el primer día de Comprehensive Rust. Hoy trataremos muchos temas:"
#: src/welcome-day-1.md
msgid ""
@@ -2603,8 +2569,7 @@ msgstr "Tipos definidos por el usuario: estructuras y enumeraciones."
#: src/welcome-day-1.md
msgid "Pattern matching: destructuring enums, structs, and arrays."
-msgstr ""
-"Emparejamiento de Patrones: desestructuración de enums, structs y arrays."
+msgstr "Emparejamiento de Patrones: desestructuración de enums, structs y arrays."
#: src/welcome-day-1.md src/welcome-day-2.md src/welcome-day-3.md
#: src/welcome-day-4.md src/concurrency/welcome.md
@@ -2617,39 +2582,35 @@ msgid ""
"Including 10 minute breaks, this session should take about 2 hours and 5 "
"minutes. It contains:"
msgstr ""
-"Contando con los descansos de 10 minutos, la duración prevista de la sesión "
-"es de unas 2 horas y 5 minutos. Esta sesión contiene:"
+"Contando con los descansos de 10 minutos, la duración prevista de la sesión es "
+"de unas 2 horas y 5 minutos. Esta sesión contiene:"
#: src/welcome-day-1.md
msgid "Please remind the students that:"
msgstr "Recuerda a los alumnos lo siguiente:"
#: src/welcome-day-1.md
-msgid ""
-"They should ask questions when they get them, don't save them to the end."
-msgstr ""
-"Deben hacer las preguntas cuando surgen, no las guarden hasta el final."
+msgid "They should ask questions when they get them, don't save them to the end."
+msgstr "Deben hacer las preguntas cuando surgen, no las guarden hasta el final."
#: src/welcome-day-1.md
msgid ""
-"The class is meant to be interactive and discussions are very much "
-"encouraged!"
+"The class is meant to be interactive and discussions are very much encouraged!"
msgstr ""
"El curso está diseñado para ser muy interactivo, ¡las discusiones son muy "
"recomendadas!"
#: src/welcome-day-1.md
msgid ""
-"As an instructor, you should try to keep the discussions relevant, i.e., "
-"keep the discussions related to how Rust does things vs some other language. "
-"It can be hard to find the right balance, but err on the side of allowing "
-"discussions since they engage people much more than one-way communication."
+"As an instructor, you should try to keep the discussions relevant, i.e., keep "
+"the discussions related to how Rust does things vs some other language. It can "
+"be hard to find the right balance, but err on the side of allowing discussions "
+"since they engage people much more than one-way communication."
msgstr ""
"Como instructor, debes intentar llevar discusiones relevantes, por ejemplo, "
-"mantener relación de cómo Rust hace las cosas vs otros lenguajes. Puede "
-"costar encontrar un balance adecuado, pero generalmente permite las "
-"discusiones ya que captan la atención de la gente mas que los discursos "
-"unidireccionales."
+"mantener relación de cómo Rust hace las cosas vs otros lenguajes. Puede costar "
+"encontrar un balance adecuado, pero generalmente permite las discusiones ya que "
+"captan la atención de la gente mas que los discursos unidireccionales."
#: src/welcome-day-1.md
msgid ""
@@ -2659,38 +2620,37 @@ msgstr ""
#: src/welcome-day-1.md
msgid ""
-"This is perfectly okay! Repetition is an important part of learning. "
-"Remember that the slides are just a support and you are free to skip them as "
-"you like."
+"This is perfectly okay! Repetition is an important part of learning. Remember "
+"that the slides are just a support and you are free to skip them as you like."
msgstr ""
-"Esto está perfecto! Repetir es una parte importante del aprendizaje. "
-"Recuerda que los slides son solo un soporte y tienes libertad de saltearlos "
-"cuando quieras."
+"Esto está perfecto! Repetir es una parte importante del aprendizaje. Recuerda "
+"que los slides son solo un soporte y tienes libertad de saltearlos cuando "
+"quieras."
#: src/welcome-day-1.md
msgid ""
-"The idea for the first day is to show the \"basic\" things in Rust that "
-"should have immediate parallels in other languages. The more advanced parts "
-"of Rust come on the subsequent days."
+"The idea for the first day is to show the \"basic\" things in Rust that should "
+"have immediate parallels in other languages. The more advanced parts of Rust "
+"come on the subsequent days."
msgstr ""
"El objetivo del primer día es mostrar los aspectos \"básicos\" de Rust que "
-"podrían tener paralelismos inmediatos con otros lenguajes de programación. A "
-"lo largo del curso se estudiarán los aspectos más avanzados de Rust."
+"podrían tener paralelismos inmediatos con otros lenguajes de programación. A lo "
+"largo del curso se estudiarán los aspectos más avanzados de Rust."
#: src/welcome-day-1.md
msgid ""
"If you're teaching this in a classroom, this is a good place to go over the "
-"schedule. Note that there is an exercise at the end of each segment, "
-"followed by a break. Plan to cover the exercise solution after the break. "
-"The times listed here are a suggestion in order to keep the course on "
-"schedule. Feel free to be flexible and adjust as necessary!"
+"schedule. Note that there is an exercise at the end of each segment, followed "
+"by a break. Plan to cover the exercise solution after the break. The times "
+"listed here are a suggestion in order to keep the course on schedule. Feel free "
+"to be flexible and adjust as necessary!"
msgstr ""
"Si estás impartiendo el curso en un aula, este un buen lugar para repasar el "
-"calendario. Debes tener en cuenta que hay un ejercicio al final de cada "
-"parte, seguido de una pausa. Organiza las sesiones de forma que se explique "
-"la solución del ejercicio después de la pausa. Las horas que se indican son "
-"una sugerencia para que el curso se ciña al horario establecido. ¡No dudes "
-"en modificar el calendario y hacer los cambios que consideres necesarios!"
+"calendario. Debes tener en cuenta que hay un ejercicio al final de cada parte, "
+"seguido de una pausa. Organiza las sesiones de forma que se explique la "
+"solución del ejercicio después de la pausa. Las horas que se indican son una "
+"sugerencia para que el curso se ciña al horario establecido. ¡No dudes en "
+"modificar el calendario y hacer los cambios que consideres necesarios!"
#: src/hello-world.md src/concurrency/send-sync.md
msgid "This segment should take about 15 minutes. It contains:"
@@ -2728,11 +2688,11 @@ msgstr "2 minutos"
#: src/hello-world/what-is-rust.md
msgid ""
-"Rust is a new programming language which had its [1.0 release in 2015]"
-"(https://blog.rust-lang.org/2015/05/15/Rust-1.0.html):"
+"Rust is a new programming language which had its [1.0 release in 2015](https://"
+"blog.rust-lang.org/2015/05/15/Rust-1.0.html):"
msgstr ""
-"Rust es un nuevo lenguaje de programación que lanzó su versión [1.0 en el "
-"2015](https://blog.rust-lang.org/2015/05/15/Rust-1.0.html):"
+"Rust es un nuevo lenguaje de programación que lanzó su versión [1.0 en el 2015]"
+"(https://blog.rust-lang.org/2015/05/15/Rust-1.0.html):"
#: src/hello-world/what-is-rust.md
msgid "Rust is a statically compiled language in a similar role as C++"
@@ -2795,8 +2755,7 @@ msgid "High level of control."
msgstr "Nivel alto de control."
#: src/hello-world/what-is-rust.md
-msgid ""
-"Can be scaled down to very constrained devices such as microcontrollers."
+msgid "Can be scaled down to very constrained devices such as microcontrollers."
msgstr ""
"Se puede reducir verticalmente a dispositivos muy limitados, como los "
"microcontroladores."
@@ -2807,8 +2766,7 @@ msgstr "No tiene _runtime_ ni _garbage collection_."
#: src/hello-world/what-is-rust.md
msgid "Focuses on reliability and safety without sacrificing performance."
-msgstr ""
-"Se centra en la fiabilidad y la seguridad sin sacrificar el rendimiento."
+msgstr "Se centra en la fiabilidad y la seguridad sin sacrificar el rendimiento."
#: src/hello-world/benefits.md
msgid "Some unique selling points of Rust:"
@@ -2855,8 +2813,8 @@ msgid ""
"_No undefined runtime behavior_ - what a Rust statement does is never left "
"unspecified"
msgstr ""
-"_No hay comportamientos indefinidos en el tiempo de ejecución:_ es decir, "
-"una instrucción de Rust nunca queda sin especificar"
+"_No hay comportamientos indefinidos en el tiempo de ejecución:_ es decir, una "
+"instrucción de Rust nunca queda sin especificar"
#: src/hello-world/benefits.md
msgid "Array access is bounds checked."
@@ -2871,8 +2829,8 @@ msgid ""
"_Modern language features_ - as expressive and ergonomic as higher-level "
"languages"
msgstr ""
-"_Características de los lenguajes modernos:_ es tan expresivo y ergonómico "
-"como los lenguajes de nivel superior"
+"_Características de los lenguajes modernos:_ es tan expresivo y ergonómico como "
+"los lenguajes de nivel superior"
#: src/hello-world/benefits.md
msgid "Enums and pattern matching."
@@ -2908,58 +2866,57 @@ msgstr "Compatibilidad excelente con el protocolo del servidor de lenguaje."
#: src/hello-world/benefits.md
msgid ""
-"Do not spend much time here. All of these points will be covered in more "
-"depth later."
+"Do not spend much time here. All of these points will be covered in more depth "
+"later."
msgstr ""
-"No le dediques mucho tiempo a este punto. Todos estos aspectos se tratarán "
-"de forma más detallada más adelante."
+"No le dediques mucho tiempo a este punto. Todos estos aspectos se tratarán de "
+"forma más detallada más adelante."
#: src/hello-world/benefits.md
msgid ""
-"Make sure to ask the class which languages they have experience with. "
-"Depending on the answer you can highlight different features of Rust:"
+"Make sure to ask the class which languages they have experience with. Depending "
+"on the answer you can highlight different features of Rust:"
msgstr ""
"Asegúrate de preguntar a la clase en qué lenguajes tienen experiencia. "
-"Dependiendo de la respuesta puedes destacar diferentes características de "
-"Rust:"
+"Dependiendo de la respuesta puedes destacar diferentes características de Rust:"
#: src/hello-world/benefits.md
msgid ""
-"Experience with C or C++: Rust eliminates a whole class of _runtime errors_ "
-"via the borrow checker. You get performance like in C and C++, but you don't "
-"have the memory unsafety issues. In addition, you get a modern language with "
+"Experience with C or C++: Rust eliminates a whole class of _runtime errors_ via "
+"the borrow checker. You get performance like in C and C++, but you don't have "
+"the memory unsafety issues. In addition, you get a modern language with "
"constructs like pattern matching and built-in dependency management."
msgstr ""
"Experiencia con C o C++: Rust elimina una clase completa de _errores de "
-"runtime_ mediante el _borrow checker_. Obtienes un rendimiento similar al de "
-"C y C++, pero no tienes problemas de seguridad en la memoria. Además, "
-"obtienes un lenguaje moderno con elementos como la coincidencia de patrones "
-"y la gestión de dependencias integrado."
+"runtime_ mediante el _borrow checker_. Obtienes un rendimiento similar al de C "
+"y C++, pero no tienes problemas de seguridad en la memoria. Además, obtienes un "
+"lenguaje moderno con elementos como la coincidencia de patrones y la gestión de "
+"dependencias integrado."
#: src/hello-world/benefits.md
msgid ""
-"Experience with Java, Go, Python, JavaScript...: You get the same memory "
-"safety as in those languages, plus a similar high-level language feeling. In "
-"addition you get fast and predictable performance like C and C++ (no garbage "
-"collector) as well as access to low-level hardware (should you need it)."
+"Experience with Java, Go, Python, JavaScript...: You get the same memory safety "
+"as in those languages, plus a similar high-level language feeling. In addition "
+"you get fast and predictable performance like C and C++ (no garbage collector) "
+"as well as access to low-level hardware (should you need it)."
msgstr ""
"Experiencia con Java, Go, Python, JavaScript, etc.: Consigues la misma "
-"seguridad de memoria que en éstos lenguajes, además de una experiencia "
-"similar a la de un lenguaje de alto nivel. También consigues un rendimiento "
-"rápido y predecible como en C y C++ (sin recolector de memoria residual), "
-"así como acceso a hardware de bajo nivel (si lo necesitas)."
+"seguridad de memoria que en éstos lenguajes, además de una experiencia similar "
+"a la de un lenguaje de alto nivel. También consigues un rendimiento rápido y "
+"predecible como en C y C++ (sin recolector de memoria residual), así como "
+"acceso a hardware de bajo nivel (si lo necesitas)."
#: src/hello-world/playground.md
msgid ""
-"The [Rust Playground](https://play.rust-lang.org/) provides an easy way to "
-"run short Rust programs, and is the basis for the examples and exercises in "
-"this course. Try running the \"hello-world\" program it starts with. It "
-"comes with a few handy features:"
+"The [Rust Playground](https://play.rust-lang.org/) provides an easy way to run "
+"short Rust programs, and is the basis for the examples and exercises in this "
+"course. Try running the \"hello-world\" program it starts with. It comes with a "
+"few handy features:"
msgstr ""
-"El [playground de Rust](https://play.rust-lang.org/) ofrece una forma "
-"sencilla de ejecutar programas cortos de Rust y es la base de los ejemplos y "
-"ejercicios de este curso. Prueba a ejecutar el programa \"hello-world\" con "
-"el que empieza. Incluye algunas funciones útiles:"
+"El [playground de Rust](https://play.rust-lang.org/) ofrece una forma sencilla "
+"de ejecutar programas cortos de Rust y es la base de los ejemplos y ejercicios "
+"de este curso. Prueba a ejecutar el programa \"hello-world\" con el que "
+"empieza. Incluye algunas funciones útiles:"
#: src/hello-world/playground.md
msgid ""
@@ -2982,26 +2939,24 @@ msgstr ""
#: src/hello-world/playground.md
msgid ""
-"If you're interested, use \"ASM\" under \"...\" to see the generated "
-"assembly code."
+"If you're interested, use \"ASM\" under \"...\" to see the generated assembly "
+"code."
msgstr ""
"Si te interesa, utiliza la opción \"ASM\" en \"...\" para ver el código de "
"ensamblado que se ha generado."
#: src/hello-world/playground.md
msgid ""
-"As students head into the break, encourage them to open up the playground "
-"and experiment a little. Encourage them to keep the tab open and try things "
-"out during the rest of the course. This is particularly helpful for advanced "
-"students who want to know more about Rust's optimizations or generated "
-"assembly."
-msgstr ""
-"Cuando sea la hora del descanso, anima a los asistentes a abrir el "
-"playground para que experimenten un poco. Hazles saber que pueden mantener "
-"la pestaña abierta y probar cosas durante el resto del curso. Resulta "
-"especialmente útil para los participantes con un nivel avanzado que quieran "
-"obtener más información sobre las optimizaciones o el ensamblaje generado de "
-"Rust."
+"As students head into the break, encourage them to open up the playground and "
+"experiment a little. Encourage them to keep the tab open and try things out "
+"during the rest of the course. This is particularly helpful for advanced "
+"students who want to know more about Rust's optimizations or generated assembly."
+msgstr ""
+"Cuando sea la hora del descanso, anima a los asistentes a abrir el playground "
+"para que experimenten un poco. Hazles saber que pueden mantener la pestaña "
+"abierta y probar cosas durante el resto del curso. Resulta especialmente útil "
+"para los participantes con un nivel avanzado que quieran obtener más "
+"información sobre las optimizaciones o el ensamblaje generado de Rust."
#: src/types-and-values.md src/control-flow-basics.md src/modules.md
msgid "This segment should take about 40 minutes. It contains:"
@@ -3045,21 +3000,20 @@ msgstr ""
#: src/types-and-values/hello-world.md
msgid ""
-"This slide tries to make the students comfortable with Rust code. They will "
-"see 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 "
+"a ton of it over the next four days so we start small with something familiar."
msgstr ""
"Con esta diapositiva se intenta que los alumnos se sientan cómodos con el "
-"código de Rust. En los próximos tres días lo verán mucho, así que "
-"empezaremos con algo reconocible."
+"código de Rust. En los próximos tres días lo verán mucho, así que empezaremos "
+"con algo reconocible."
#: src/types-and-values/hello-world.md
msgid ""
"Rust is very much like other languages in the C/C++/Java tradition. It is "
"imperative and it doesn't try to reinvent things unless absolutely necessary."
msgstr ""
-"Rust es muy similar a otros lenguajes, como C, C++ o Java. Es imperativo y "
-"no intenta reinventar las cosas a menos que sea absolutamente necesario."
+"Rust es muy similar a otros lenguajes, como C, C++ o Java. Es imperativo y no "
+"intenta reinventar las cosas a menos que sea absolutamente necesario."
#: src/types-and-values/hello-world.md
msgid "Rust is modern with full support for things like Unicode."
@@ -3071,20 +3025,18 @@ msgid ""
"arguments (no function [overloading](../control-flow-basics/functions.md))."
msgstr ""
"Rust utiliza macros en situaciones en las que se desea un número variable de "
-"argumentos (sin [sobrecarga](basic-syntax/functions-interlude.md) de "
-"funciones)."
+"argumentos (sin [sobrecarga](basic-syntax/functions-interlude.md) de funciones)."
#: src/types-and-values/hello-world.md
msgid ""
-"Macros being 'hygienic' means they don't accidentally capture identifiers "
-"from the scope they are used in. Rust macros are actually only [partially "
-"hygienic](https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene."
-"html)."
+"Macros being 'hygienic' means they don't accidentally capture identifiers from "
+"the scope they are used in. Rust macros are actually only [partially hygienic]"
+"(https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene.html)."
msgstr ""
"Que las macros sean 'higiénicas' significa que no capturan "
-"accidentalmenteidentificadores del ámbito en el que se utilizan. En "
-"realidad, las macros de Rust solo son [parcialmente higiénicas](https://"
-"veykril.github.io/tlborm/decl-macros/minutiae/hygiene.html)."
+"accidentalmenteidentificadores del ámbito en el que se utilizan. En realidad, "
+"las macros de Rust solo son [parcialmente higiénicas](https://veykril.github.io/"
+"tlborm/decl-macros/minutiae/hygiene.html)."
#: src/types-and-values/hello-world.md
msgid ""
@@ -3094,10 +3046,9 @@ msgid ""
"concepts](https://doc.rust-lang.org/book/ch13-00-functional-features.html)."
msgstr ""
"Rust es un lenguaje multiparadigma. Por ejemplo, cuenta con [funciones de "
-"programación orientadas a objetos](https://doc.rust-lang.org/book/ch17-00-"
-"oop.html) y, aunque no es un lenguaje funcional, incluye una serie de "
-"[conceptos funcionales](https://doc.rust-lang.org/book/ch13-00-functional-"
-"features.html)."
+"programación orientadas a objetos](https://doc.rust-lang.org/book/ch17-00-oop."
+"html) y, aunque no es un lenguaje funcional, incluye una serie de [conceptos "
+"funcionales](https://doc.rust-lang.org/book/ch13-00-functional-features.html)."
#: src/types-and-values/variables.md
msgid ""
@@ -3122,8 +3073,8 @@ msgstr ""
#: src/types-and-values/variables.md
msgid ""
-"Uncomment the `x = 20` to demonstrate that variables are immutable by "
-"default. Add the `mut` keyword to allow changes."
+"Uncomment the `x = 20` to demonstrate that variables are immutable by default. "
+"Add the `mut` keyword to allow changes."
msgstr ""
"Elimina el comentario de `x = 20` para demostrar que las variables son "
"inmutables de forma predeterminada. Añade la palabra clave `mut` para que se "
@@ -3131,18 +3082,18 @@ msgstr ""
#: src/types-and-values/variables.md
msgid ""
-"The `i32` here is the type of the variable. This must be known at compile "
-"time, but type inference (covered later) allows the programmer to omit it in "
-"many cases."
+"The `i32` here is the type of the variable. This must be known at compile time, "
+"but type inference (covered later) allows the programmer to omit it in many "
+"cases."
msgstr ""
"En este ejemplo, `i32` es el tipo de la variable. Se debe conocer durante el "
-"tiempo de compilación, pero la inferencia de tipos (véase más adelante) "
-"permite al programador omitirla en muchos casos."
+"tiempo de compilación, pero la inferencia de tipos (véase más adelante) permite "
+"al programador omitirla en muchos casos."
#: src/types-and-values/values.md
msgid ""
-"Here are some basic built-in types, and the syntax for literal values of "
-"each type."
+"Here are some basic built-in types, and the syntax for literal values of each "
+"type."
msgstr ""
"A continuación, se muestran algunos tipos integrados básicos, así como la "
"sintaxis de los valores literales de cada tipo."
@@ -3242,12 +3193,12 @@ msgstr "Hay algunas sintaxis que no se han mostrado anteriormente:"
#: src/types-and-values/values.md
msgid ""
"All underscores in numbers can be left out, they are for legibility only. So "
-"`1_000` can be written as `1000` (or `10_00`), and `123_i64` can be written "
-"as `123i64`."
+"`1_000` can be written as `1000` (or `10_00`), and `123_i64` can be written as "
+"`123i64`."
msgstr ""
"Todos guiones bajos en los números pueden no utilizarse, ya que solo sirven "
-"para facilitar la lectura. Por lo tanto, `1_000` se puede escribir como "
-"`1000` (o `10_00`), y `123_i64` se puede escribir como `123i64`."
+"para facilitar la lectura. Por lo tanto, `1_000` se puede escribir como `1000` "
+"(o `10_00`), y `123_i64` se puede escribir como `123i64`."
#: src/types-and-values/arithmetic.md
msgid "\"result: {}\""
@@ -3255,13 +3206,13 @@ msgstr "\"resultado: {}\""
#: src/types-and-values/arithmetic.md
msgid ""
-"This is the first time we've seen a function other than `main`, but the "
-"meaning should be clear: it takes three integers, and returns an integer. "
-"Functions will be covered in more detail later."
+"This is the first time we've seen a function other than `main`, but the meaning "
+"should be clear: it takes three integers, and returns an integer. Functions "
+"will be covered in more detail later."
msgstr ""
-"Es la primera vez que vemos una función distinta a `main`, pero el "
-"significado debería quedar claro: utiliza tres números enteros y devuelve "
-"uno. Más adelante, hablaremos sobre las funciones con más profundidad."
+"Es la primera vez que vemos una función distinta a `main`, pero el significado "
+"debería quedar claro: utiliza tres números enteros y devuelve uno. Más "
+"adelante, hablaremos sobre las funciones con más profundidad."
#: src/types-and-values/arithmetic.md
msgid "Arithmetic is very similar to other languages, with similar precedence."
@@ -3276,20 +3227,18 @@ msgid ""
msgstr ""
"¿Qué pasa con el desbordamiento de enteros? En C y C++, el desbordamiento de "
"números enteros _con signo_ no está definido, y podría tener diferentes "
-"resultados en diferentes plataformas o compiladores. En Rust sí está "
-"definido."
+"resultados en diferentes plataformas o compiladores. En Rust sí está definido."
#: src/types-and-values/arithmetic.md
msgid ""
-"Change the `i32`'s to `i16` to see an integer overflow, which panics "
-"(checked) in a debug build and wraps in a release build. There are other "
-"options, such as overflowing, saturating, and carrying. These are accessed "
-"with method syntax, e.g., `(a * b).saturating_add(b * c).saturating_add(c * "
-"a)`."
+"Change the `i32`'s to `i16` to see an integer overflow, which panics (checked) "
+"in a debug build and wraps in a release build. There are other options, such as "
+"overflowing, saturating, and carrying. These are accessed with method syntax, e."
+"g., `(a * b).saturating_add(b * c).saturating_add(c * a)`."
msgstr ""
-"Cambia el `i32` a `i16` para observar un desbordamiento de un número entero, "
-"lo que da error (pánico) en una versión de depuración, pero lo envuelve en "
-"una compilación de lanzamiento. Hay otras opciones disponibles, como el "
+"Cambia el `i32` a `i16` para observar un desbordamiento de un número entero, lo "
+"que da error (pánico) en una versión de depuración, pero lo envuelve en una "
+"compilación de lanzamiento. Hay otras opciones disponibles, como el "
"desbordamiento, la saturación y el acarreo, a las que se accede mediante la "
"sintaxis del método, por ejemplo, `(a * b).saturating_add(b * c)."
"saturating_add(c * a)`."
@@ -3308,36 +3257,35 @@ msgstr "Rust consultará cómo se _usa_ la variable para determinar el tipo:"
#: src/types-and-values/inference.md
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 ""
-"Esta diapositiva muestra cómo el compilador de Rust infiere tipos basándose "
-"en restricciones proporcionadas por declaraciones y usos de variables."
+"Esta diapositiva muestra cómo el compilador de Rust infiere tipos basándose en "
+"restricciones proporcionadas por declaraciones y usos de variables."
#: src/types-and-values/inference.md
msgid ""
-"It is very important to emphasize that variables declared like this are not "
-"of some sort of dynamic \"any type\" that can hold any data. The machine "
-"code generated by such declaration is identical to the explicit declaration "
-"of a type. The compiler does the job for us and helps us write more concise "
-"code."
+"It is very important to emphasize that variables declared like this are not of "
+"some sort of dynamic \"any type\" that can hold any data. The machine code "
+"generated by such declaration is identical to the explicit declaration of a "
+"type. The compiler does the job for us and helps us write more concise code."
msgstr ""
-"Es muy importante subrayar que las variables que se declaran así no son de "
-"un \"tipo cualquiera\" dinámico que pueda contener cualquier dato. El código "
-"máquina generado por tal declaración es idéntico a la declaración explícita "
-"de un tipo. El compilador hace el trabajo por nosotros y nos ayuda a "
-"escribir código más conciso."
+"Es muy importante subrayar que las variables que se declaran así no son de un "
+"\"tipo cualquiera\" dinámico que pueda contener cualquier dato. El código "
+"máquina generado por tal declaración es idéntico a la declaración explícita de "
+"un tipo. El compilador hace el trabajo por nosotros y nos ayuda a escribir "
+"código más conciso."
#: src/types-and-values/inference.md
msgid ""
-"When nothing constrains the type of an integer literal, Rust defaults to "
-"`i32`. This sometimes appears as `{integer}` in error messages. Similarly, "
-"floating-point literals default to `f64`."
+"When nothing constrains the type of an integer literal, Rust defaults to `i32`. "
+"This sometimes appears as `{integer}` in error messages. Similarly, floating-"
+"point literals default to `f64`."
msgstr ""
-"Cuando ningún elemento restringe el tipo de un literal entero, Rust lo "
-"define de forma predeterminada como `i32`. A veces aparece como `{integer}` "
-"en los mensajes de error. Del mismo modo, los literales de punto flotante se "
-"definen como `f64` de forma predeterminada."
+"Cuando ningún elemento restringe el tipo de un literal entero, Rust lo define "
+"de forma predeterminada como `i32`. A veces aparece como `{integer}` en los "
+"mensajes de error. Del mismo modo, los literales de punto flotante se definen "
+"como `f64` de forma predeterminada."
#: src/types-and-values/inference.md
msgid "// ERROR: no implementation for `{float} == {integer}`\n"
@@ -3345,9 +3293,8 @@ msgstr "// ERROR: no hay implementación para `{float} == {integer}`\n"
#: src/types-and-values/exercise.md
msgid ""
-"The Fibonacci sequence begins with `[0,1]`. For n>1, the n'th Fibonacci "
-"number is calculated recursively as the sum of the n-1'th and n-2'th "
-"Fibonacci numbers."
+"The Fibonacci sequence begins with `[0,1]`. For n>1, the n'th Fibonacci number "
+"is calculated recursively as the sum of the n-1'th and n-2'th Fibonacci numbers."
msgstr ""
"La secuencie de Fibonacci empieza con `[0, 1]`. Para n>1, el número de "
"Fibonacci en la posición n se calcula de forma recursiva como la suma de los "
@@ -3355,11 +3302,11 @@ msgstr ""
#: src/types-and-values/exercise.md
msgid ""
-"Write a function `fib(n)` that calculates the n'th Fibonacci number. When "
-"will this function panic?"
+"Write a function `fib(n)` that calculates the n'th Fibonacci number. When will "
+"this function panic?"
msgstr ""
-"Escribe una función `fib(n)` que calcule el número n de Fibonacci. ¿Cuándo "
-"da error pánico esta función?"
+"Escribe una función `fib(n)` que calcule el número n de Fibonacci. ¿Cuándo da "
+"error pánico esta función?"
#: src/types-and-values/exercise.md
msgid "// The base case.\n"
@@ -3396,12 +3343,11 @@ msgstr "Expresiones `if`"
#: src/control-flow-basics/if.md
msgid ""
-"You use [`if` expressions](https://doc.rust-lang.org/reference/expressions/"
-"if-expr.html#if-expressions) exactly like `if` statements in other languages:"
+"You use [`if` expressions](https://doc.rust-lang.org/reference/expressions/if-"
+"expr.html#if-expressions) exactly like `if` statements in other languages:"
msgstr ""
-"Puedes usar [expresiones `if`](https://doc.rust-lang.org/reference/"
-"expressions/if-expr.html#if-expressions) de la misma forma que en otros "
-"lenguajes:"
+"Puedes usar [expresiones `if`](https://doc.rust-lang.org/reference/expressions/"
+"if-expr.html#if-expressions) de la misma forma que en otros lenguajes:"
#: src/control-flow-basics/if.md
msgid "\"zero!\""
@@ -3420,8 +3366,8 @@ msgid ""
"In addition, you can use `if` as an expression. The last expression of each "
"block becomes the value of the `if` expression:"
msgstr ""
-"Además, puedes utilizar `if` como expresión. La última expresión de cada "
-"bloque se convierte en el valor de la expresión `if`:"
+"Además, puedes utilizar `if` como expresión. La última expresión de cada bloque "
+"se convierte en el valor de la expresión `if`:"
#: src/control-flow-basics/if.md
msgid "\"small\""
@@ -3438,22 +3384,22 @@ msgstr "\"tamaño del número: {}\""
#: src/control-flow-basics/if.md
msgid ""
"Because `if` is an expression and must have a particular type, both of its "
-"branch blocks must have the same type. Show what happens if you add `;` "
-"after `\"small\"` in the second example."
+"branch blocks must have the same type. Show what happens if you add `;` after "
+"`\"small\"` in the second example."
msgstr ""
"Dado que `if` es una expresión y debe tener un tipo concreto, ambos de sus "
-"bloques de ramas deben tener el mismo tipo. En el segundo ejemplo, muestra "
-"lo que sucede al añadir `;` después de `\"small\"`."
+"bloques de ramas deben tener el mismo tipo. En el segundo ejemplo, muestra lo "
+"que sucede al añadir `;` después de `\"small\"`."
#: src/control-flow-basics/if.md
msgid ""
-"When `if` is used in an expression, the expression must have a `;` to "
-"separate it from the next statement. Remove the `;` before `println!` to see "
-"the compiler error."
+"When `if` is used in an expression, the expression must have a `;` to separate "
+"it from the next statement. Remove the `;` before `println!` to see the "
+"compiler error."
msgstr ""
-"Cuando se utiliza `if` en una expresión, esta debe tener un `;` para "
-"separarla de la siguiente instrucción. Elimina `;` antes de `println!` para "
-"ver el error del compilador."
+"Cuando se utiliza `if` en una expresión, esta debe tener un `;` para separarla "
+"de la siguiente instrucción. Elimina `;` antes de `println!` para ver el error "
+"del compilador."
#: src/control-flow-basics/loops.md
msgid "There are three looping keywords in Rust: `while`, `loop`, and `for`:"
@@ -3465,13 +3411,13 @@ msgstr "Bucles `while`"
#: src/control-flow-basics/loops.md
msgid ""
-"The [`while` keyword](https://doc.rust-lang.org/reference/expressions/loop-"
-"expr.html#predicate-loops) works much like in other languages, executing the "
-"loop body as long as the condition is true."
+"The [`while` keyword](https://doc.rust-lang.org/reference/expressions/loop-expr."
+"html#predicate-loops) works much like in other languages, executing the loop "
+"body as long as the condition is true."
msgstr ""
-"La [palabra clave `while`](https://doc.rust-lang.org/reference/expressions/"
-"loop-expr.html#predicate-loops) es muy similar a la de otros lenguajes y "
-"ejecuta el cuerpo del bucle mientras que la condición sea valida."
+"La [palabra clave `while`](https://doc.rust-lang.org/reference/expressions/loop-"
+"expr.html#predicate-loops) es muy similar a la de otros lenguajes y ejecuta el "
+"cuerpo del bucle mientras que la condición sea valida."
#: src/control-flow-basics/loops.md
msgid "\"Final x: {x}\""
@@ -3479,8 +3425,8 @@ msgstr "\"x final: {x}\""
#: src/control-flow-basics/loops/for.md
msgid ""
-"The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) iterates "
-"over ranges of values or the items in a collection:"
+"The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) iterates over "
+"ranges of values or the items in a collection:"
msgstr ""
"El [bucle `for`](https://doc.rust-lang.org/std/keyword.for.html) itera sobre "
"rangos de valores o las entradas de una colección:"
@@ -3495,25 +3441,25 @@ msgid ""
"iterating over different kinds of ranges/collections. Iterators will be "
"discussed in more detail later."
msgstr ""
-"Los bucles `for` utilizan un concepto llamado \"iteradores\" para iterar "
-"sobre diferentes tipos de rangos/colecciones. Los iteradores serán "
-"discutidos en mas detalle mas adelante."
+"Los bucles `for` utilizan un concepto llamado \"iteradores\" para iterar sobre "
+"diferentes tipos de rangos/colecciones. Los iteradores serán discutidos en mas "
+"detalle mas adelante."
#: src/control-flow-basics/loops/for.md
msgid ""
"Note that the first `for` loop only iterates to `4`. Show the `1..=5` syntax "
"for an inclusive range."
msgstr ""
-"Ten en cuenta que el bucle `for` solo se itera a `4`. Muestra la sintaxis "
-"`1..=5` para un intervalo inclusivo."
+"Ten en cuenta que el bucle `for` solo se itera a `4`. Muestra la sintaxis `1.."
+"=5` para un intervalo inclusivo."
#: src/control-flow-basics/loops/loop.md
msgid ""
"The [`loop` statement](https://doc.rust-lang.org/std/keyword.loop.html) just "
"loops forever, until a `break`."
msgstr ""
-"El [bucle `loop`](https://doc.rust-lang.org/std/keyword.loop.html) repite "
-"hasta encontrar un `break`."
+"El [bucle `loop`](https://doc.rust-lang.org/std/keyword.loop.html) repite hasta "
+"encontrar un `break`."
#: src/control-flow-basics/loops/loop.md
msgid "\"{i}\""
@@ -3530,10 +3476,9 @@ msgstr ""
#: src/control-flow-basics/break-continue.md
msgid ""
-"If you want to exit any kind of loop early, use [`break`](https://doc.rust-"
-"lang.org/reference/expressions/loop-expr.html#break-expressions). For "
-"`loop`, this can take an optional expression that becomes the value of the "
-"`loop` expression."
+"If you want to exit any kind of loop early, use [`break`](https://doc.rust-lang."
+"org/reference/expressions/loop-expr.html#break-expressions). For `loop`, this "
+"can take an optional expression that becomes the value of the `loop` expression."
msgstr ""
"Si quieres salir de un bucle antes de que termine, usa [`break`](https://doc."
"rust-lang.org/reference/expressions/loop-expr.html#break-expressions). Para "
@@ -3551,11 +3496,11 @@ msgstr "\"{}\""
#: src/control-flow-basics/break-continue/labels.md
msgid ""
-"Both `continue` and `break` can optionally take a label argument which is "
-"used to break out of nested loops:"
+"Both `continue` and `break` can optionally take a label argument which is used "
+"to break out of nested loops:"
msgstr ""
-"De forma opcional, tanto `continue` como `break` pueden utilizar un "
-"argumento de etiqueta para interrumpir los bucles anidados:"
+"De forma opcional, tanto `continue` como `break` pueden utilizar un argumento "
+"de etiqueta para interrumpir los bucles anidados:"
#: src/control-flow-basics/break-continue/labels.md
msgid "\"elements searched: {elements_searched}\""
@@ -3568,8 +3513,8 @@ msgid ""
"`while` and `for` loops)."
msgstr ""
"Ten en cuenta que `loop` es la única construcción de bucle que devuelve un "
-"valor no trivial. Esto se debe a que es inevitable que se introduzca al "
-"menos una vez (a diferencia de los bucles `while` y `for`)."
+"valor no trivial. Esto se debe a que es inevitable que se introduzca al menos "
+"una vez (a diferencia de los bucles `while` y `for`)."
#: src/control-flow-basics/blocks-and-scopes.md
msgid "Blocks"
@@ -3581,8 +3526,8 @@ msgid ""
"Each block has a value and a type, which are those of the last expression of "
"the block:"
msgstr ""
-"En Rust, un bloque contiene una secuencia de expresiones rodeados por llaves "
-"`{}`. Cada bloque tiene el tipo y valor de la última expresión del bloque:"
+"En Rust, un bloque contiene una secuencia de expresiones rodeados por llaves `{}"
+"`. Cada bloque tiene el tipo y valor de la última expresión del bloque:"
#: src/control-flow-basics/blocks-and-scopes.md
msgid "\"y: {y}\""
@@ -3590,19 +3535,17 @@ msgstr "\"y: {y}\""
#: src/control-flow-basics/blocks-and-scopes.md
msgid ""
-"If the last expression ends with `;`, then the resulting value and type is "
-"`()`."
+"If the last expression ends with `;`, then the resulting value and type is `()`."
msgstr ""
-"Si la última expresión termina con `;`, el tipo y el valor resultante será "
-"`()`."
+"Si la última expresión termina con `;`, el tipo y el valor resultante será `()`."
#: src/control-flow-basics/blocks-and-scopes.md
msgid ""
"You can show how the value of the block changes by changing the last line in "
"the block. For instance, adding/removing a semicolon or using a `return`."
msgstr ""
-"Puedes mostrar cómo cambia el valor del bloque cambiando su última línea. "
-"Por ejemplo, añade o quita un punto y coma, o utiliza la expresión `return`."
+"Puedes mostrar cómo cambia el valor del bloque cambiando su última línea. Por "
+"ejemplo, añade o quita un punto y coma, o utiliza la expresión `return`."
#: src/control-flow-basics/blocks-and-scopes/scopes.md
msgid "A variable's scope is limited to the enclosing block."
@@ -3610,8 +3553,8 @@ msgstr "El ámbito de una variable se limita al bloque que la contiene."
#: src/control-flow-basics/blocks-and-scopes/scopes.md
msgid ""
-"You can shadow variables, both those from outer scopes and variables from "
-"the same scope:"
+"You can shadow variables, both those from outer scopes and variables from the "
+"same scope:"
msgstr ""
"Puedes sombrear variables, tanto las de ámbitos externos como las del propio "
"ámbito:"
@@ -3639,23 +3582,23 @@ msgstr "\"después: {a}\""
#: src/control-flow-basics/blocks-and-scopes/scopes.md
msgid ""
-"Show that a variable's scope is limited by adding a `b` in the inner block "
-"in the last example, and then trying to access it outside that block."
+"Show that a variable's scope is limited by adding a `b` in the inner block in "
+"the last example, and then trying to access it outside that block."
msgstr ""
-"Para demostrar que el ámbito de una variable está limitado, añade una `b` en "
-"el bloque interno del último ejemplo y, a continuación, intenta acceder a "
-"ella desde fuera de ese bloque."
+"Para demostrar que el ámbito de una variable está limitado, añade una `b` en el "
+"bloque interno del último ejemplo y, a continuación, intenta acceder a ella "
+"desde fuera de ese bloque."
#: src/control-flow-basics/blocks-and-scopes/scopes.md
msgid ""
-"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."
+"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."
msgstr ""
-"Definición: _Shadowing_ (sombreado) es distinto de la mutación, ya que "
-"después de sombrear las ubicaciones de memoria de las dos variables existen "
-"al mismo tiempo. Ambas están disponibles bajo el mismo nombre, en función de "
-"dónde se utiliza en el código."
+"Definición: _Shadowing_ (sombreado) es distinto de la mutación, ya que después "
+"de sombrear las ubicaciones de memoria de las dos variables existen al mismo "
+"tiempo. Ambas están disponibles bajo el mismo nombre, en función de dónde se "
+"utiliza en el código."
#: src/control-flow-basics/blocks-and-scopes/scopes.md
msgid "A shadowing variable can have a different type."
@@ -3671,25 +3614,25 @@ msgstr ""
#: src/control-flow-basics/functions.md
msgid ""
-"Declaration parameters are followed by a type (the reverse of some "
-"programming languages), then a return type."
+"Declaration parameters are followed by a type (the reverse of some programming "
+"languages), then a return type."
msgstr ""
"Los parámetros de declaración van seguidos de un tipo (al contrario que en "
-"algunos lenguajes de programación) y, a continuación, de un tipo de "
-"resultado devuelto."
+"algunos lenguajes de programación) y, a continuación, de un tipo de resultado "
+"devuelto."
#: src/control-flow-basics/functions.md
msgid ""
-"The last expression in a function body (or any block) becomes the return "
-"value. Simply omit the `;` at the end of the expression. The `return` "
-"keyword can be used for early return, but the \"bare value\" form is "
-"idiomatic at the end of a function (refactor `gcd` to use a `return`)."
+"The last expression in a function body (or any block) becomes the return value. "
+"Simply omit the `;` at the end of the expression. The `return` keyword can be "
+"used for early return, but the \"bare value\" form is idiomatic at the end of a "
+"function (refactor `gcd` to use a `return`)."
msgstr ""
"La última expresión del cuerpo de una función (o de cualquier bloque) se "
-"convierte en el valor devuelto. Basta con omitir el carácter `;` al final de "
-"la expresión. La palabra clave `return` puede ser utilizado para devolver "
-"valores antes del fin de la función, pero la sintaxis de \"valor desnudo\" "
-"es idiomático al fin de una función."
+"convierte en el valor devuelto. Basta con omitir el carácter `;` al final de la "
+"expresión. La palabra clave `return` puede ser utilizado para devolver valores "
+"antes del fin de la función, pero la sintaxis de \"valor desnudo\" es "
+"idiomático al fin de una función."
#: src/control-flow-basics/functions.md
msgid ""
@@ -3700,16 +3643,15 @@ msgstr ""
"`()`. El compilador deducirá esto si se omite el tipo de retorno `-> ()`."
#: src/control-flow-basics/functions.md
-msgid ""
-"Overloading is not supported -- each function has a single implementation."
+msgid "Overloading is not supported -- each function has a single implementation."
msgstr ""
"El sobrecargo de funciones no existe en Rust -- cada función tiene una única "
"implementación."
#: src/control-flow-basics/functions.md
msgid ""
-"Always takes a fixed number of parameters. Default arguments are not "
-"supported. Macros can be used to support variadic functions."
+"Always takes a fixed number of parameters. Default arguments are not supported. "
+"Macros can be used to support variadic functions."
msgstr ""
"Siempre toma un número fijo de parámetros. No se admiten argumentos "
"predeterminados. Las macros se pueden utilizar para admitir funciones "
@@ -3717,22 +3659,21 @@ msgstr ""
#: src/control-flow-basics/functions.md
msgid ""
-"Always takes a single set of parameter types. These types can be generic, "
-"which will be covered later."
+"Always takes a single set of parameter types. These types can be generic, which "
+"will be covered later."
msgstr ""
-"Siempre se utiliza un solo conjunto de tipos de parámetros. Estos tipos "
-"pueden ser genéricos, lo cual discutiremos mas tarde."
+"Siempre se utiliza un solo conjunto de tipos de parámetros. Estos tipos pueden "
+"ser genéricos, lo cual discutiremos mas tarde."
#: src/control-flow-basics/macros.md
msgid ""
-"Macros are expanded into Rust code during compilation, and can take a "
-"variable number of arguments. They are distinguished by a `!` at the end. "
-"The Rust standard library includes an assortment of useful macros."
+"Macros are expanded into Rust code during compilation, and can take a variable "
+"number of arguments. They are distinguished by a `!` at the end. The Rust "
+"standard library includes an assortment of useful macros."
msgstr ""
-"Las macros se amplían a código de Rust durante la compilación y pueden "
-"adoptar un número variable de argumentos. Se distinguen por utilizar un "
-"símbolo `!` al final. La biblioteca estándar de Rust incluye una serie de "
-"macros útiles."
+"Las macros se amplían a código de Rust durante la compilación y pueden adoptar "
+"un número variable de argumentos. Se distinguen por utilizar un símbolo `!` al "
+"final. La biblioteca estándar de Rust incluye una serie de macros útiles."
#: src/control-flow-basics/macros.md
msgid ""
@@ -3740,16 +3681,16 @@ msgid ""
"described in [`std::fmt`](https://doc.rust-lang.org/std/fmt/index.html)."
msgstr ""
"`println!(format, ..)` imprime una linea a la salida estándar (\"standard "
-"output\"), aplicando el formato descrito en [`std::fmt`](https://doc.rust-"
-"lang.org/std/fmt/index.html)."
+"output\"), aplicando el formato descrito en [`std::fmt`](https://doc.rust-lang."
+"org/std/fmt/index.html)."
#: src/control-flow-basics/macros.md
msgid ""
"`format!(format, ..)` works just like `println!` but returns the result as a "
"string."
msgstr ""
-"`format!(format, ..)` funciona igual que `println!`, pero devuelve el "
-"resultado en forma de cadena."
+"`format!(format, ..)` funciona igual que `println!`, pero devuelve el resultado "
+"en forma de cadena."
#: src/control-flow-basics/macros.md
msgid "`dbg!(expression)` logs the value of the expression and returns it."
@@ -3765,11 +3706,10 @@ msgstr ""
#: src/control-flow-basics/macros.md
msgid ""
-"`unreachable!()` marks a bit of code as unreachable. If executed, it will "
-"panic."
+"`unreachable!()` marks a bit of code as unreachable. If executed, it will panic."
msgstr ""
-"`unreachable!()` marca un fragmento de código como inaccesible. Si se "
-"ejecuta, activará un error pánico."
+"`unreachable!()` marca un fragmento de código como inaccesible. Si se ejecuta, "
+"activará un error pánico."
#: src/control-flow-basics/macros.md
msgid "\"{n}! = {}\""
@@ -3777,9 +3717,9 @@ msgstr "\"{n}! = {}\""
#: src/control-flow-basics/macros.md
msgid ""
-"The takeaway from this section is that these common conveniences exist, and "
-"how to use them. Why they are defined as macros, and what they expand to, is "
-"not especially critical."
+"The takeaway from this section is that these common conveniences exist, and how "
+"to use them. Why they are defined as macros, and what they expand to, is not "
+"especially critical."
msgstr ""
"El objetivo de esta sección es mostrar que existen estos elementos útiles y "
"cómo usarlos. Por qué se definen como macros y a qué se expanden no es muy "
@@ -3798,13 +3738,11 @@ msgid ""
"The [Collatz Sequence](https://en.wikipedia.org/wiki/Collatz_conjecture) is "
"defined as follows, for an arbitrary n1 greater than zero:"
msgstr ""
-"La [secuencia de Collatz](https://es.wikipedia.org/wiki/"
-"Conjetura_de_Collatz) se define de la siguiente manera, para n1 "
-"arbitrario mayor que cero:"
+"La [secuencia de Collatz](https://es.wikipedia.org/wiki/Conjetura_de_Collatz) "
+"se define de la siguiente manera, para n1 arbitrario mayor que cero:"
#: src/control-flow-basics/exercise.md
-msgid ""
-"If _ni _ is 1, then the sequence terminates at _ni _."
+msgid "If _ni _ is 1, then the sequence terminates at _ni _."
msgstr "Si _ni _es 1, la secuencia termina en _ni _."
#: src/control-flow-basics/exercise.md
@@ -3812,10 +3750,8 @@ msgid "If _ni _ is even, then _ni+1 = ni / 2_."
msgstr "Si _ni _ es par, _ni+1 = ni / 2_."
#: src/control-flow-basics/exercise.md
-msgid ""
-"If _ni _ is odd, then _ni+1 = 3 * ni + 1_."
-msgstr ""
-"Si _ni _ es impar, _ni+1 = 3 * ni + 1_."
+msgid "If _ni _ is odd, then _ni+1 = 3 * ni + 1_."
+msgstr "Si _ni _ es impar, _ni+1 = 3 * ni + 1_."
#: src/control-flow-basics/exercise.md
msgid "For example, beginning with _n1 _ = 3:"
@@ -3858,8 +3794,8 @@ msgid ""
"Write a function to calculate the length of the collatz sequence for a given "
"initial `n`."
msgstr ""
-"Escribe una función para calcular la longitud de la secuencia de Collatz "
-"para un número `n` inicial dado."
+"Escribe una función para calcular la longitud de la secuencia de Collatz para "
+"un número `n` inicial dado."
#: src/control-flow-basics/exercise.md src/control-flow-basics/solution.md
msgid "/// Determine the length of the collatz sequence beginning at `n`.\n"
@@ -3880,8 +3816,8 @@ msgid ""
"Including 10 minute breaks, this session should take about 2 hours and 35 "
"minutes. It contains:"
msgstr ""
-"Contando con los descansos de 10 minutos, la duración prevista de la sesión "
-"es de unas 2 horas y 35 minutos. Contiene:"
+"Contando con los descansos de 10 minutos, la duración prevista de la sesión es "
+"de unas 2 horas y 35 minutos. Contiene:"
#: src/tuples-and-arrays.md
msgid "This segment should take about 35 minutes. It contains:"
@@ -3889,23 +3825,22 @@ msgstr "Esta sección tiene una duración aproximada de 35 minutos. Contiene:"
#: src/tuples-and-arrays/arrays.md
msgid ""
-"A value of the array type `[T; N]` holds `N` (a compile-time constant) "
-"elements of the same type `T`. Note that the length of the array is _part of "
-"its type_, which means that `[u8; 3]` and `[u8; 4]` are considered two "
-"different types. Slices, which have a size determined at runtime, are "
-"covered later."
+"A value of the array type `[T; N]` holds `N` (a compile-time constant) elements "
+"of the same type `T`. Note that the length of the array is _part of its type_, "
+"which means that `[u8; 3]` and `[u8; 4]` are considered two different types. "
+"Slices, which have a size determined at runtime, are covered later."
msgstr ""
"Un valor del tipo array `[T; N]` contiene `N` (una constante en tiempo de "
"compilación) elementos del mismo tipo `T`. Ten en cuenta que la longitud del "
"array es _parte de su tipo), lo que significa que `[u8; 3]` y `[u8; 4]` se "
-"consideran dos tipos diferentes. Los slices, que tienen un tamaño "
-"determinado al tiempo de ejecución, serán discutidos mas tarde."
+"consideran dos tipos diferentes. Los slices, que tienen un tamaño determinado "
+"al tiempo de ejecución, serán discutidos mas tarde."
#: src/tuples-and-arrays/arrays.md
msgid ""
"Try accessing an out-of-bounds array element. Array accesses are checked at "
-"runtime. Rust can usually optimize these checks away, and they can be "
-"avoided using unsafe Rust."
+"runtime. Rust can usually optimize these checks away, and they can be avoided "
+"using unsafe Rust."
msgstr ""
"Prueba a acceder a un array que esté fuera de los límites. Los accesos a los "
"arrays se comprueban en el tiempo de ejecución. Rust suele optimizar estas "
@@ -3918,14 +3853,13 @@ msgstr "Podemos usar literales para asignar valores a arrays."
#: src/tuples-and-arrays/arrays.md
msgid ""
"The `println!` macro asks for the debug implementation with the `?` format "
-"parameter: `{}` gives the default output, `{:?}` gives the debug output. "
-"Types such as integers and strings implement the default output, but arrays "
-"only implement the debug output. This means that we must use debug output "
-"here."
-msgstr ""
-"El macro de impresión `println!` solicita la implementación de depuración "
-"con el parámetro de formato `?`: `{}` ofrece la salida predeterminada y `{:?}"
-"` ofrece la salida de depuración. Tipos como números enteros y cadenas "
+"parameter: `{}` gives the default output, `{:?}` gives the debug output. Types "
+"such as integers and strings implement the default output, but arrays only "
+"implement the debug output. This means that we must use debug output here."
+msgstr ""
+"El macro de impresión `println!` solicita la implementación de depuración con "
+"el parámetro de formato `?`: `{}` ofrece la salida predeterminada y `{:?}` "
+"ofrece la salida de depuración. Tipos como números enteros y cadenas "
"implementan la salida de depuración. Esto significan que tenemos que usar la "
"salida de depuración en este caso."
@@ -3934,8 +3868,8 @@ msgid ""
"Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be "
"easier to read."
msgstr ""
-"Si se añade `#`, por ejemplo `{a:#?}`, se da formato al texto para facilitar "
-"la lectura."
+"Si se añade `#`, por ejemplo `{a:#?}`, se da formato al texto para facilitar la "
+"lectura."
#: src/tuples-and-arrays/tuples.md
msgid "Like arrays, tuples have a fixed length."
@@ -3947,42 +3881,40 @@ msgstr "Las tuplas agrupan valores de diferentes tipos en un tipo compuesto."
#: src/tuples-and-arrays/tuples.md
msgid ""
-"Fields of a tuple can be accessed by the period and the index of the value, "
-"e.g. `t.0`, `t.1`."
+"Fields of a tuple can be accessed by the period and the index of the value, e."
+"g. `t.0`, `t.1`."
msgstr ""
-"Se puede acceder a los campos de una tupla por el punto y el índice del "
-"valor, por ejemplo, `t.0`, `t.1`."
+"Se puede acceder a los campos de una tupla por el punto y el índice del valor, "
+"por ejemplo, `t.0`, `t.1`."
#: src/tuples-and-arrays/tuples.md
msgid ""
-"The empty tuple `()` is referred to as the \"unit type\" and signifies "
-"absence of a return value, akin to `void` in other languages."
+"The empty tuple `()` is referred to as the \"unit type\" and signifies absence "
+"of a return value, akin to `void` in other languages."
msgstr ""
-"La tupla vacía `()` es llamado el \"tipo de unidad\" y significa la ausencia "
-"de un valor de retorno, parecido a `void` en otros lenguajes."
+"La tupla vacía `()` es llamado el \"tipo de unidad\" y significa la ausencia de "
+"un valor de retorno, parecido a `void` en otros lenguajes."
#: src/tuples-and-arrays/iteration.md
msgid "The `for` statement supports iterating over arrays (but not tuples)."
-msgstr ""
-"La instrucción `for` permite iterar sobre arrays, pero no sobre tuplas."
+msgstr "La instrucción `for` permite iterar sobre arrays, pero no sobre tuplas."
#: src/tuples-and-arrays/iteration.md
msgid ""
-"This functionality uses the `IntoIterator` trait, but we haven't covered "
-"that yet."
-msgstr ""
-"Esta función usa el trait `IntoIterator`, pero aún no lo hemos estudiado."
+"This functionality uses the `IntoIterator` trait, but we haven't covered that "
+"yet."
+msgstr "Esta función usa el trait `IntoIterator`, pero aún no lo hemos estudiado."
#: src/tuples-and-arrays/iteration.md
msgid ""
-"The `assert_ne!` macro is new here. There are also `assert_eq!` and `assert!"
-"` macros. These are always checked while, debug-only variants like "
-"`debug_assert!` compile to nothing in release builds."
+"The `assert_ne!` macro is new here. There are also `assert_eq!` and `assert!` "
+"macros. These are always checked while, debug-only variants like `debug_assert!"
+"` compile to nothing in release builds."
msgstr ""
"La macro `assert_ne!` es nueva. También existen las macros `assert_eq!` y "
-"`assert!`. Estas variantes siempre se comprueban mientras las variantes de "
-"solo depuración, como `debug_assert!`, no compilan nada en las compilaciones "
-"de lanzamiento."
+"`assert!`. Estas variantes siempre se comprueban mientras las variantes de solo "
+"depuración, como `debug_assert!`, no compilan nada en las compilaciones de "
+"lanzamiento."
#: src/tuples-and-arrays/destructuring.md
msgid ""
@@ -3991,8 +3923,8 @@ msgid ""
"directly accessing the inner values:"
msgstr ""
"Cuando uno trabaja con tuplas y otros valores estructurados, es común querer "
-"extraer valores interiores a variables locales. Uno puede manualmente "
-"acceder los valores interiores:"
+"extraer valores interiores a variables locales. Uno puede manualmente acceder "
+"los valores interiores:"
#: src/tuples-and-arrays/destructuring.md
msgid "\"left: {left}, right: {right}\""
@@ -4003,23 +3935,23 @@ msgid ""
"However, Rust also supports using pattern matching to destructure a larger "
"value into its constituent parts:"
msgstr ""
-"Rust también provee la coincidencia de patrones para destructurar un valor "
-"en sus partes constituyentes:"
+"Rust también provee la coincidencia de patrones para destructurar un valor en "
+"sus partes constituyentes:"
#: src/tuples-and-arrays/destructuring.md
msgid ""
"The patterns used here are \"irrefutable\", meaning that the compiler can "
-"statically verify that the value on the right of `=` has the same structure "
-"as the pattern."
+"statically verify that the value on the right of `=` has the same structure as "
+"the pattern."
msgstr ""
-"Los patrones usados aquí son \"irrefutables\", es decir que el compilador "
-"puede estáticamente verificar que el valor a la derecha del `=` tiene la "
-"misma estructura que el patrón."
+"Los patrones usados aquí son \"irrefutables\", es decir que el compilador puede "
+"estáticamente verificar que el valor a la derecha del `=` tiene la misma "
+"estructura que el patrón."
#: src/tuples-and-arrays/destructuring.md
msgid ""
-"A variable name is an irrefutable pattern that always matches any value, "
-"hence why we can also use `let` to declare a single variable."
+"A variable name is an irrefutable pattern that always matches any value, hence "
+"why we can also use `let` to declare a single variable."
msgstr ""
"Un nombre de variable es un patrón irrefutable que siempre coincide con "
"cualquier valor, así que también podemos usar `let` para declarar una sola "
@@ -4028,12 +3960,12 @@ msgstr ""
#: src/tuples-and-arrays/destructuring.md
msgid ""
"Rust also supports using patterns in conditionals, allowing for equality "
-"comparison and destructuring to happen at the same time. This form of "
-"pattern matching will be discussed in more detail later."
+"comparison and destructuring to happen at the same time. This form of pattern "
+"matching will be discussed in more detail later."
msgstr ""
"Los patrones también se pueden usar en los condicionales, dejando que la "
-"comparación de igualdad y el desestructuramiento ocurren al mismo tiempo. "
-"Esta forma de coincidencia de patrones sera discutido mas a fondo mas tarde."
+"comparación de igualdad y el desestructuramiento ocurren al mismo tiempo. Esta "
+"forma de coincidencia de patrones sera discutido mas a fondo mas tarde."
#: src/tuples-and-arrays/destructuring.md
msgid ""
@@ -4056,8 +3988,8 @@ msgid ""
"Use an array such as the above to write a function `transpose` which will "
"transpose a matrix (turn rows into columns):"
msgstr ""
-"Usa el método anterior para escribir una función `transpose` que transpone "
-"una matriz (convierte filas en columnas):"
+"Usa el método anterior para escribir una función `transpose` que transpone una "
+"matriz (convierte filas en columnas):"
#: src/tuples-and-arrays/exercise.md
msgid ""
@@ -4110,12 +4042,12 @@ msgstr ""
#: src/references/shared.md
msgid ""
-"A shared reference to a type `T` has type `&T`. A reference value is made "
-"with the `&` operator. The `*` operator \"dereferences\" a reference, "
-"yielding its value."
+"A shared reference to a type `T` has type `&T`. A reference value is made with "
+"the `&` operator. The `*` operator \"dereferences\" a reference, yielding its "
+"value."
msgstr ""
-"Una referencia compartida a un tipo `T` tiene el tipo `&T`. Se crea un valor "
-"de referencia con el operador `&`. El operador `*` \"desreferencia\" una "
+"Una referencia compartida a un tipo `T` tiene el tipo `&T`. Se crea un valor de "
+"referencia con el operador `&`. El operador `*` \"desreferencia\" una "
"referencia, dando lugar a su valor."
#: src/references/shared.md
@@ -4126,29 +4058,27 @@ msgstr "Rust prohibirá estáticamente las referencias colgantes:"
msgid ""
"A reference is said to \"borrow\" the value it refers to, and this is a good "
"model for students not familiar with pointers: code can use the reference to "
-"access the value, but is still \"owned\" by the original variable. The "
-"course will get into more detail on ownership in day 3."
+"access the value, but is still \"owned\" by the original variable. The course "
+"will get into more detail on ownership in day 3."
msgstr ""
-"Se dice que una referencia \"toma prestado\" el valor al que hace "
-"referencia. Este es un buen modelo para los estudiantes que no están "
-"familiarizados con los punteros, ya que el código puede usar la referencia "
-"para acceder al valor, pero este sigue \"perteneciendo\" a la variable "
-"original. En el curso hablaremos con más profundidad sobre la propiedad el "
-"tercer día."
+"Se dice que una referencia \"toma prestado\" el valor al que hace referencia. "
+"Este es un buen modelo para los estudiantes que no están familiarizados con los "
+"punteros, ya que el código puede usar la referencia para acceder al valor, pero "
+"este sigue \"perteneciendo\" a la variable original. En el curso hablaremos con "
+"más profundidad sobre la propiedad el tercer día."
#: src/references/shared.md
msgid ""
-"References are implemented as pointers, and a key advantage is that they can "
-"be much smaller than the thing they point to. Students familiar with C or C+"
-"+ will recognize references as pointers. Later parts of the course will "
-"cover how Rust prevents the memory-safety bugs that come from using raw "
-"pointers."
+"References are implemented as pointers, and a key advantage is that they can be "
+"much smaller than the thing they point to. Students familiar with C or C++ will "
+"recognize references as pointers. Later parts of the course will cover how Rust "
+"prevents the memory-safety bugs that come from using raw pointers."
msgstr ""
-"Las referencias se implementan como punteros y una ventaja clave es que "
-"pueden ser mucho más pequeñas del elemento al que apuntan. Los participantes "
-"que estén familiarizados con C o C++ reconocerán las referencias como "
-"punteros. A lo largo del curso, hablaremos sobre cómo Rust evita los errores "
-"de seguridad en la memoria derivados del uso de punteros sin formato."
+"Las referencias se implementan como punteros y una ventaja clave es que pueden "
+"ser mucho más pequeñas del elemento al que apuntan. Los participantes que estén "
+"familiarizados con C o C++ reconocerán las referencias como punteros. A lo "
+"largo del curso, hablaremos sobre cómo Rust evita los errores de seguridad en "
+"la memoria derivados del uso de punteros sin formato."
#: src/references/shared.md
msgid ""
@@ -4158,9 +4088,8 @@ msgstr "Rust no crea referencias automáticamente, `&` siempre es obligatorio."
#: src/references/shared.md
msgid ""
-"Rust will auto-dereference in some cases, in particular when invoking "
-"methods (try `r.is_ascii()`). There is no need for an `->` operator like in "
-"C++."
+"Rust will auto-dereference in some cases, in particular when invoking methods "
+"(try `r.is_ascii()`). There is no need for an `->` operator like in C++."
msgstr ""
"Rust realizará una desreferencia automática en algunos casos, en especial al "
"invocar métodos (prueba `ref_x.count_ones()`). No hay necesidad para un "
@@ -4168,29 +4097,28 @@ msgstr ""
#: src/references/shared.md
msgid ""
-"In this example, `r` is mutable so that it can be reassigned (`r = &b`). "
-"Note that this re-binds `r`, so that it refers to something else. This is "
-"different from C++, where assignment to a reference changes the referenced "
-"value."
+"In this example, `r` is mutable so that it can be reassigned (`r = &b`). Note "
+"that this re-binds `r`, so that it refers to something else. This is different "
+"from C++, where assignment to a reference changes the referenced value."
msgstr ""
-"En este ejemplo, `r` es mutable para que se pueda reasignar (`r = &b`). "
-"Debes tener en cuenta que se vuelve a enlazar `r` para que haga referencia a "
-"otro elemento. Es distinto de C++, donde la asignación a una referencia "
-"modifica el valor referenciado."
+"En este ejemplo, `r` es mutable para que se pueda reasignar (`r = &b`). Debes "
+"tener en cuenta que se vuelve a enlazar `r` para que haga referencia a otro "
+"elemento. Es distinto de C++, donde la asignación a una referencia modifica el "
+"valor referenciado."
#: src/references/shared.md
msgid ""
"A shared reference does not allow modifying the value it refers to, even if "
"that value was mutable. Try `*r = 'X'`."
msgstr ""
-"Una referencia compartida no permite modificar el valor al que hace "
-"referencia, incluso aunque el valor sea mutable. Prueba con `*r = 'X'`."
+"Una referencia compartida no permite modificar el valor al que hace referencia, "
+"incluso aunque el valor sea mutable. Prueba con `*r = 'X'`."
#: src/references/shared.md
msgid ""
"Rust is tracking the lifetimes of all references to ensure they live long "
-"enough. Dangling references cannot occur in safe Rust. `x_axis` would return "
-"a reference to `point`, but `point` will be deallocated when the function "
+"enough. Dangling references cannot occur in safe Rust. `x_axis` would return a "
+"reference to `point`, but `point` will be deallocated when the function "
"returns, so this will not compile."
msgstr ""
"Rust hace un seguimiento del tiempo de vida de todas las referencias para "
@@ -4209,34 +4137,33 @@ msgid ""
"Exclusive references, also known as mutable references, allow changing the "
"value they refer to. They have type `&mut T`."
msgstr ""
-"Las referencias exclusivas, también denominadas referencias mutables, "
-"permiten cambiar el valor al que hacen referencia. Tienen el tipo `&mut T`."
+"Las referencias exclusivas, también denominadas referencias mutables, permiten "
+"cambiar el valor al que hacen referencia. Tienen el tipo `&mut T`."
#: src/references/exclusive.md
msgid ""
-"\"Exclusive\" means that only this reference can be used to access the "
-"value. No other references (shared or exclusive) can exist at the same time, "
-"and the referenced value cannot be accessed while the exclusive reference "
-"exists. Try making an `&point.0` or changing `point.0` while `x_coord` is "
-"alive."
+"\"Exclusive\" means that only this reference can be used to access the value. "
+"No other references (shared or exclusive) can exist at the same time, and the "
+"referenced value cannot be accessed while the exclusive reference exists. Try "
+"making an `&point.0` or changing `point.0` while `x_coord` is alive."
msgstr ""
-"\"Exclusivo\" significa que solo se puede utilizar esta referencia para "
-"acceder al valor. No pueden existir otras referencias (compartidas o "
-"exclusivas) al mismo tiempo y no se puede acceder al valor de referencia "
-"mientras exista la referencia exclusiva. Prueba a ejecutar un `&point.0` o a "
-"cambiar `point.0` mientras `x_coord` está activo."
+"\"Exclusivo\" significa que solo se puede utilizar esta referencia para acceder "
+"al valor. No pueden existir otras referencias (compartidas o exclusivas) al "
+"mismo tiempo y no se puede acceder al valor de referencia mientras exista la "
+"referencia exclusiva. Prueba a ejecutar un `&point.0` o a cambiar `point.0` "
+"mientras `x_coord` está activo."
#: src/references/exclusive.md
msgid ""
"Be sure to note the difference between `let mut x_coord: &i32` and `let "
"x_coord: &mut i32`. The first one represents a shared reference which can be "
-"bound to different values, while the second represents an exclusive "
-"reference to a mutable value."
+"bound to different values, while the second represents an exclusive reference "
+"to a mutable value."
msgstr ""
-"Ten en cuenta la diferencia entre `let mut x_coord: &i32` y `let x_coord: "
-"&mut i32`. La primera representa una referencia mutable que se puede "
-"vincular a distintos valores, mientras que la segunda representa una "
-"referencia a un valor mutable."
+"Ten en cuenta la diferencia entre `let mut x_coord: &i32` y `let x_coord: &mut "
+"i32`. La primera representa una referencia mutable que se puede vincular a "
+"distintos valores, mientras que la segunda representa una referencia a un valor "
+"mutable."
#: src/references/slices.md
msgid "Slices"
@@ -4252,8 +4179,7 @@ msgstr "Los slices toman prestados datos del tipo slice."
#: src/references/slices.md
msgid "Question: What happens if you modify `a[3]` right before printing `s`?"
-msgstr ""
-"Pregunta: ¿Qué ocurre si se modifica `a[3]` justo antes de imprimir `s`?"
+msgstr "Pregunta: ¿Qué ocurre si se modifica `a[3]` justo antes de imprimir `s`?"
#: src/references/slices.md
msgid ""
@@ -4266,32 +4192,29 @@ msgstr ""
#: src/references/slices.md
msgid ""
"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."
+"starting index, meaning that `&a[0..a.len()]` and `&a[..a.len()]` are identical."
msgstr ""
-"Si el slice comienza en el índice 0, la sintaxis de rango de Rust nos "
-"permite eliminar el índice inicial, lo que significa que `&a[0..a.len()]` y "
-"`&a[..a.len()]` son idénticos."
+"Si el slice comienza en el índice 0, la sintaxis de rango de Rust nos permite "
+"eliminar el índice inicial, lo que significa que `&a[0..a.len()]` y `&a[..a."
+"len()]` son idénticos."
#: src/references/slices.md
msgid ""
"The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are "
"identical."
msgstr ""
-"Lo mismo ocurre con el último índice, por lo que `&a[2..a.len()]` y "
-"`&a[2..]` son idénticos."
+"Lo mismo ocurre con el último índice, por lo que `&a[2..a.len()]` y `&a[2..]` "
+"son idénticos."
#: src/references/slices.md
-msgid ""
-"To easily create a slice of the full array, we can therefore use `&a[..]`."
-msgstr ""
-"Para crear fácilmente un slice del array completo, podemos usar `&a[..]`."
+msgid "To easily create a slice of the full array, we can therefore use `&a[..]`."
+msgstr "Para crear fácilmente un slice del array completo, podemos usar `&a[..]`."
#: src/references/slices.md
msgid ""
-"`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."
+"`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."
msgstr ""
"`s` es una referencia a un slice de `i32`s. Ten en cuenta que el tipo de `s` "
"(`&[i32]`) ya no menciona la longitud del array. Esto nos permite realizar "
@@ -4311,14 +4234,14 @@ msgid ""
"The question about modifying `a[3]` can spark an interesting discussion, but "
"the answer is that for memory safety reasons you cannot do it through `a` at "
"this point in the execution, but you can read the data from both `a` and `s` "
-"safely. It works before you created the slice, and again after the "
-"`println`, when the slice is no longer used."
+"safely. It works before you created the slice, and again after the `println`, "
+"when the slice is no longer used."
msgstr ""
"La cuestión sobre la modificación de `a[3]` puede suscitar un debate "
-"interesante, pero la respuesta es que, por razones de seguridad de memoria, "
-"no se puede hacer mediante `a` en este punto de la ejecución, pero sí se "
-"pueden leer los datos de `a` y `s` de forma segura. Funciona antes de crear "
-"el slice y después de `println`, cuando el slice ya no se utiliza."
+"interesante, pero la respuesta es que, por razones de seguridad de memoria, no "
+"se puede hacer mediante `a` en este punto de la ejecución, pero sí se pueden "
+"leer los datos de `a` y `s` de forma segura. Funciona antes de crear el slice y "
+"después de `println`, cuando el slice ya no se utiliza."
#: src/references/strings.md
msgid "We can now understand the two string types in Rust:"
@@ -4329,8 +4252,7 @@ msgid "`&str` is a slice of UTF-8 encoded bytes, similar to `&[u8]`."
msgstr "`&str` es un slice de bytes codificados en UTF-8, parecido a `&[u8]`."
#: src/references/strings.md
-msgid ""
-"`String` is an owned buffer of UTF-8 encoded bytes, similar to `Vec`."
+msgid "`String` is an owned buffer of UTF-8 encoded bytes, similar to `Vec`."
msgstr ""
"`String` es un buffer adueñado de bytes codificados en UTF-8, parecido a "
"`Vec`."
@@ -4358,32 +4280,30 @@ msgstr "\"s3: {s3}\""
#: src/references/strings.md
msgid ""
"`&str` introduces a string slice, which is an immutable reference to UTF-8 "
-"encoded string data stored in a block of memory. String literals "
-"(`\"Hello\"`), are stored in the program’s binary."
+"encoded string data stored in a block of memory. String literals (`\"Hello\"`), "
+"are stored in the program’s binary."
msgstr ""
"`&str` introduce un slice de cadena, que es una referencia inmutable a los "
-"datos de cadena codificados en UTF-8 y almacenados en un bloque de memoria. "
-"Los literales de cadena (`\"Hello\"`) se almacenan en el binario del "
-"programa."
+"datos de cadena codificados en UTF-8 y almacenados en un bloque de memoria. Los "
+"literales de cadena (`\"Hello\"`) se almacenan en el binario del programa."
#: src/references/strings.md
msgid ""
-"Rust's `String` type is a wrapper around a vector of bytes. As with a "
-"`Vec`, it is owned."
+"Rust's `String` type is a wrapper around a vector of bytes. As with a `Vec`, "
+"it is owned."
msgstr ""
-"El tipo `String` de Rust es un envoltorio que rodea a un vector de bytes. "
-"Como sucede con `Vec`, tiene propietario."
+"El tipo `String` de Rust es un envoltorio que rodea a un vector de bytes. Como "
+"sucede con `Vec`, tiene propietario."
#: src/references/strings.md
msgid ""
"As with many other types `String::from()` creates a string from a string "
-"literal; `String::new()` creates a new empty string, to which string data "
-"can be added using the `push()` and `push_str()` methods."
+"literal; `String::new()` creates a new empty string, to which string data can "
+"be added using the `push()` and `push_str()` methods."
msgstr ""
-"Al igual que ocurre con muchos otros tipos, `String::from()` crea una cadena "
-"a partir de un literal de cadena. `String::new()` crea una cadena vacía a la "
-"que se pueden añadir datos de cadena mediante los métodos `push()` y "
-"`push_str()`."
+"Al igual que ocurre con muchos otros tipos, `String::from()` crea una cadena a "
+"partir de un literal de cadena. `String::new()` crea una cadena vacía a la que "
+"se pueden añadir datos de cadena mediante los métodos `push()` y `push_str()`."
#: src/references/strings.md
msgid ""
@@ -4402,8 +4322,8 @@ msgid ""
"characters and is preferred over trying to get character boundaries right."
msgstr ""
"Puedes tomar prestados slices `&str` de `String` a través de `&` y, de forma "
-"opcional, la selección de intervalos. Si seleccionas un intervalo de bytes "
-"que no esté alineado con los límites de caracteres, la expresión activará un "
+"opcional, la selección de intervalos. Si seleccionas un intervalo de bytes que "
+"no esté alineado con los límites de caracteres, la expresión activará un "
"pánico. El iterador `chars` itera sobre los caracteres y se aconseja esta "
"opción a intentar definir los límites de los caracteres correctamente."
@@ -4414,11 +4334,11 @@ msgid ""
"equivalent of `std::string` from C++ (main difference: it can only contain "
"UTF-8 encoded bytes and will never use a small-string optimization)."
msgstr ""
-"Para los programadores de C++: piensa en `&str` como el `const char*` de C+"
-"+, pero uno que siempre apunta a una cadena válida en la memoria. El "
-"`String` de Rust es parecido a `std::string` de C++ (la diferencia principal "
-"es que solo puede contener bytes codificados en UTF-8 y nunca utilizará una "
-"optimización de cadena pequeña)."
+"Para los programadores de C++: piensa en `&str` como el `const char*` de C++, "
+"pero uno que siempre apunta a una cadena válida en la memoria. El `String` de "
+"Rust es parecido a `std::string` de C++ (la diferencia principal es que solo "
+"puede contener bytes codificados en UTF-8 y nunca utilizará una optimización de "
+"cadena pequeña)."
#: src/references/strings.md
msgid "Byte strings literals allow you to create a `&[u8]` value directly:"
@@ -4428,19 +4348,18 @@ msgstr ""
#: src/references/strings.md
msgid ""
-"Raw strings allow you to create a `&str` value with escapes disabled: "
-"`r\"\\n\" == \"\\\\n\"`. You can embed double-quotes by using an equal "
-"amount of `#` on either side of the quotes:"
+"Raw strings allow you to create a `&str` value with escapes disabled: `r\"\\n\" "
+"== \"\\\\n\"`. You can embed double-quotes by using an equal amount of `#` on "
+"either side of the quotes:"
msgstr ""
"Las cadenas sin formato te permiten crear un valor `&str` con los escapes "
-"inhabilitados: `r\"\\n\" == \"\\\\n\"`. Puedes insertar comillas dobles con "
-"la misma cantidad de `#` a cada lado de ellas:"
+"inhabilitados: `r\"\\n\" == \"\\\\n\"`. Puedes insertar comillas dobles con la "
+"misma cantidad de `#` a cada lado de ellas:"
#: src/references/exercise.md
msgid ""
-"We will create a few utility functions for 3-dimensional geometry, "
-"representing a point as `[f64;3]`. It is up to you to determine the function "
-"signatures."
+"We will create a few utility functions for 3-dimensional geometry, representing "
+"a point as `[f64;3]`. It is up to you to determine the function signatures."
msgstr ""
"Crearemos algunas funciones de utilidad para la geometría tridimensional "
"representando un punto como `[f64;3]`. Debes decidir las firmas de las "
@@ -4450,12 +4369,10 @@ msgstr ""
msgid ""
"// Calculate the magnitude of a vector by summing the squares of its "
"coordinates\n"
-"// and taking the square root. Use the `sqrt()` method to calculate the "
-"square\n"
+"// and taking the square root. Use the `sqrt()` method to calculate the square\n"
"// root, like `v.sqrt()`.\n"
msgstr ""
-"// Calcula la magnitud de un vector sumando los cuadrados de sus "
-"coordenadas\n"
+"// Calcula la magnitud de un vector sumando los cuadrados de sus coordenadas\n"
"// y sacando la raíz cuadrada. Usa el método `sqrt()` para calcular la raíz "
"cuadrada\n"
"//, como `v.sqrt()`.\n"
@@ -4490,8 +4407,7 @@ msgstr "/// Calcula la magnitud del vector dado.\n"
#: src/references/solution.md
msgid ""
-"/// Change the magnitude of the vector to 1.0 without changing its "
-"direction.\n"
+"/// Change the magnitude of the vector to 1.0 without changing its direction.\n"
msgstr "/// Cambia la magnitud del vector a 1.0 sin cambiar su dirección.\n"
#: src/user-defined-types.md src/methods-and-traits.md src/lifetimes.md
@@ -4531,8 +4447,8 @@ msgstr "Las estructuras funcionan como en C o en C++."
#: src/user-defined-types/named-structs.md
msgid "Like in C++, and unlike in C, no typedef is needed to define a type."
msgstr ""
-"Al igual que en C++, y a diferencia de C, no se necesita typedef para "
-"definir un tipo."
+"Al igual que en C++, y a diferencia de C, no se necesita typedef para definir "
+"un tipo."
#: src/user-defined-types/named-structs.md
msgid "Unlike in C++, there is no inheritance between structs."
@@ -4540,28 +4456,26 @@ msgstr "A diferencia de C++, no existe ninguna herencia entre las estructuras."
#: src/user-defined-types/named-structs.md
msgid ""
-"This may be a good time to let people know there are different types of "
-"structs."
+"This may be a good time to let people know there are different types of structs."
msgstr ""
-"Puede que sea un buen momento para indicar a los alumnos que existen "
-"diferentes tipos de estructuras."
+"Puede que sea un buen momento para indicar a los alumnos que existen diferentes "
+"tipos de estructuras."
#: src/user-defined-types/named-structs.md
msgid ""
-"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."
+"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."
msgstr ""
"Las estructuras de tamaño cero, como `struct Foo;`, se pueden utilizar al "
"implementar un trait en algún tipo en cuyo valor no quieres almacenar datos."
#: src/user-defined-types/named-structs.md
msgid ""
-"The next slide will introduce Tuple structs, used when the field names are "
-"not important."
+"The next slide will introduce Tuple structs, used when the field names are not "
+"important."
msgstr ""
-"La siguiente diapositiva presentará las estructuras de tuplas, que se "
-"utilizan cuando los nombres de los campos no son importantes."
+"La siguiente diapositiva presentará las estructuras de tuplas, que se utilizan "
+"cuando los nombres de los campos no son importantes."
#: src/user-defined-types/named-structs.md
msgid ""
@@ -4573,19 +4487,19 @@ msgstr ""
#: src/user-defined-types/named-structs.md
msgid ""
-"The syntax `..avery` 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."
+"The syntax `..avery` 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 ""
"La sintaxis `..avery` nos permite copiar la mayoría de los campos de la "
-"estructura anterior sin tener que escribirlos explícitamente. Siempre debe "
-"ser el último elemento."
+"estructura anterior sin tener que escribirlos explícitamente. Siempre debe ser "
+"el último elemento."
#: src/user-defined-types/tuple-structs.md
msgid "If the field names are unimportant, you can use a tuple struct:"
msgstr ""
-"Si los nombres de los campos no son importantes, puedes utilizar una "
-"estructura de tuplas:"
+"Si los nombres de los campos no son importantes, puedes utilizar una estructura "
+"de tuplas:"
#: src/user-defined-types/tuple-structs.md
msgid "\"({}, {})\""
@@ -4594,8 +4508,7 @@ msgstr "\"({}, {})\""
#: src/user-defined-types/tuple-structs.md
msgid "This is often used for single-field wrappers (called newtypes):"
msgstr ""
-"Esto se suele utilizar para envoltorios de campo único (denominados "
-"newtypes):"
+"Esto se suele utilizar para envoltorios de campo único (denominados newtypes):"
#: src/user-defined-types/tuple-structs.md
msgid "\"Ask a rocket scientist at NASA\""
@@ -4610,21 +4523,20 @@ msgstr "// ...\n"
#: src/user-defined-types/tuple-structs.md
msgid ""
-"Newtypes are a great way to encode additional information about the value in "
-"a primitive type, for example:"
+"Newtypes are a great way to encode additional information about the value in a "
+"primitive type, for example:"
msgstr ""
"Los newtypes son una buena forma de codificar información adicional sobre el "
"valor de un tipo primitivo, por ejemplo:"
#: src/user-defined-types/tuple-structs.md
msgid "The number is measured in some units: `Newtons` in the example above."
-msgstr ""
-"El número se mide en algunas unidades: `Newtons` en el ejemplo anterior."
+msgstr "El número se mide en algunas unidades: `Newtons` en el ejemplo anterior."
#: src/user-defined-types/tuple-structs.md
msgid ""
-"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)`."
+"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)`."
msgstr ""
"El valor ha pasado alguna validación cuando se ha creado, por lo que ya no "
"tendrás que volver a validarlo cada vez que lo uses: `PhoneNumber(String)` u "
@@ -4635,13 +4547,13 @@ msgid ""
"Demonstrate how to add a `f64` value to a `Newtons` type by accessing the "
"single field in the newtype."
msgstr ""
-"Demuestra cómo se añade un valor `f64` a un tipo `Newtons` accediendo al "
-"campo único del newtype."
+"Demuestra cómo se añade un valor `f64` a un tipo `Newtons` accediendo al campo "
+"único del newtype."
#: src/user-defined-types/tuple-structs.md
msgid ""
-"Rust generally doesn’t like inexplicit things, like automatic unwrapping or "
-"for instance using booleans as integers."
+"Rust generally doesn’t like inexplicit things, like automatic unwrapping or for "
+"instance using booleans as integers."
msgstr ""
"Por lo general, a Rust no le gustan los elementos no explícitos, como el "
"desenvolvimiento automático o, por ejemplo, el uso de booleanos como enteros."
@@ -4655,8 +4567,8 @@ msgid ""
"The example is a subtle reference to the [Mars Climate Orbiter](https://en."
"wikipedia.org/wiki/Mars_Climate_Orbiter) failure."
msgstr ""
-"El ejemplo es una sutil referencia al fracaso de la sonda [Mars Climate "
-"Orbiter](https://es.wikipedia.org/wiki/Mars_Climate_Orbiter)."
+"El ejemplo es una sutil referencia al fracaso de la sonda [Mars Climate Orbiter]"
+"(https://es.wikipedia.org/wiki/Mars_Climate_Orbiter)."
#: src/user-defined-types/enums.md
msgid ""
@@ -4684,8 +4596,7 @@ msgstr "\"En este turno: {:?}\""
#: src/user-defined-types/enums.md
msgid "Enumerations allow you to collect a set of values under one type."
msgstr ""
-"Las enumeraciones te permiten colectar un conjunto de valores en un solo "
-"tipo."
+"Las enumeraciones te permiten colectar un conjunto de valores en un solo tipo."
#: src/user-defined-types/enums.md
msgid ""
@@ -4697,13 +4608,13 @@ msgstr ""
#: src/user-defined-types/enums.md
msgid ""
-"`PlayerMove` is a type with three variants. In addition to the payloads, "
-"Rust will store a discriminant so that it knows at runtime which variant is "
-"in a `PlayerMove` value."
+"`PlayerMove` is a type with three variants. In addition to the payloads, Rust "
+"will store a discriminant so that it knows at runtime which variant is in a "
+"`PlayerMove` value."
msgstr ""
-"`PlayerMove` es un tipo con tres variantes. Además de las cargas útiles, "
-"Rust almacenará un discriminante para saber qué variante se encuentra en un "
-"valor `PlayerMove` en el tiempo de ejecución."
+"`PlayerMove` es un tipo con tres variantes. Además de las cargas útiles, Rust "
+"almacenará un discriminante para saber qué variante se encuentra en un valor "
+"`PlayerMove` en el tiempo de ejecución."
#: src/user-defined-types/enums.md
msgid "This might be a good time to compare structs and enums:"
@@ -4712,21 +4623,21 @@ msgstr ""
#: src/user-defined-types/enums.md
msgid ""
-"In both, you can have a simple version without fields (unit struct) or one "
-"with different types of fields (variant payloads)."
+"In both, you can have a simple version without fields (unit struct) or one with "
+"different types of fields (variant payloads)."
msgstr ""
-"En ambas puedes tener una versión sencilla sin campos (estructura unitaria) "
-"o una versión con distintos tipos de campos (variantes con carga útil)."
+"En ambas puedes tener una versión sencilla sin campos (estructura unitaria) o "
+"una versión con distintos tipos de campos (variantes con carga útil)."
#: src/user-defined-types/enums.md
msgid ""
"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."
+"structs but then they wouldn’t be the same type as they would if they were all "
+"defined in an enum."
msgstr ""
"Incluso podrías implementar las distintas variantes de una enumeración con "
-"estructuras diferentes, pero entonces no serían del mismo tipo como lo "
-"serían si estuvieran todas definidas en una enumeración."
+"estructuras diferentes, pero entonces no serían del mismo tipo como lo serían "
+"si estuvieran todas definidas en una enumeración."
#: src/user-defined-types/enums.md
msgid "Rust uses minimal space to store the discriminant."
@@ -4740,29 +4651,28 @@ msgstr ""
#: src/user-defined-types/enums.md
msgid ""
"If the allowed variant values do not cover all bit patterns, it will use "
-"invalid bit patterns to encode the discriminant (the \"niche "
-"optimization\"). For example, `Option<&u8>` stores either a pointer to an "
-"integer or `NULL` for the `None` variant."
+"invalid bit patterns to encode the discriminant (the \"niche optimization\"). "
+"For example, `Option<&u8>` stores either a pointer to an integer or `NULL` for "
+"the `None` variant."
msgstr ""
-"Si los valores de la variante permitidos no cubren todos los patrones de "
-"bits, se utilizarán patrones de bits no válidos para codificar el "
-"discriminante (la \"optimización de nicho\"). Por ejemplo, `Option<&u8>` "
-"almacena un puntero en un número entero o `NULL` para la variante `None`."
+"Si los valores de la variante permitidos no cubren todos los patrones de bits, "
+"se utilizarán patrones de bits no válidos para codificar el discriminante (la "
+"\"optimización de nicho\"). Por ejemplo, `Option<&u8>` almacena un puntero en "
+"un número entero o `NULL` para la variante `None`."
#: src/user-defined-types/enums.md
msgid ""
"You can control the discriminant if needed (e.g., for compatibility with C):"
msgstr ""
-"Puedes controlar el discriminante si es necesario (por ejemplo, para "
-"asegurar la compatibilidad con C):"
+"Puedes controlar el discriminante si es necesario (por ejemplo, para asegurar "
+"la compatibilidad con C):"
#: src/user-defined-types/enums.md
msgid ""
-"Without `repr`, the discriminant type takes 2 bytes, because 10001 fits 2 "
-"bytes."
+"Without `repr`, the discriminant type takes 2 bytes, because 10001 fits 2 bytes."
msgstr ""
-"Sin `repr`, el tipo discriminante ocupa 2 bytes, debido a que 10001 se cabe "
-"en 2 bytes."
+"Sin `repr`, el tipo discriminante ocupa 2 bytes, debido a que 10001 se cabe en "
+"2 bytes."
#: src/user-defined-types/enums.md src/user-defined-types/static.md
#: src/memory-management/review.md src/memory-management/move.md
@@ -4773,8 +4683,7 @@ msgstr "Más información"
#: src/user-defined-types/enums.md
msgid ""
-"Rust has several optimizations it can employ to make enums take up less "
-"space."
+"Rust has several optimizations it can employ to make enums take up less space."
msgstr ""
"Rust cuenta con varias optimizaciones que puede utilizar para hacer que las "
"enums ocupen menos espacio."
@@ -4782,8 +4691,8 @@ msgstr ""
#: src/user-defined-types/enums.md
msgid ""
"Null pointer optimization: For [some types](https://doc.rust-lang.org/std/"
-"option/#representation), Rust guarantees that `size_of::()` equals "
-"`size_of::>()`."
+"option/#representation), Rust guarantees that `size_of::()` equals `size_of::"
+">()`."
msgstr ""
"Optimización de puntero nulo: para [algunos tipos](https://doc.rust-lang.org/"
"std/option/#representation), Rust asegura que `size_of::()` es igual a "
@@ -4791,14 +4700,14 @@ msgstr ""
#: src/user-defined-types/enums.md
msgid ""
-"Example code if you want to show how the bitwise representation _may_ look "
-"like in practice. It's important to note that the compiler provides no "
-"guarantees regarding this representation, therefore this is totally unsafe."
+"Example code if you want to show how the bitwise representation _may_ look like "
+"in practice. It's important to note that the compiler provides no guarantees "
+"regarding this representation, therefore this is totally unsafe."
msgstr ""
"Fragmento de código de ejemplo si quieres mostrar cómo puede ser la "
-"representación bit a bit en la práctica. Es importante tener en cuenta que "
-"el compilador no ofrece garantías con respecto a esta representación, por lo "
-"tanto es totalmente inseguro."
+"representación bit a bit en la práctica. Es importante tener en cuenta que el "
+"compilador no ofrece garantías con respecto a esta representación, por lo tanto "
+"es totalmente inseguro."
#: src/user-defined-types/static.md
msgid "`static`"
@@ -4809,8 +4718,8 @@ msgid ""
"Static variables will live during the whole execution of the program, and "
"therefore will not move:"
msgstr ""
-"Las variables estáticas vivirán durante toda la ejecución del programa y, "
-"por lo tanto, no se moverán:"
+"Las variables estáticas vivirán durante toda la ejecución del programa y, por "
+"lo tanto, no se moverán:"
#: src/user-defined-types/static.md
msgid "\"Welcome to RustOS 3.14\""
@@ -4822,19 +4731,19 @@ msgstr "\"{BANNER}\""
#: src/user-defined-types/static.md
msgid ""
-"As noted in the [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-"
-"vs-static.html), 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. When a "
-"globally-scoped value does not have a reason to need object identity, "
-"`const` is generally preferred."
+"As noted in the [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-vs-"
+"static.html), 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. When a globally-scoped "
+"value does not have a reason to need object identity, `const` is generally "
+"preferred."
msgstr ""
"Tal y como se indica en el libro [Rust RFC Book](https://rust-lang.github.io/"
-"rfcs/0246-const-vs-static.html), estas no son insertadas y tienen una "
-"ubicación de memoria real asociada. Esto resulta útil para código insertado "
-"y no seguro. Además, la variable continúa durante toda la ejecución del "
-"programa. Cuando un valor de ámbito global no tiene ningún motivo para "
-"necesitar identidad de objeto, se suele preferir `const`."
+"rfcs/0246-const-vs-static.html), estas no son insertadas y tienen una ubicación "
+"de memoria real asociada. Esto resulta útil para código insertado y no seguro. "
+"Además, la variable continúa durante toda la ejecución del programa. Cuando un "
+"valor de ámbito global no tiene ningún motivo para necesitar identidad de "
+"objeto, se suele preferir `const`."
#: src/user-defined-types/static.md
msgid "`static` is similar to mutable global variables in C++."
@@ -4842,27 +4751,25 @@ msgstr "Por su parte, `static` se parece a una variable global mutable en C++."
#: src/user-defined-types/static.md
msgid ""
-"`static` provides object identity: an address in memory and state as "
-"required by types with interior mutability such as `Mutex`."
+"`static` provides object identity: an address in memory and state as required "
+"by types with interior mutability such as `Mutex`."
msgstr ""
-"`static` proporciona la identidad del objeto: una dirección en la memoria y "
-"en el estado que requieren los tipos con mutabilidad interior, como "
-"`Mutex`."
+"`static` proporciona la identidad del objeto: una dirección en la memoria y en "
+"el estado que requieren los tipos con mutabilidad interior, como `Mutex`."
#: src/user-defined-types/static.md
msgid ""
-"Because `static` variables are accessible from any thread, they must be "
-"`Sync`. Interior mutability is possible through a [`Mutex`](https://doc.rust-"
-"lang.org/std/sync/struct.Mutex.html), atomic or similar."
+"Because `static` variables are accessible from any thread, they must be `Sync`. "
+"Interior mutability is possible through a [`Mutex`](https://doc.rust-lang.org/"
+"std/sync/struct.Mutex.html), atomic or similar."
msgstr ""
-"Dado que se puede acceder a las variables `static` desde cualquier hilo, "
-"deben ser `Sync`. Mutabilidad interior es posible a través de un [`Mutex`]"
-"(https://doc.rust-lang.org/std/sync/struct.Mutex.html), atómico o parecido."
+"Dado que se puede acceder a las variables `static` desde cualquier hilo, deben "
+"ser `Sync`. Mutabilidad interior es posible a través de un [`Mutex`](https://"
+"doc.rust-lang.org/std/sync/struct.Mutex.html), atómico o parecido."
#: src/user-defined-types/static.md
msgid "Thread-local data can be created with the macro `std::thread_local`."
-msgstr ""
-"Datos locales al hilo se pueden crear con el macro `std::thread_local`."
+msgstr "Datos locales al hilo se pueden crear con el macro `std::thread_local`."
#: src/user-defined-types/const.md
msgid "`const`"
@@ -4870,50 +4777,50 @@ msgstr "`const`"
#: src/user-defined-types/const.md
msgid ""
-"Constants are evaluated at compile time and their values are inlined "
-"wherever they are used:"
+"Constants are evaluated at compile time and their values are inlined wherever "
+"they are used:"
msgstr ""
-"Las variables constantes se evalúan en tiempo de compilación y sus valores "
-"se insertan donde sean utilizados:"
+"Las variables constantes se evalúan en tiempo de compilación y sus valores se "
+"insertan donde sean utilizados:"
#: src/user-defined-types/const.md
msgid ""
-"According to the [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-"
-"vs-static.html) these are inlined upon use."
+"According to the [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-vs-"
+"static.html) these are inlined upon use."
msgstr ""
-"Según el libro [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-"
-"vs-static.html), se insertan cuando se utilizan."
+"Según el libro [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-vs-"
+"static.html), se insertan cuando se utilizan."
#: src/user-defined-types/const.md
msgid ""
-"Only functions marked `const` can be called at compile time to generate "
-"`const` values. `const` functions can however be called at runtime."
+"Only functions marked `const` can be called at compile time to generate `const` "
+"values. `const` functions can however be called at runtime."
msgstr ""
"Sólo se pueden llamar a las funciones marcadas como `const` en tiempo de "
-"compilación para generar valores `const`. Sin embargo, las funciones `const` "
-"se pueden llamar en _runtime_."
+"compilación para generar valores `const`. Sin embargo, las funciones `const` se "
+"pueden llamar en _runtime_."
#: src/user-defined-types/const.md
msgid "Mention that `const` behaves semantically similar to C++'s `constexpr`"
msgstr ""
-"Menciona que `const` se comporta semánticamente de forma similar a "
-"`constexpr` de C++"
+"Menciona que `const` se comporta semánticamente de forma similar a `constexpr` "
+"de C++"
#: src/user-defined-types/const.md
msgid ""
-"It isn't super common that one would need a runtime evaluated constant, but "
-"it is helpful and safer than using a static."
+"It isn't super common that one would need a runtime evaluated constant, but it "
+"is helpful and safer than using a static."
msgstr ""
-"No es muy habitual que se necesite una constante evaluada en _runtime_, pero "
-"es útil y más seguro que usar una estática."
+"No es muy habitual que se necesite una constante evaluada en _runtime_, pero es "
+"útil y más seguro que usar una estática."
#: src/user-defined-types/aliases.md
msgid ""
"A type alias creates a name for another type. The two types can be used "
"interchangeably."
msgstr ""
-"Un alias de tipo crea un nombre para otro tipo. Ambos tipos se pueden "
-"utilizar indistintamente."
+"Un alias de tipo crea un nombre para otro tipo. Ambos tipos se pueden utilizar "
+"indistintamente."
#: src/user-defined-types/aliases.md
msgid "// Aliases are more useful with long, complex types:\n"
@@ -4926,28 +4833,26 @@ msgstr "Los programadores de C verán un parecido con `typedef`."
#: src/user-defined-types/exercise.md
msgid ""
"We will create a data structure to represent an event in an elevator control "
-"system. It is up to you to define the types and functions to construct "
-"various events. Use `#[derive(Debug)]` to allow the types to be formatted "
-"with `{:?}`."
+"system. It is up to you to define the types and functions to construct various "
+"events. Use `#[derive(Debug)]` to allow the types to be formatted with `{:?}`."
msgstr ""
-"Crearemos una estructura de datos para representar un evento en un sistema "
-"de control de ascensores. Debes definir los tipos y las funciones para crear "
-"varios eventos. Usa `#[derive(Debug)]` para permitir que se aplique el "
-"formato `{:?}` a los tipos."
+"Crearemos una estructura de datos para representar un evento en un sistema de "
+"control de ascensores. Debes definir los tipos y las funciones para crear "
+"varios eventos. Usa `#[derive(Debug)]` para permitir que se aplique el formato "
+"`{:?}` a los tipos."
#: src/user-defined-types/exercise.md
msgid ""
"This exercise only requires creating and populating data structures so that "
-"`main` runs without errors. The next part of the course will cover getting "
-"data out of these structures."
+"`main` runs without errors. The next part of the course will cover getting data "
+"out of these structures."
msgstr ""
"Para hacer este ejercicio solo es necesario crear y rellenar estructuras de "
"datos de forma que `main` se ejecute sin errores. En la siguiente parte del "
"curso veremos cómo extraer datos de estas estructuras."
#: src/user-defined-types/exercise.md src/user-defined-types/solution.md
-msgid ""
-"/// An event in the elevator system that the controller must react to.\n"
+msgid "/// An event in the elevator system that the controller must react to.\n"
msgstr ""
"/// Un evento en el sistema de ascensores al que debe reaccionar el "
"controlador.\n"
@@ -4974,11 +4879,9 @@ msgstr "/// Las puertas del ascensor se han cerrado.\n"
#: src/user-defined-types/exercise.md src/user-defined-types/solution.md
msgid ""
-"/// A directional button was pressed in an elevator lobby on the given "
-"floor.\n"
+"/// A directional button was pressed in an elevator lobby on the given floor.\n"
msgstr ""
-"/// Se ha pulsado el botón direccional de un ascensor en la planta "
-"indicada.\n"
+"/// Se ha pulsado el botón direccional de un ascensor en la planta indicada.\n"
#: src/user-defined-types/exercise.md src/user-defined-types/solution.md
msgid "/// A floor button was pressed in the elevator car.\n"
@@ -4987,8 +4890,7 @@ msgstr "/// Se ha pulsado el botón de una planta en el ascensor.\n"
#: src/user-defined-types/exercise.md src/user-defined-types/solution.md
msgid "\"A ground floor passenger has pressed the up button: {:?}\""
msgstr ""
-"\"Un pasajero de la planta baja ha pulsado el botón para ir hacia arriba: "
-"{:?}\""
+"\"Un pasajero de la planta baja ha pulsado el botón para ir hacia arriba: {:?}\""
#: src/user-defined-types/exercise.md src/user-defined-types/solution.md
msgid "\"The car has arrived on the ground floor: {:?}\""
@@ -5056,8 +4958,7 @@ msgstr ""
#: src/welcome-day-2.md
msgid "Pattern matching: extracting data from structures."
-msgstr ""
-"Coincidencia de Patrones: desestructuración de enums, structs y arrays."
+msgstr "Coincidencia de Patrones: desestructuración de enums, structs y arrays."
#: src/welcome-day-2.md
msgid "Methods: associating functions with types."
@@ -5072,19 +4973,18 @@ msgid "Generics: parameterizing types on other types."
msgstr "Genéricos: parametrizar tipos en otros tipos."
#: src/welcome-day-2.md
-msgid ""
-"Standard library types and traits: a tour of Rust's rich standard library."
+msgid "Standard library types and traits: a tour of Rust's rich standard library."
msgstr ""
-"Tipos y traits de bibliotecas estándar: un recorrido por la amplia "
-"biblioteca estándar de Rust."
+"Tipos y traits de bibliotecas estándar: un recorrido por la amplia biblioteca "
+"estándar de Rust."
#: src/welcome-day-2.md
msgid ""
"Including 10 minute breaks, this session should take about 2 hours and 10 "
"minutes. It contains:"
msgstr ""
-"Contando con los descansos de 10 minutos, la duración prevista de la sesión "
-"es de unas 2 horas y 10 minutos. Contiene:"
+"Contando con los descansos de 10 minutos, la duración prevista de la sesión es "
+"de unas 2 horas y 10 minutos. Contiene:"
#: src/pattern-matching.md src/std-types.md src/memory-management.md
#: src/error-handling.md
@@ -5093,18 +4993,17 @@ msgstr "Esta sección tiene una duración aproximada de 1 hora. Contiene:"
#: src/pattern-matching/match.md
msgid ""
-"The `match` keyword lets you match a value against one or more _patterns_. "
-"The comparisons are done from top to bottom and the first match wins."
+"The `match` keyword lets you match a value against one or more _patterns_. The "
+"comparisons are done from top to bottom and the first match wins."
msgstr ""
"La palabra clave `match` te permite comparar un valor con uno o varios "
-"_patrones_. Las comparaciones se hacen de arriba a abajo y el primer patrón "
-"que coincida gana."
+"_patrones_. Las comparaciones se hacen de arriba a abajo y el primer patrón que "
+"coincida gana."
#: src/pattern-matching/match.md
msgid "The patterns can be simple values, similarly to `switch` in C and C++:"
msgstr ""
-"Los patrones pueden ser valores simples, del mismo modo que `switch` en C y "
-"C++:"
+"Los patrones pueden ser valores simples, del mismo modo que `switch` en C y C++:"
#: src/pattern-matching/match.md
msgid "'x'"
@@ -5118,9 +5017,9 @@ msgstr "'q'"
msgid "\"Quitting\""
msgstr "\"Salir\""
-#: src/pattern-matching/match.md src/generics/exercise.md
-#: src/generics/solution.md src/std-traits/solution.md
-#: src/error-handling/exercise.md src/error-handling/solution.md
+#: src/pattern-matching/match.md src/generics/exercise.md src/generics/solution.md
+#: src/std-traits/solution.md src/error-handling/exercise.md
+#: src/error-handling/solution.md
msgid "'a'"
msgstr "'a'"
@@ -5164,14 +5063,14 @@ msgstr "\"Otro\""
#: src/pattern-matching/match.md
msgid ""
-"The `_` pattern is a wildcard pattern which matches any value. The "
-"expressions _must_ be exhaustive, meaning that it covers every possibility, "
-"so `_` is often used as the final catch-all case."
+"The `_` pattern is a wildcard pattern which matches any value. The expressions "
+"_must_ be exhaustive, meaning that it covers every possibility, so `_` is often "
+"used as the final catch-all case."
msgstr ""
"`_` es un patrón comodín que coincide con cualquier valor. Las expresiones "
-"_deben_ ser exhuastivas, lo que significa que deben tener en cuenta todas "
-"las posibilidades, por lo que `_` a menudo se usa como un caso final que "
-"atrapa todo."
+"_deben_ ser exhuastivas, lo que significa que deben tener en cuenta todas las "
+"posibilidades, por lo que `_` a menudo se usa como un caso final que atrapa "
+"todo."
#: src/pattern-matching/match.md
msgid ""
@@ -5179,23 +5078,23 @@ msgid ""
"the same type. The type is the last expression of the block, if any. In the "
"example above, the type is `()`."
msgstr ""
-"Match puede ser usado como una expresión. Al igual que con `if let`, cada "
-"brazo de coincidencia debe ser del mismo tipo. El tipo es la última "
-"expresión del bloque, si la hay. En el ejemplo anterior, el tipo es `()`."
+"Match puede ser usado como una expresión. Al igual que con `if let`, cada brazo "
+"de coincidencia debe ser del mismo tipo. El tipo es la última expresión del "
+"bloque, si la hay. En el ejemplo anterior, el tipo es `()`."
#: src/pattern-matching/match.md
msgid ""
"A variable in the pattern (`key` in this example) will create a binding that "
"can be used within the match arm."
msgstr ""
-"Una variable del patrón (en este ejemplo, `key`) creará un enlace que se "
-"puede usar dentro del brazo de coincidencia."
+"Una variable del patrón (en este ejemplo, `key`) creará un enlace que se puede "
+"usar dentro del brazo de coincidencia."
#: src/pattern-matching/match.md
msgid "A match guard causes the arm to match only if the condition is true."
msgstr ""
-"Un protección de coincidencia hace que la expresión coincida únicamente si "
-"se cumple la condición."
+"Un protección de coincidencia hace que la expresión coincida únicamente si se "
+"cumple la condición."
#: src/pattern-matching/match.md
msgid ""
@@ -5221,26 +5120,25 @@ msgstr "`_` es un comodín"
#: src/pattern-matching/match.md
msgid ""
-"Match guards as a separate syntax feature are important and necessary when "
-"we wish to concisely express more complex ideas than patterns alone would "
-"allow."
+"Match guards as a separate syntax feature are important and necessary when we "
+"wish to concisely express more complex ideas than patterns alone would allow."
msgstr ""
-"Las guardas de coincidencia, como característica sintáctica independiente, "
-"son importantes y necesarios cuando queremos expresar de forma concisa ideas "
-"más complejas de lo que permitirían los patrones por sí solos."
+"Las guardas de coincidencia, como característica sintáctica independiente, son "
+"importantes y necesarios cuando queremos expresar de forma concisa ideas más "
+"complejas de lo que permitirían los patrones por sí solos."
#: src/pattern-matching/match.md
msgid ""
-"They are not the same as separate `if` expression inside of the match arm. "
-"An `if` expression inside of the branch block (after `=>`) happens after the "
-"match arm is selected. Failing the `if` condition inside of that block won't "
-"result in other arms of the original `match` expression being considered."
+"They are not the same as separate `if` expression inside of the match arm. An "
+"`if` expression inside of the branch block (after `=>`) happens after the match "
+"arm is selected. Failing the `if` condition inside of that block won't result "
+"in other arms of the original `match` expression being considered."
msgstr ""
"No son lo mismo que una expresión `if` independiente dentro del brazo de "
-"coincidencias. Una expresión `if` dentro del bloque de ramas (después de "
-"`=>`) se produce tras seleccionar el brazo de coincidencias. Si no se cumple "
-"la condición `if` dentro de ese bloque, no se tienen en cuenta otros brazos "
-"de la expresión `match` original."
+"coincidencias. Una expresión `if` dentro del bloque de ramas (después de `=>`) "
+"se produce tras seleccionar el brazo de coincidencias. Si no se cumple la "
+"condición `if` dentro de ese bloque, no se tienen en cuenta otros brazos de la "
+"expresión `match` original."
#: src/pattern-matching/match.md
msgid ""
@@ -5275,8 +5173,7 @@ msgstr "\"y = {y}, se han ignorado otros campos\""
#: src/pattern-matching/destructuring-structs.md
msgid "Change the literal values in `foo` to match with the other patterns."
msgstr ""
-"Cambia los valores literales de `foo` para que coincidan con los demás "
-"patrones."
+"Cambia los valores literales de `foo` para que coincidan con los demás patrones."
#: src/pattern-matching/destructuring-structs.md
msgid "Add a new field to `Foo` and make changes to the pattern as needed."
@@ -5289,25 +5186,25 @@ msgid ""
"spot. Try changing the `2` in the second arm to a variable, and see that it "
"subtly doesn't work. Change it to a `const` and see it working again."
msgstr ""
-"La diferencia entre una captura y una expresión constante puede ser difícil "
-"de detectar. Prueba a cambiar el `2` del segundo brazo por una variable y "
-"observa que no funciona. Cámbialo a `const` y verás que vuelve a funcionar."
+"La diferencia entre una captura y una expresión constante puede ser difícil de "
+"detectar. Prueba a cambiar el `2` del segundo brazo por una variable y observa "
+"que no funciona. Cámbialo a `const` y verás que vuelve a funcionar."
#: src/pattern-matching/destructuring-enums.md
msgid "Like tuples, enums can also be destructured by matching:"
msgstr ""
-"Al igual que las tuplas, las enumeraciones también se pueden desestructurar "
-"con la coincidencia:"
+"Al igual que las tuplas, las enumeraciones también se pueden desestructurar con "
+"la coincidencia:"
#: src/pattern-matching/destructuring-enums.md
msgid ""
"Patterns can also be used to bind variables to parts of your values. This is "
-"how you inspect the structure of your types. Let us start with a simple "
-"`enum` type:"
+"how you inspect the structure of your types. Let us start with a simple `enum` "
+"type:"
msgstr ""
"Los patrones también se pueden usar para enlazar variables a partes de los "
-"valores. Así es como se inspecciona la estructura de tus tipos. Empecemos "
-"con un tipo `enum` sencillo:"
+"valores. Así es como se inspecciona la estructura de tus tipos. Empecemos con "
+"un tipo `enum` sencillo:"
#: src/pattern-matching/destructuring-enums.md
msgid "\"cannot divide {n} into two equal parts\""
@@ -5324,20 +5221,20 @@ msgstr "\"se ha producido un error: {msg}\""
#: src/pattern-matching/destructuring-enums.md
msgid ""
"Here we have used the arms to _destructure_ the `Result` value. In the first "
-"arm, `half` is bound to the value inside the `Ok` variant. In the second "
-"arm, `msg` is bound to the error message."
+"arm, `half` is bound to the value inside the `Ok` variant. In the second arm, "
+"`msg` is bound to the error message."
msgstr ""
-"Aquí hemos utilizado los brazos para _desestructurar_ el valor de `Result`. "
-"En el primer brazo, `half` está vinculado al valor que hay dentro de la "
-"variante `Ok`. En el segundo, `msg` está vinculado al mensaje de error."
+"Aquí hemos utilizado los brazos para _desestructurar_ el valor de `Result`. En "
+"el primer brazo, `half` está vinculado al valor que hay dentro de la variante "
+"`Ok`. En el segundo, `msg` está vinculado al mensaje de error."
#: src/pattern-matching/destructuring-enums.md
msgid ""
-"The `if`/`else` expression is returning an enum that is later unpacked with "
-"a `match`."
+"The `if`/`else` expression is returning an enum that is later unpacked with a "
+"`match`."
msgstr ""
-"La expresión `if`/`else` devuelve una enumeración que más tarde se "
-"descomprime con `match`."
+"La expresión `if`/`else` devuelve una enumeración que más tarde se descomprime "
+"con `match`."
#: src/pattern-matching/destructuring-enums.md
msgid ""
@@ -5345,18 +5242,18 @@ msgid ""
"errors when running the code. Point out the places where your code is now "
"inexhaustive and how the compiler tries to give you hints."
msgstr ""
-"Puedes probar a añadir una tercera variante a la definición de la "
-"enumeración y mostrar los errores al ejecutar el código. Señala los lugares "
-"en los que tu código está ahora incompleto y explica cómo el compilador "
-"intenta dar sugerencias."
+"Puedes probar a añadir una tercera variante a la definición de la enumeración y "
+"mostrar los errores al ejecutar el código. Señala los lugares en los que tu "
+"código está ahora incompleto y explica cómo el compilador intenta dar "
+"sugerencias."
#: src/pattern-matching/destructuring-enums.md
msgid ""
"The values in the enum variants can only be accessed after being pattern "
"matched."
msgstr ""
-"Solo se puede acceder a los valores de las variantes de enumeración una vez "
-"que coincidan con el patrón."
+"Solo se puede acceder a los valores de las variantes de enumeración una vez que "
+"coincidan con el patrón."
#: src/pattern-matching/destructuring-enums.md
msgid ""
@@ -5369,26 +5266,26 @@ msgstr ""
#: src/pattern-matching/destructuring-enums.md
msgid ""
-"Save the result of `divide_in_two` in the `result` variable and `match` it "
-"in a loop. That won't compile because `msg` is consumed when matched. To fix "
-"it, match `&result` instead of `result`. That will make `msg` a reference so "
-"it won't be consumed. This [\"match ergonomics\"](https://rust-lang.github."
-"io/rfcs/2005-match-ergonomics.html) appeared in Rust 2018. If you want to "
-"support older Rust, replace `msg` with `ref msg` in the pattern."
+"Save the result of `divide_in_two` in the `result` variable and `match` it in a "
+"loop. That won't compile because `msg` is consumed when matched. To fix it, "
+"match `&result` instead of `result`. That will make `msg` a reference so it "
+"won't be consumed. This [\"match ergonomics\"](https://rust-lang.github.io/"
+"rfcs/2005-match-ergonomics.html) appeared in Rust 2018. If you want to support "
+"older Rust, replace `msg` with `ref msg` in the pattern."
msgstr ""
"Guarda el resultado de `divide_in_two` en la variable `result` y hazlo "
"coincidir mediante `match` en un bucle. No se compilará porque se utilizará "
-"`msg` cuando coincida. Para solucionarlo, haz coincidir `&result` en lugar "
-"de `result`. De esta forma, `msg` se convertirá en una referencia y no se "
+"`msg` cuando coincida. Para solucionarlo, haz coincidir `&result` en lugar de "
+"`result`. De esta forma, `msg` se convertirá en una referencia y no se "
"utilizará. Esta [\"ergonomía de coincidencia\"](https://rust-lang.github.io/"
"rfcs/2005-match-ergonomics.html) apareció en Rust 2018. Si quieres que sea "
-"compatible con las versiones anteriores de Rust, sustituye `msg` por `ref "
-"msg` en el patrón."
+"compatible con las versiones anteriores de Rust, sustituye `msg` por `ref msg` "
+"en el patrón."
#: src/pattern-matching/let-control-flow.md
msgid ""
-"Rust has a few control flow constructs which differ from other languages. "
-"They are used for pattern matching:"
+"Rust has a few control flow constructs which differ from other languages. They "
+"are used for pattern matching:"
msgstr ""
"Rust tiene algunas construcciones de control de flujo que difieren de otros "
"lenguajes. Se utilizan para el patrón de coincidencia:"
@@ -5412,8 +5309,8 @@ msgid ""
"whether a value matches a pattern:"
msgstr ""
"La [expresión `if let`][(https://doc.rust-lang.org/reference/expressions/if-"
-"expr.html#if-let-expressions) te permite ejecutar código diferente en "
-"función de si un valor coincide con un patrón:"
+"expr.html#if-let-expressions) te permite ejecutar código diferente en función "
+"de si un valor coincide con un patrón:"
#: src/pattern-matching/let-control-flow.md
msgid "\"slept for {:?}\""
@@ -5421,10 +5318,10 @@ msgstr "\"Horas de sueño: {:?}\""
#: src/pattern-matching/let-control-flow.md
msgid ""
-"For the common case of matching a pattern and returning from the function, "
-"use [`let else`](https://doc.rust-lang.org/rust-by-example/flow_control/"
-"let_else.html). The \"else\" case must diverge (`return`, `break`, or panic "
-"- anything but falling off the end of the block)."
+"For the common case of matching a pattern and returning from the function, use "
+"[`let else`](https://doc.rust-lang.org/rust-by-example/flow_control/let_else."
+"html). The \"else\" case must diverge (`return`, `break`, or panic - anything "
+"but falling off the end of the block)."
msgstr ""
"En el caso habitual de coincidencia con un patrón y retorno de la función, "
"utiliza [`let else`](https://doc.rust-lang.org/rust-by-example/flow_control/"
@@ -5448,8 +5345,8 @@ msgid "\"result: {:?}\""
msgstr "\"resultado: {:?}\""
#: src/pattern-matching/let-control-flow.md src/generics/trait-bounds.md
-#: src/smart-pointers/solution.md src/testing/solution.md
-#: src/android/testing.md src/android/testing/googletest.md
+#: src/smart-pointers/solution.md src/testing/solution.md src/android/testing.md
+#: src/android/testing/googletest.md
msgid "\"foo\""
msgstr "\"foo\""
@@ -5459,21 +5356,20 @@ msgid ""
"reference/expressions/loop-expr.html#predicate-pattern-loops) variant which "
"repeatedly tests a value against a pattern:"
msgstr ""
-"Al igual que con `if let`, hay una variante [`while let`](https://doc.rust-"
-"lang.org/reference/expressions/loop-expr.html#predicate-pattern-loops) que "
-"prueba repetidamente un valor con respecto a un patrón:"
+"Al igual que con `if let`, hay una variante [`while let`](https://doc.rust-lang."
+"org/reference/expressions/loop-expr.html#predicate-pattern-loops) que prueba "
+"repetidamente un valor con respecto a un patrón:"
#: src/pattern-matching/let-control-flow.md
msgid ""
-"Here [`String::pop`](https://doc.rust-lang.org/stable/std/string/struct."
-"String.html#method.pop) returns `Some(c)` until the string is empty, after "
-"which it will return `None`. The `while let` lets us keep iterating through "
-"all items."
+"Here [`String::pop`](https://doc.rust-lang.org/stable/std/string/struct.String."
+"html#method.pop) returns `Some(c)` until the string is empty, after which it "
+"will return `None`. The `while let` lets us keep iterating through all items."
msgstr ""
-"Aquí, [`String::pop`](https://doc.rust-lang.org/stable/std/string/struct."
-"String.html#method.pop) devolverá `Some(c)` hasta que la cadena este vacía, "
-"cuando empezara a devolver `None`. `while let` nos permite seguir iterando a "
-"través de todos los elementos."
+"Aquí, [`String::pop`](https://doc.rust-lang.org/stable/std/string/struct.String."
+"html#method.pop) devolverá `Some(c)` hasta que la cadena este vacía, cuando "
+"empezara a devolver `None`. `while let` nos permite seguir iterando a través de "
+"todos los elementos."
#: src/pattern-matching/let-control-flow.md
msgid "if-let"
@@ -5481,17 +5377,16 @@ msgstr "if-let"
#: src/pattern-matching/let-control-flow.md
msgid ""
-"Unlike `match`, `if let` does not have to cover all branches. This can make "
-"it more concise than `match`."
+"Unlike `match`, `if let` does not have to cover all branches. This can make it "
+"more concise than `match`."
msgstr ""
-"A diferencia de `match`, `if let` no tiene que cubrir todas las ramas, "
-"pudiendo así conseguir que sea más conciso que `match`."
+"A diferencia de `match`, `if let` no tiene que cubrir todas las ramas, pudiendo "
+"así conseguir que sea más conciso que `match`."
#: src/pattern-matching/let-control-flow.md
msgid "A common usage is handling `Some` values when working with `Option`."
msgstr ""
-"Un uso habitual consiste en gestionar valores `Some` al trabajar con "
-"`Option`."
+"Un uso habitual consiste en gestionar valores `Some` al trabajar con `Option`."
#: src/pattern-matching/let-control-flow.md
msgid ""
@@ -5506,9 +5401,9 @@ msgstr "let-else"
#: src/pattern-matching/let-control-flow.md
msgid ""
-"`if-let`s can pile up, as shown. The `let-else` construct supports "
-"flattening this nested code. Rewrite the awkward version for students, so "
-"they can see the transformation."
+"`if-let`s can pile up, as shown. The `let-else` construct supports flattening "
+"this nested code. Rewrite the awkward version for students, so they can see the "
+"transformation."
msgstr ""
"Las instrucciones `if-let` se pueden apilar, tal y como se muestra. La "
"construcción `let-else` permite aplanar este código anidado. Reescribe esta "
@@ -5532,9 +5427,9 @@ msgstr ""
#: src/pattern-matching/let-control-flow.md
msgid ""
-"You could rewrite the `while let` loop as an infinite loop with an if "
-"statement that breaks when there is no value to unwrap for `name.pop()`. The "
-"`while let` provides syntactic sugar for the above scenario."
+"You could rewrite the `while let` loop as an infinite loop with an if statement "
+"that breaks when there is no value to unwrap for `name.pop()`. The `while let` "
+"provides syntactic sugar for the above scenario."
msgstr ""
"Puedes reescribir el bucle `while let` como un ciclo infinito con una "
"instrucción if que rompe el bucle si `name.pop()` no devuelve un valor para "
@@ -5548,43 +5443,40 @@ msgstr ""
#: src/pattern-matching/exercise.md
msgid ""
-"The `Box` type here is a smart pointer, and will be covered in detail later "
-"in the course. An expression can be \"boxed\" with `Box::new` as seen in the "
+"The `Box` type here is a smart pointer, and will be covered in detail later in "
+"the course. An expression can be \"boxed\" with `Box::new` as seen in the "
"tests. To evaluate a boxed expression, use the deref operator (`*`) to "
"\"unbox\" it: `eval(*boxed_expr)`."
msgstr ""
-"El tipo `Box` es un puntero inteligente y lo veremos con detalle más "
-"adelante en el curso. Una expresión puede \"estar delimitada\" con `Box::"
-"new`, tal como se observa en las pruebas. Para evaluar una expresión "
-"delimitada, usa el operador de desreferencia (`*`) para \"eliminar la "
-"delimitación\": `eval(*boxed_expr)`."
+"El tipo `Box` es un puntero inteligente y lo veremos con detalle más adelante "
+"en el curso. Una expresión puede \"estar delimitada\" con `Box::new`, tal como "
+"se observa en las pruebas. Para evaluar una expresión delimitada, usa el "
+"operador de desreferencia (`*`) para \"eliminar la delimitación\": "
+"`eval(*boxed_expr)`."
#: src/pattern-matching/exercise.md
msgid ""
"Some expressions cannot be evaluated and will return an error. The standard "
"[`Result`](https://doc.rust-lang.org/std/result/enum.Result."
-"html) type is an enum that represents either a successful value "
-"(`Ok(Value)`) or an error (`Err(String)`). We will cover this type in detail "
-"later."
+"html) type is an enum that represents either a successful value (`Ok(Value)`) "
+"or an error (`Err(String)`). We will cover this type in detail later."
msgstr ""
-"Algunas expresiones no se pueden evaluar y devuelven un error. El tipo "
-"estándar [`Result`](https://doc.rust-lang.org/std/result/enum."
-"Result.html) es una enumeración que representa un valor correcto "
-"(`Ok(Value)`) o un error (`Err(String)`). Más adelante hablaremos de este "
-"tipo en profundidad."
+"Algunas expresiones no se pueden evaluar y devuelven un error. El tipo estándar "
+"[`Result`](https://doc.rust-lang.org/std/result/enum.Result."
+"html) es una enumeración que representa un valor correcto (`Ok(Value)`) o un "
+"error (`Err(String)`). Más adelante hablaremos de este tipo en profundidad."
#: src/pattern-matching/exercise.md
msgid ""
"Copy and paste the code into the Rust playground, and begin implementing "
-"`eval`. The final product should pass the tests. It may be helpful to use "
-"`todo!()` and get the tests to pass one-by-one. You can also skip a test "
-"temporarily with `#[ignore]`:"
+"`eval`. The final product should pass the tests. It may be helpful to use `todo!"
+"()` and get the tests to pass one-by-one. You can also skip a test temporarily "
+"with `#[ignore]`:"
msgstr ""
"Copia y pega el código en el playground de Rust y comienza a implementar "
-"`eval`. El producto final debe superar las pruebas. Recomendamos utilizar "
-"`todo!()` y hacer las pruebas para superar todas las pruebas de forma "
-"individual. También puedes saltarte una prueba de forma temporal con "
-"`#[ignore]`:"
+"`eval`. El producto final debe superar las pruebas. Recomendamos utilizar `todo!"
+"()` y hacer las pruebas para superar todas las pruebas de forma individual. "
+"También puedes saltarte una prueba de forma temporal con `#[ignore]`:"
#: src/pattern-matching/exercise.md
msgid ""
@@ -5621,11 +5513,11 @@ msgstr "\"expr: {:?}\""
#: src/methods-and-traits/methods.md
msgid ""
-"Rust allows you to associate functions with your new types. You do this with "
-"an `impl` block:"
+"Rust allows you to associate functions with your new types. You do this with an "
+"`impl` block:"
msgstr ""
-"Rust te permite asociar funciones a los nuevos tipos. Para ello, usa un "
-"bloque `impl`:"
+"Rust te permite asociar funciones a los nuevos tipos. Para ello, usa un bloque "
+"`impl`:"
#: src/methods-and-traits/methods.md
msgid "// No receiver, a static method\n"
@@ -5665,11 +5557,11 @@ msgstr "// race.add_lap(42);\n"
#: src/methods-and-traits/methods.md
msgid ""
-"The `self` arguments specify the \"receiver\" - the object the method acts "
-"on. There are several common receivers for a method:"
+"The `self` arguments specify the \"receiver\" - the object the method acts on. "
+"There are several common receivers for a method:"
msgstr ""
-"El argumento `self` denomina el \"receiver\" (receptor) - el objeto sobre "
-"cual el método actuará. Hay varios receivers comunes para un método:"
+"El argumento `self` denomina el \"receiver\" (receptor) - el objeto sobre cual "
+"el método actuará. Hay varios receivers comunes para un método:"
#: src/methods-and-traits/methods.md
msgid ""
@@ -5684,8 +5576,8 @@ msgid ""
"`&mut self`: borrows the object from the caller using a unique and mutable "
"reference. The object can be used again afterwards."
msgstr ""
-"`&mut self`: toma prestado el objeto del llamador mediante una referencia "
-"única y mutable. El objeto se puede volver a utilizar después."
+"`&mut self`: toma prestado el objeto del llamador mediante una referencia única "
+"y mutable. El objeto se puede volver a utilizar después."
#: src/methods-and-traits/methods.md
msgid ""
@@ -5694,25 +5586,23 @@ msgid ""
"(deallocated) when the method returns, unless its ownership is explicitly "
"transmitted. Complete ownership does not automatically mean mutability."
msgstr ""
-"`self`: asume el _ownership_ del objeto y lo aleja del llamador. El método "
-"se convierte en el propietario del objeto. El objeto se eliminará (es decir, "
-"se anulará la asignación) cuando el método devuelva un resultado, a menos "
-"que se transmita su _ownership_ de forma explícita. El _ownership_ completa "
-"no implica automáticamente una mutabilidad."
+"`self`: asume el _ownership_ del objeto y lo aleja del llamador. El método se "
+"convierte en el propietario del objeto. El objeto se eliminará (es decir, se "
+"anulará la asignación) cuando el método devuelva un resultado, a menos que se "
+"transmita su _ownership_ de forma explícita. El _ownership_ completa no implica "
+"automáticamente una mutabilidad."
#: src/methods-and-traits/methods.md
msgid "`mut self`: same as above, but the method can mutate the object."
-msgstr ""
-"`mut self`: igual que lo anterior, pero el método puede mutar el objeto."
+msgstr "`mut self`: igual que lo anterior, pero el método puede mutar el objeto."
#: src/methods-and-traits/methods.md
msgid ""
"No receiver: this becomes a static method on the struct. Typically used to "
"create constructors which are called `new` by convention."
msgstr ""
-"Sin receptor: se convierte en un método estático de la estructura. "
-"Normalmente se utiliza para crear constructores que se suelen denominar "
-"`new`."
+"Sin receptor: se convierte en un método estático de la estructura. Normalmente "
+"se utiliza para crear constructores que se suelen denominar `new`."
#: src/methods-and-traits/methods.md
msgid "It can be helpful to introduce methods by comparing them to functions."
@@ -5729,8 +5619,8 @@ msgstr ""
#: src/methods-and-traits/methods.md
msgid ""
"Developers may choose to use methods to take advantage of method receiver "
-"syntax and to help keep them more organized. By using methods we can keep "
-"all the implementation code in one predictable place."
+"syntax and to help keep them more organized. By using methods we can keep all "
+"the implementation code in one predictable place."
msgstr ""
"Los desarrolladores pueden optar por utilizar métodos para aprovechar la "
"sintaxis de los receptores de métodos y para ayudar a mantenerlos más "
@@ -5743,16 +5633,16 @@ msgstr "Señala el uso de la palabra clave `self`, el receptor de un método."
#: src/methods-and-traits/methods.md
msgid ""
-"Show that it is an abbreviated term for `self: Self` and perhaps show how "
-"the struct name could also be used."
+"Show that it is an abbreviated term for `self: Self` and perhaps show how the "
+"struct name could also be used."
msgstr ""
-"Indica que se trata de un término abreviado de `self: Self` y tal vez "
-"muestra cómo se podría utilizar también el nombre de la estructura."
+"Indica que se trata de un término abreviado de `self: Self` y tal vez muestra "
+"cómo se podría utilizar también el nombre de la estructura."
#: src/methods-and-traits/methods.md
msgid ""
-"Explain that `Self` is a type alias for the type the `impl` block is in and "
-"can be used elsewhere in the block."
+"Explain that `Self` is a type alias for the type the `impl` block is in and can "
+"be used elsewhere in the block."
msgstr ""
"Explica que `Self` es un tipo de alias para el tipo en el que está el bloque "
"`impl` y que se puede usar en cualquier parte del bloque."
@@ -5762,26 +5652,26 @@ msgid ""
"Note how `self` is used like other structs and dot notation can be used to "
"refer to individual fields."
msgstr ""
-"Ten en cuenta que se puede usar `self` como otras estructuras y que la "
-"notación de puntos puede utilizarse para referirse a campos concretos."
+"Ten en cuenta que se puede usar `self` como otras estructuras y que la notación "
+"de puntos puede utilizarse para referirse a campos concretos."
#: src/methods-and-traits/methods.md
msgid ""
-"This might be a good time to demonstrate how the `&self` differs from `self` "
-"by trying to run `finish` twice."
+"This might be a good time to demonstrate how the `&self` differs from `self` by "
+"trying to run `finish` twice."
msgstr ""
"Puede ser un buen momento para mostrar la diferencia entre `&self` y `self` "
"modificando el código e intentando ejecutar `finish` dos veces."
#: src/methods-and-traits/methods.md
msgid ""
-"Beyond variants on `self`, there are also [special wrapper types](https://"
-"doc.rust-lang.org/reference/special-types-and-traits.html) allowed to be "
-"receiver types, such as `Box`."
+"Beyond variants on `self`, there are also [special wrapper types](https://doc."
+"rust-lang.org/reference/special-types-and-traits.html) allowed to be receiver "
+"types, such as `Box`."
msgstr ""
"Además de las variantes `self`, también hay [tipos de envoltorios especiales]"
-"(https://doc.rust-lang.org/reference/special-types-and-traits.html) que "
-"pueden ser tipos de receptor, como `Box`."
+"(https://doc.rust-lang.org/reference/special-types-and-traits.html) que pueden "
+"ser tipos de receptor, como `Box`."
#: src/methods-and-traits/traits.md
msgid ""
@@ -5800,19 +5690,19 @@ msgstr "/// Imprime un saludo a la mascota en una salida estándar.\n"
#: src/methods-and-traits/traits.md
msgid ""
-"A trait defines a number of methods that types must have in order to "
-"implement the trait."
+"A trait defines a number of methods that types must have in order to implement "
+"the trait."
msgstr ""
-"Un trait define una serie de métodos que los tipos deben tener para "
-"implementar el trait."
+"Un trait define una serie de métodos que los tipos deben tener para implementar "
+"el trait."
#: src/methods-and-traits/traits.md
msgid ""
-"In the \"Generics\" segment, next, we will see how to build functionality "
-"that is generic over all types implementing a trait."
+"In the \"Generics\" segment, next, we will see how to build functionality that "
+"is generic over all types implementing a trait."
msgstr ""
-"En la sección de \"Genéricos\" a seguir, veremos como construir "
-"funcionalidad que es genérico sobre todos los tipos implementando un trait."
+"En la sección de \"Genéricos\" a seguir, veremos como construir funcionalidad "
+"que es genérico sobre todos los tipos implementando un trait."
#: src/methods-and-traits/traits/implementing.md
msgid "\"Oh you're a cutie! What's your name? {}\""
@@ -5830,17 +5720,16 @@ msgstr "\"Fido\""
#: src/methods-and-traits/traits/implementing.md
msgid ""
-"To implement `Trait` for `Type`, you use an `impl Trait for Type { .. }` "
-"block."
+"To implement `Trait` for `Type`, you use an `impl Trait for Type { .. }` block."
msgstr ""
-"Para implementar `Trait` para un tipo `Type`, utiliza un bloque `impl Trait "
-"for Type { .. }`."
+"Para implementar `Trait` para un tipo `Type`, utiliza un bloque `impl Trait for "
+"Type { .. }`."
#: src/methods-and-traits/traits/implementing.md
msgid ""
-"Unlike Go interfaces, just having matching methods is not enough: a `Cat` "
-"type with a `talk()` method would not automatically satisfy `Pet` unless it "
-"is in an `impl Pet` block."
+"Unlike Go interfaces, just having matching methods is not enough: a `Cat` type "
+"with a `talk()` method would not automatically satisfy `Pet` unless it is in an "
+"`impl Pet` block."
msgstr ""
"A diferencia de los interfases de Go, tener los métodos adecuados no es "
"suficiente: un tipo `Cat` con un método `talk()` no satisface `Pet` "
@@ -5849,23 +5738,22 @@ msgstr ""
#: src/methods-and-traits/traits/implementing.md
msgid ""
"Traits may provide default implementations of some methods. Default "
-"implementations can rely on all the methods of the trait. In this case, "
-"`greet` is provided, and relies on `talk`."
+"implementations can rely on all the methods of the trait. In this case, `greet` "
+"is provided, and relies on `talk`."
msgstr ""
"Los _traits_ pueden especificar implementaciones predeterminadas de algunos "
-"métodos. Implementaciones predeterminadas pueden usar todos los métodos de "
-"un trait (incluso los métodos que los usuarios deben implementar ellos "
-"mismos). En este caso, `greet` es predeterminado y utiliza `talk`."
+"métodos. Implementaciones predeterminadas pueden usar todos los métodos de un "
+"trait (incluso los métodos que los usuarios deben implementar ellos mismos). En "
+"este caso, `greet` es predeterminado y utiliza `talk`."
#: src/methods-and-traits/traits/supertraits.md
msgid ""
"A trait can require that types implementing it also implement other traits, "
-"called _supertraits_. Here, any type implementing `Pet` must implement "
-"`Animal`."
+"called _supertraits_. Here, any type implementing `Pet` must implement `Animal`."
msgstr ""
"Un trait puede requerir que los tipos que lo implementan también implementen "
-"otros traits, llamados _supertraits_. Aquí, cualquier tipo implementando "
-"`Pet` también debe implementar `Animal`."
+"otros traits, llamados _supertraits_. Aquí, cualquier tipo implementando `Pet` "
+"también debe implementar `Animal`."
#: src/methods-and-traits/traits/supertraits.md
#: src/concurrency/async-control-flow/select.md
@@ -5878,14 +5766,13 @@ msgstr "\"{} tiene {} piernas\""
#: src/methods-and-traits/traits/supertraits.md
msgid ""
-"This is sometimes called \"trait inheritance\" but students should not "
-"expect this to behave like OO inheritance. It just specifies an additional "
-"requirement on implementations of a trait."
+"This is sometimes called \"trait inheritance\" but students should not expect "
+"this to behave like OO inheritance. It just specifies an additional requirement "
+"on implementations of a trait."
msgstr ""
-"Algunas veces esto es llamado \"herencia de traits\", pero los estudiantes "
-"no deben esperar que esto se comporte como la herencia OO (object-oriented). "
-"Solo especifica un requerimiento adicional sobre las implementaciones de un "
-"trait."
+"Algunas veces esto es llamado \"herencia de traits\", pero los estudiantes no "
+"deben esperar que esto se comporte como la herencia OO (object-oriented). Solo "
+"especifica un requerimiento adicional sobre las implementaciones de un trait."
#: src/methods-and-traits/traits/associated-types.md
msgid ""
@@ -5905,8 +5792,8 @@ msgid ""
"Associated types are sometimes also called \"output types\". The key "
"observation is that the implementer, not the caller, chooses this type."
msgstr ""
-"Tipos asociados también son llamados \"tipos de salida\". La observación "
-"clave es que el implementador, no el ejecutor, escoge este tipo."
+"Tipos asociados también son llamados \"tipos de salida\". La observación clave "
+"es que el implementador, no el ejecutor, escoge este tipo."
#: src/methods-and-traits/traits/associated-types.md
msgid ""
@@ -5921,8 +5808,8 @@ msgid ""
"Supported traits can be automatically implemented for your custom types, as "
"follows:"
msgstr ""
-"Los traits compatibles se pueden implementar de forma automática en los "
-"tipos personalizados de la siguiente manera:"
+"Los traits compatibles se pueden implementar de forma automática en los tipos "
+"personalizados de la siguiente manera:"
#: src/methods-and-traits/deriving.md
msgid "// Default trait adds `default` constructor.\n"
@@ -5938,8 +5825,7 @@ msgstr "\"EldurScrollz\""
#: src/methods-and-traits/deriving.md
msgid "// Debug trait adds support for printing with `{:?}`.\n"
-msgstr ""
-"// El trait Debug permite que sea compatible con imprimir con `{:?}`.\n"
+msgstr "// El trait Debug permite que sea compatible con imprimir con `{:?}`.\n"
#: src/methods-and-traits/deriving.md
msgid "\"{:?} vs. {:?}\""
@@ -5952,9 +5838,8 @@ msgid ""
"serialization support for a struct using `#[derive(Serialize)]`."
msgstr ""
"La derivación se implementa con macros y muchos crates ofrecen macros de "
-"derivación útiles para añadir funciones. Por ejemplo, `serde` puede derivar "
-"la compatibilidad con la serialización para una struct con "
-"`#[derive(Serialize)]`."
+"derivación útiles para añadir funciones. Por ejemplo, `serde` puede derivar la "
+"compatibilidad con la serialización para una struct con `#[derive(Serialize)]`."
#: src/methods-and-traits/exercise.md
msgid "Exercise: Logger Trait"
@@ -5963,15 +5848,15 @@ msgstr "Ejercicio: trait de registro"
#: src/methods-and-traits/exercise.md
msgid ""
"Let's design a simple logging utility, using a trait `Logger` with a `log` "
-"method. Code which might log its progress can then take an `&impl Logger`. "
-"In testing, this might put messages in the test logfile, while in a "
-"production build it would send messages to a log server."
+"method. Code which might log its progress can then take an `&impl Logger`. In "
+"testing, this might put messages in the test logfile, while in a production "
+"build it would send messages to a log server."
msgstr ""
"Vamos a diseñar una sencilla utilidad de registro mediante un trait `Logger` "
"con un método `log`. El código que podría registrar su progreso puede usar "
-"`&impl Logger`. En las pruebas, esta acción colocaría mensajes en el archivo "
-"de registro de la prueba, mientras que en una compilación de producción "
-"enviaría los mensajes a un servidor de registro."
+"`&impl Logger`. En las pruebas, esta acción colocaría mensajes en el archivo de "
+"registro de la prueba, mientras que en una compilación de producción enviaría "
+"los mensajes a un servidor de registro."
#: src/methods-and-traits/exercise.md
msgid ""
@@ -5980,20 +5865,19 @@ msgid ""
"messages above a maximum verbosity."
msgstr ""
"Sin embargo, el elemento `StderrLogger` que aparece a continuación registra "
-"todos los mensajes, independientemente de su verbosidad. Tu tarea es "
-"escribir un tipo `VerbosityFilter` que ignore los mensajes que superen el "
-"máximo de verbosidad."
+"todos los mensajes, independientemente de su verbosidad. Tu tarea es escribir "
+"un tipo `VerbosityFilter` que ignore los mensajes que superen el máximo de "
+"verbosidad."
#: src/methods-and-traits/exercise.md
msgid ""
"This is a common pattern: a struct wrapping a trait implementation and "
-"implementing that same trait, adding behavior in the process. What other "
-"kinds of wrappers might be useful in a logging utility?"
+"implementing that same trait, adding behavior in the process. What other kinds "
+"of wrappers might be useful in a logging utility?"
msgstr ""
-"Este es un patrón común: una struct que envuelve una implementación de "
-"traits e implementa ese mismo trait, añadiendo comportamiento en el proceso. "
-"¿Qué otros tipos de envoltorios pueden ser útiles en una utilidad de "
-"registro?"
+"Este es un patrón común: una struct que envuelve una implementación de traits e "
+"implementa ese mismo trait, añadiendo comportamiento en el proceso. ¿Qué otros "
+"tipos de envoltorios pueden ser útiles en una utilidad de registro?"
#: src/methods-and-traits/exercise.md src/methods-and-traits/solution.md
msgid "/// Log a message at the given verbosity level.\n"
@@ -6018,16 +5902,15 @@ msgstr "// TAREA: Define e implementa `VerbosityFilter`.\n"
#: src/methods-and-traits/solution.md
msgid "/// Only log messages up to the given verbosity level.\n"
msgstr ""
-"/// Registra solo los mensajes que cumplan el nivel de verbosidad "
-"determinado.\n"
+"/// Registra solo los mensajes que cumplan el nivel de verbosidad determinado.\n"
#: src/welcome-day-2-afternoon.md
msgid ""
"Including 10 minute breaks, this session should take about 3 hours and 15 "
"minutes. It contains:"
msgstr ""
-"Incluyendo descansos de 10 minutos, esta sesión debería durar unas 3 horas y "
-"15 minutos. Contiene:"
+"Incluyendo descansos de 10 minutos, esta sesión debería durar unas 3 horas y 15 "
+"minutos. Contiene:"
#: src/generics.md src/iterators.md src/testing.md
msgid "This segment should take about 45 minutes. It contains:"
@@ -6047,12 +5930,12 @@ msgstr "Ejercicio: `min` genérico"
#: src/generics/generic-functions.md
msgid ""
-"Rust supports generics, which lets you abstract algorithms or data "
-"structures (such as sorting or a binary tree) over the types used or stored."
+"Rust supports generics, which lets you abstract algorithms or data structures "
+"(such as sorting or a binary tree) over the types used or stored."
msgstr ""
-"Rust admite el uso de genéricos, lo que permite abstraer los algoritmos o "
-"las estructuras de datos (como el ordenamiento o un árbol binario) sobre los "
-"tipos utilizados o almacenados."
+"Rust admite el uso de genéricos, lo que permite abstraer los algoritmos o las "
+"estructuras de datos (como el ordenamiento o un árbol binario) sobre los tipos "
+"utilizados o almacenados."
#: src/generics/generic-functions.md
msgid "/// Pick `even` or `odd` depending on the value of `n`.\n"
@@ -6076,8 +5959,7 @@ msgstr "\"gato\""
#: src/generics/generic-functions.md
msgid ""
-"Rust infers a type for T based on the types of the arguments and return "
-"value."
+"Rust infers a type for T based on the types of the arguments and return value."
msgstr ""
"Rust infiere un tipo para T en función de los tipos de los argumentos y del "
"valor devuelto."
@@ -6085,28 +5967,28 @@ msgstr ""
#: src/generics/generic-functions.md
msgid ""
"This is similar to C++ templates, but Rust partially compiles the generic "
-"function immediately, so that function must be valid for all types matching "
-"the constraints. For example, try modifying `pick` to return `even + odd` if "
-"`n == 0`. Even if only the `pick` instantiation with integers is used, Rust "
-"still considers it invalid. C++ would let you do this."
+"function immediately, so that function must be valid for all types matching the "
+"constraints. For example, try modifying `pick` to return `even + odd` if `n == "
+"0`. Even if only the `pick` instantiation with integers is used, Rust still "
+"considers it invalid. C++ would let you do this."
msgstr ""
"Es similar a las plantillas de C++, pero Rust compila de forma parcial la "
-"función genérica de forma inmediata, por lo que debe ser válida para todos "
-"los tipos que coincidan con las restricciones. Por ejemplo, prueba a "
-"modificar `pick` para que devuelva `even + odd` si `n == 0`. Aunque solo se "
-"use la instanciación `pick` con números enteros, Rust seguirá considerando "
-"que no es válida. En cambio, C++ lo permitiría."
+"función genérica de forma inmediata, por lo que debe ser válida para todos los "
+"tipos que coincidan con las restricciones. Por ejemplo, prueba a modificar "
+"`pick` para que devuelva `even + odd` si `n == 0`. Aunque solo se use la "
+"instanciación `pick` con números enteros, Rust seguirá considerando que no es "
+"válida. En cambio, C++ lo permitiría."
#: src/generics/generic-functions.md
msgid ""
-"Generic code is turned into non-generic code based on the call sites. This "
-"is a zero-cost abstraction: you get exactly the same result as if you had "
-"hand-coded the data structures without the abstraction."
+"Generic code is turned into non-generic code based on the call sites. This is a "
+"zero-cost abstraction: you get exactly the same result as if you had hand-coded "
+"the data structures without the abstraction."
msgstr ""
"Código genérico es convertido en código no genérico basada en los sitios de "
"ejecución .Se trata de una abstracción sin coste: se obtiene exactamente el "
-"mismo resultado que si se hubiesen programado de forma manual las "
-"estructuras de datos sin la abstracción."
+"mismo resultado que si se hubiesen programado de forma manual las estructuras "
+"de datos sin la abstracción."
#: src/generics/generic-data.md
msgid "You can use generics to abstract over the concrete field type:"
@@ -6122,16 +6004,15 @@ msgstr "\"coordenadas: {:?}\""
#: src/generics/generic-data.md
msgid ""
-"_Q:_ Why `T` is specified twice in `impl Point {}`? Isn't that "
-"redundant?"
+"_Q:_ Why `T` is specified twice in `impl Point {}`? Isn't that redundant?"
msgstr ""
"_P:_ ¿Por qué `T` se especifica dos veces en `impl Point {}`? ¿No es "
"redundante?"
#: src/generics/generic-data.md
msgid ""
-"This is because it is a generic implementation section for generic type. "
-"They are independently generic."
+"This is because it is a generic implementation section for generic type. They "
+"are independently generic."
msgstr ""
"Esto se debe a que es una sección de implementación genérica para un tipo "
"genérico. Son genéricos de forma independiente."
@@ -6149,14 +6030,14 @@ msgid ""
"`Point` is still generic and you can use `Point`, but methods in this "
"block will only be available for `Point`."
msgstr ""
-"`Point` sigue siendo genérico y puedes usar `Point`, pero los métodos "
-"de este bloque solo estarán disponibles para `Point`."
+"`Point` sigue siendo genérico y puedes usar `Point`, pero los métodos de "
+"este bloque solo estarán disponibles para `Point`."
#: src/generics/generic-data.md
msgid ""
"Try declaring a new variable `let p = Point { x: 5, y: 10.0 };`. Update the "
-"code to allow points that have elements of different types, by using two "
-"type variables, e.g., `T` and `U`."
+"code to allow points that have elements of different types, by using two type "
+"variables, e.g., `T` and `U`."
msgstr ""
"Prueba a declarar una nueva variable `let p = Punto { x: 5, y: 10.0 };`. "
"Actualiza el código para permitir que haya puntos que tengan elementos de "
@@ -6164,8 +6045,8 @@ msgstr ""
#: src/generics/generic-traits.md
msgid ""
-"Traits can also be generic, just like types and functions. A trait's "
-"parameters get concrete types when it is used."
+"Traits can also be generic, just like types and functions. A trait's parameters "
+"get concrete types when it is used."
msgstr ""
"Los traits también pueden ser genéricos, como los tipos y las funciones. Los "
"parámetros de un trait obtienen tipos concretos cuando es usado."
@@ -6189,51 +6070,50 @@ msgid ""
"simple."
msgstr ""
"El trait `From` sera discutido mas tarde, pero su definición en [la "
-"documentación `std`](https://doc.rust-lang.org/std/convert/trait.From.html) "
-"es simple."
+"documentación `std`](https://doc.rust-lang.org/std/convert/trait.From.html) es "
+"simple."
#: src/generics/generic-traits.md
msgid ""
-"Implementations of the trait do not need to cover all possible type "
-"parameters. Here, `Foo::from(\"hello\")` would not compile because there is "
-"no `From<&str>` implementation for `Foo`."
+"Implementations of the trait do not need to cover all possible type parameters. "
+"Here, `Foo::from(\"hello\")` would not compile because there is no `From<&str>` "
+"implementation for `Foo`."
msgstr ""
-"Las implementaciones del trait no necesitan cubrir todos los parámetros de "
-"tipo posibles. Aquí, `Foo::from(\"hello\")` no compilaría porque no hay una "
+"Las implementaciones del trait no necesitan cubrir todos los parámetros de tipo "
+"posibles. Aquí, `Foo::from(\"hello\")` no compilaría porque no hay una "
"implementación `From<&str>` para `Foo`."
#: src/generics/generic-traits.md
msgid ""
"Generic traits take types as \"input\", while associated types are a kind of "
-"\"output\" type. A trait can have multiple implementations for different "
-"input types."
+"\"output\" type. A trait can have multiple implementations for different input "
+"types."
msgstr ""
-"Tipos genéricos toman tipos como entradas, mientras tipos asociados son "
-"tipos de salida. Un trait puede tener varias implementaciones para "
-"diferentes tipos de entrada."
+"Tipos genéricos toman tipos como entradas, mientras tipos asociados son tipos "
+"de salida. Un trait puede tener varias implementaciones para diferentes tipos "
+"de entrada."
#: src/generics/generic-traits.md
msgid ""
-"In fact, Rust requires that at most one implementation of a trait match for "
-"any type T. Unlike some other languages, Rust has no heuristic for choosing "
-"the \"most specific\" match. There is work on adding this support, called "
+"In fact, Rust requires that at most one implementation of a trait match for any "
+"type T. Unlike some other languages, Rust has no heuristic for choosing the "
+"\"most specific\" match. There is work on adding this support, called "
"[specialization](https://rust-lang.github.io/rfcs/1210-impl-specialization."
"html)."
msgstr ""
"De hecho, Rust requiere que a lo más solo una implementación de un trait "
-"coincida con cualquier tipo T. A diferencia de otros lenguajes, Rust no "
-"tiene una heurística para escoger la coincidencia \"más especifica\". Hay "
-"trabajo corriente para implementar esta heurística, llamado [especialización]"
-"(https://rust-lang.github.io/rfcs/1210-impl-specialization.html)."
+"coincida con cualquier tipo T. A diferencia de otros lenguajes, Rust no tiene "
+"una heurística para escoger la coincidencia \"más especifica\". Hay trabajo "
+"corriente para implementar esta heurística, llamado [especialización](https://"
+"rust-lang.github.io/rfcs/1210-impl-specialization.html)."
#: src/generics/trait-bounds.md
msgid ""
"When working with generics, you often want to require the types to implement "
"some trait, so that you can call this trait's methods."
msgstr ""
-"Cuando se trabaja con genéricos, a menudo se prefiere que los tipos "
-"implementen algún trait, de forma que se pueda llamar a los métodos de este "
-"trait."
+"Cuando se trabaja con genéricos, a menudo se prefiere que los tipos implementen "
+"algún trait, de forma que se pueda llamar a los métodos de este trait."
#: src/generics/trait-bounds.md
msgid "You can do this with `T: Trait` or `impl Trait`:"
@@ -6271,8 +6151,8 @@ msgstr "Tiene funciones adicionales para que sea más potente."
#: src/generics/trait-bounds.md
msgid ""
-"If someone asks, the extra feature is that the type on the left of \":\" can "
-"be arbitrary, like `Option`."
+"If someone asks, the extra feature is that the type on the left of \":\" can be "
+"arbitrary, like `Option`."
msgstr ""
"Si alguien pregunta, la función adicional es que el tipo que está a la "
"izquierda de \":\" puede ser arbitrario, como `Option`."
@@ -6282,8 +6162,8 @@ msgid ""
"Note that Rust does not (yet) support specialization. For example, given the "
"original `duplicate`, it is invalid to add a specialized `duplicate(a: u32)`."
msgstr ""
-"Ten en cuenta que Rust (todavía) no admite especialización. Por ejemplo, "
-"dado el `duplicate`, original, no es válido añadir un `duplicate(a: u32)` "
+"Ten en cuenta que Rust (todavía) no admite especialización. Por ejemplo, dado "
+"el `duplicate`, original, no es válido añadir un `duplicate(a: u32)` "
"especializado."
#: src/generics/impl-trait.md
@@ -6316,11 +6196,11 @@ msgstr "\"depurable: {debuggable:?}\""
#: src/generics/impl-trait.md
msgid ""
-"`impl Trait` allows you to work with types which you cannot name. The "
-"meaning of `impl Trait` is a bit different in the different positions."
+"`impl Trait` allows you to work with types which you cannot name. The meaning "
+"of `impl Trait` is a bit different in the different positions."
msgstr ""
-"`impl Trait` te deja trabajar con tipos que no puedes nombrar. El "
-"significado de `impl Trait` es un poco diferente dependiendo de su posición."
+"`impl Trait` te deja trabajar con tipos que no puedes nombrar. El significado "
+"de `impl Trait` es un poco diferente dependiendo de su posición."
#: src/generics/impl-trait.md
msgid ""
@@ -6342,27 +6222,26 @@ msgstr ""
#: src/generics/impl-trait.md
msgid ""
-"Inference is hard in return position. A function returning `impl Foo` picks "
-"the concrete type it returns, without writing it out in the source. A "
-"function returning a generic type like `collect() -> B` can return any "
-"type satisfying `B`, and the caller may need to choose one, such as with "
-"`let x: Vec<_> = foo.collect()` or with the turbofish, `foo.collect::"
-">()`."
+"Inference is hard in return position. A function returning `impl Foo` picks the "
+"concrete type it returns, without writing it out in the source. A function "
+"returning a generic type like `collect() -> B` can return any type "
+"satisfying `B`, and the caller may need to choose one, such as with `let x: "
+"Vec<_> = foo.collect()` or with the turbofish, `foo.collect::>()`."
msgstr ""
"La inferencia es más complicada en la posición de retorno. Una función que "
-"devuelve `impl Foo` elige el tipo concreto que devuelve, sin escribirlo en "
-"el código fuente. Una función que devuelve un tipo genérico como "
-"`collect() -> B` puede devolver cualquier tipo que cumpla `B`, y es "
-"posible que el llamador tenga que elegir uno, como con `let x: Vec<_> = foo."
-"collect()` o con la sintaxis turbofish, `foo.collect::>()`."
+"devuelve `impl Foo` elige el tipo concreto que devuelve, sin escribirlo en el "
+"código fuente. Una función que devuelve un tipo genérico como `collect() -> "
+"B` puede devolver cualquier tipo que cumpla `B`, y es posible que el llamador "
+"tenga que elegir uno, como con `let x: Vec<_> = foo.collect()` o con la "
+"sintaxis turbofish, `foo.collect::>()`."
#: src/generics/impl-trait.md
msgid ""
-"What is the type of `debuggable`? Try `let debuggable: () = ..` to see what "
-"the error message shows."
+"What is the type of `debuggable`? Try `let debuggable: () = ..` to see what the "
+"error message shows."
msgstr ""
-"¿Cuál es el tipo de `debuggable`? Prueba con `let debuggable: () = ..` para "
-"ver lo que muestra el mensaje de error."
+"¿Cuál es el tipo de `debuggable`? Prueba con `let debuggable: () = ..` para ver "
+"lo que muestra el mensaje de error."
#: src/generics/dyn-trait.md
msgid ""
@@ -6370,8 +6249,7 @@ msgid ""
"supports using them for type-erased, dynamic dispatch via trait objects:"
msgstr ""
"En adición a ser usados para despacho estático con genéricos, los traits "
-"también se pueden usar para despacho dinámico/tipo-borrado con objetos de "
-"trait:"
+"también se pueden usar para despacho dinámico/tipo-borrado con objetos de trait:"
#: src/generics/dyn-trait.md src/smart-pointers/trait-objects.md
msgid "\"Miau!\""
@@ -6391,19 +6269,18 @@ msgstr "// Utiliza borradura de tipos y despacho dinámico.\n"
#: src/generics/dyn-trait.md
msgid ""
-"Generics, including `impl Trait`, use monomorphization to create a "
-"specialized instance of the function for each different type that the "
-"generic is instantiated with. This means that calling a trait method from "
-"within a generic function still uses static dispatch, as the compiler has "
-"full type information and can resolve which type's trait implementation to "
-"use."
+"Generics, including `impl Trait`, use monomorphization to create a specialized "
+"instance of the function for each different type that the generic is "
+"instantiated with. This means that calling a trait method from within a generic "
+"function still uses static dispatch, as the compiler has full type information "
+"and can resolve which type's trait implementation to use."
msgstr ""
"Genéricos, incluyendo `impl Trait`, utilizan monomorphización para crear una "
-"instancia especializada de la funcionan para cada tipo con el cual el "
-"genérico es instanciando. Esto significa que llamar un método de trait "
-"dentro de una función generica todavía usa despacho estático, ya que el "
-"compilador tiene todo la información necesaria para determinar el tipo cuya "
-"implementación debería de usar."
+"instancia especializada de la funcionan para cada tipo con el cual el genérico "
+"es instanciando. Esto significa que llamar un método de trait dentro de una "
+"función generica todavía usa despacho estático, ya que el compilador tiene todo "
+"la información necesaria para determinar el tipo cuya implementación debería de "
+"usar."
#: src/generics/dyn-trait.md
msgid ""
@@ -6413,8 +6290,8 @@ msgid ""
"regardless of what type of `Pet` is passed in."
msgstr ""
"`dyn Trait` utiliza despacho dinámico con una [tabla virtual de metodos]"
-"(https://en.wikipedia.org/wiki/Virtual_method_table) (vtable). Esto "
-"significa que solo hay una sola version de `fn dynamic` que es utilizado "
+"(https://en.wikipedia.org/wiki/Virtual_method_table) (vtable). Esto significa "
+"que solo hay una sola version de `fn dynamic` que es utilizado "
"independientemente del tipo de `Pet` que es proveído."
#: src/generics/dyn-trait.md
@@ -6423,30 +6300,28 @@ msgid ""
"indirection. In this case it's a reference, though smart pointer types like "
"`Box` can also be used (this will be demonstrated on day 3)."
msgstr ""
-"Cuando uno usa `dyn Trait`, el objeto trait necesita estar detrás algún tipo "
-"de indirección. En este caso es una referencia, pero tipos de puntador "
-"inteligentes como `Box` también pueden ser usados (demostraremos este "
-"durante el día 3)."
+"Cuando uno usa `dyn Trait`, el objeto trait necesita estar detrás algún tipo de "
+"indirección. En este caso es una referencia, pero tipos de puntador "
+"inteligentes como `Box` también pueden ser usados (demostraremos este durante "
+"el día 3)."
#: src/generics/dyn-trait.md
msgid ""
"At runtime, a `&dyn Pet` is represented as a \"fat pointer\", i.e. a pair of "
-"two pointers: One pointer points to the concrete object that implements "
-"`Pet`, and the other points to the vtable for the trait implementation for "
-"that type. When calling the `talk` method on `&dyn Pet` the compiler looks "
-"up the function pointer for `talk` in the vtable and then invokes the "
-"function, passing the pointer to the `Dog` or `Cat` into that function. The "
-"compiler doesn't need to know the concrete type of the `Pet` in order to do "
-"this."
+"two pointers: One pointer points to the concrete object that implements `Pet`, "
+"and the other points to the vtable for the trait implementation for that type. "
+"When calling the `talk` method on `&dyn Pet` the compiler looks up the function "
+"pointer for `talk` in the vtable and then invokes the function, passing the "
+"pointer to the `Dog` or `Cat` into that function. The compiler doesn't need to "
+"know the concrete type of the `Pet` in order to do this."
msgstr ""
"Durante el tiempo de ejecución, un `&dyn Pet` es representado como un "
"\"puntador gordo\", es decir un par de dos puntadores: Un puntador apunta al "
"objeto concreto que implementa `Pet`, y el otra apunta al vtable para la "
-"implementación del trait para ese tipo. Cuando uno llama el método `talk` "
-"sobre `&dyn Pet`, el compilador busca el puntador de función para `talk` en "
-"el vtable y ejecuta la función, pasando el puntador al `Dog` o `Cat` a esa "
-"función. El compilador no necesita saber el tipo concreto del `Pet` para "
-"hacer esto."
+"implementación del trait para ese tipo. Cuando uno llama el método `talk` sobre "
+"`&dyn Pet`, el compilador busca el puntador de función para `talk` en el vtable "
+"y ejecuta la función, pasando el puntador al `Dog` o `Cat` a esa función. El "
+"compilador no necesita saber el tipo concreto del `Pet` para hacer esto."
#: src/generics/dyn-trait.md
msgid ""
@@ -6459,12 +6334,12 @@ msgstr ""
#: src/generics/exercise.md
msgid ""
"In this short exercise, you will implement a generic `min` function that "
-"determines the minimum of two values, using the [`Ord`](https://doc.rust-"
-"lang.org/stable/std/cmp/trait.Ord.html) trait."
+"determines the minimum of two values, using the [`Ord`](https://doc.rust-lang."
+"org/stable/std/cmp/trait.Ord.html) trait."
msgstr ""
-"En este breve ejercicio, implementarás una función `min` genérica que "
-"determina el mínimo de dos valores mediante el trait [`Ord`](https://doc."
-"rust-lang.org/stable/std/cmp/trait.Ord.html)."
+"En este breve ejercicio, implementarás una función `min` genérica que determina "
+"el mínimo de dos valores mediante el trait [`Ord`](https://doc.rust-lang.org/"
+"stable/std/cmp/trait.Ord.html)."
#: src/generics/exercise.md
msgid "// TODO: implement the `min` function used in `main`.\n"
@@ -6501,9 +6376,9 @@ msgid ""
"html) trait and [`Ordering`](https://doc.rust-lang.org/stable/std/cmp/enum."
"Ordering.html) enum."
msgstr ""
-"Enseña a los estudiantes el trait [`Ord`](https://doc.rust-lang.org/stable/"
-"std/cmp/trait.Ord.html) y el enum [`Ordering`](https://doc.rust-lang.org/"
-"stable/std/cmp/enum.Ordering.html)."
+"Enseña a los estudiantes el trait [`Ord`](https://doc.rust-lang.org/stable/std/"
+"cmp/trait.Ord.html) y el enum [`Ordering`](https://doc.rust-lang.org/stable/std/"
+"cmp/enum.Ordering.html)."
#: src/std-types.md src/std-types/option.md
msgid "Option"
@@ -6530,36 +6405,36 @@ msgid ""
"For each of the slides in this section, spend some time reviewing the "
"documentation pages, highlighting some of the more common methods."
msgstr ""
-"Dedica un tiempo a revisar las páginas de la documentación de cada una de "
-"las diapositivas de esta sección para destacar algunos de los métodos que "
-"más se usan."
+"Dedica un tiempo a revisar las páginas de la documentación de cada una de las "
+"diapositivas de esta sección para destacar algunos de los métodos que más se "
+"usan."
#: src/std-types/std.md
msgid ""
-"Rust comes with a standard library which helps establish a set of common "
-"types used by Rust libraries and programs. This way, two libraries can work "
-"together smoothly because they both use the same `String` type."
+"Rust comes with a standard library which helps establish a set of common types "
+"used by Rust libraries and programs. This way, two libraries can work together "
+"smoothly because they both use the same `String` type."
msgstr ""
"Rust viene con una biblioteca estándar que ayuda a establecer un conjunto de "
"tipos comunes que se usan en la biblioteca y los programas de Rust. De esta "
-"forma, dos bibliotecas pueden funcionar juntas sin problemas, puesto que "
-"ambas utilizan el mismo tipo `String`."
+"forma, dos bibliotecas pueden funcionar juntas sin problemas, puesto que ambas "
+"utilizan el mismo tipo `String`."
#: src/std-types/std.md
msgid ""
-"In fact, Rust contains several layers of the Standard Library: `core`, "
-"`alloc` and `std`."
+"In fact, Rust contains several layers of the Standard Library: `core`, `alloc` "
+"and `std`."
msgstr ""
-"De hecho, Rust contiene varias capas de la biblioteca estándar: `core`, "
-"`alloc` y `std`."
+"De hecho, Rust contiene varias capas de la biblioteca estándar: `core`, `alloc` "
+"y `std`."
#: src/std-types/std.md
msgid ""
-"`core` includes the most basic types and functions that don't depend on "
-"`libc`, allocator or even the presence of an operating system."
+"`core` includes the most basic types and functions that don't depend on `libc`, "
+"allocator or even the presence of an operating system."
msgstr ""
-"`core` incluye los tipos y funciones más básicos que no dependen de `libc`, "
-"de un _allocator_ (asignador de memoria) ni de la presencia de un sistema "
+"`core` incluye los tipos y funciones más básicos que no dependen de `libc`, de "
+"un _allocator_ (asignador de memoria) ni de la presencia de un sistema "
"operativo."
#: src/std-types/std.md
@@ -6571,8 +6446,7 @@ msgstr ""
"`Vec`, `Box` y `Arc`."
#: src/std-types/std.md
-msgid ""
-"Embedded Rust applications often only use `core`, and sometimes `alloc`."
+msgid "Embedded Rust applications often only use `core`, and sometimes `alloc`."
msgstr ""
"Las aplicaciones embebidas en Rust menudo solo usan `core` y a algunas veces "
"`alloc`."
@@ -6591,21 +6465,21 @@ msgstr ""
#: src/std-types/docs.md
msgid ""
-"Primitive types like [`u8`](https://doc.rust-lang.org/stable/std/primitive."
-"u8.html)."
+"Primitive types like [`u8`](https://doc.rust-lang.org/stable/std/primitive.u8."
+"html)."
msgstr ""
-"Tipos primitivos como [`u8`](https://doc.rust-lang.org/stable/std/primitive."
-"u8.html)."
+"Tipos primitivos como [`u8`](https://doc.rust-lang.org/stable/std/primitive.u8."
+"html)."
#: src/std-types/docs.md
msgid ""
"Standard library types like [`Option`](https://doc.rust-lang.org/stable/std/"
-"option/enum.Option.html) or [`BinaryHeap`](https://doc.rust-lang.org/stable/"
-"std/collections/struct.BinaryHeap.html)."
+"option/enum.Option.html) or [`BinaryHeap`](https://doc.rust-lang.org/stable/std/"
+"collections/struct.BinaryHeap.html)."
msgstr ""
"Tipos de la biblioteca estándar como [`Option`](https://doc.rust-lang.org/"
-"stable/std/option/enum.Option.html) o [`BinaryHeap`](https://doc.rust-lang."
-"org/stable/std/collections/struct.BinaryHeap.html)."
+"stable/std/option/enum.Option.html) o [`BinaryHeap`](https://doc.rust-lang.org/"
+"stable/std/collections/struct.BinaryHeap.html)."
#: src/std-types/docs.md
msgid "In fact, you can document your own code:"
@@ -6613,8 +6487,7 @@ msgstr "De hecho, puedes documentar tu propio código:"
#: src/std-types/docs.md
msgid ""
-"/// 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"
msgstr ""
@@ -6626,20 +6499,19 @@ msgstr ""
msgid ""
"The contents are treated as Markdown. All published Rust library crates are "
"automatically documented at [`docs.rs`](https://docs.rs) using the [rustdoc]"
-"(https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html) tool. It is "
-"idiomatic to document all public items in an API using this pattern."
+"(https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html) tool. It is idiomatic "
+"to document all public items in an API using this pattern."
msgstr ""
-"El contenido se trata como Markdown. Todos los crates de la biblioteca de "
-"Rust publicados se documentan automáticamente\n"
+"El contenido se trata como Markdown. Todos los crates de la biblioteca de Rust "
+"publicados se documentan automáticamente\n"
" en [`docs.rs`](https://docs.rs) mediante la herramienta \n"
-"[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html). Es "
-"propio\n"
+"[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html). Es propio\n"
"documentar todos los elementos públicos de una API usando este patrón."
#: src/std-types/docs.md
msgid ""
-"To document an item from inside the item (such as inside a module), use `//!"
-"` or `/*! .. */`, called \"inner doc comments\":"
+"To document an item from inside the item (such as inside a module), use `//!` "
+"or `/*! .. */`, called \"inner doc comments\":"
msgstr ""
"Para documentar un elemento desde dentro (por ejemplo, dentro de un módulo), "
"utiliza `//!` o `/*! .. */`, denominado como \"comentarios internos del "
@@ -6647,29 +6519,27 @@ msgstr ""
#: src/std-types/docs.md
msgid ""
-"//! This module contains functionality relating to divisibility of "
-"integers.\n"
+"//! This module contains functionality relating to divisibility of integers.\n"
msgstr ""
-"//! Este módulo contiene funciones relacionadas con la divisibilidad de "
-"números enteros.\n"
+"//! Este módulo contiene funciones relacionadas con la divisibilidad de números "
+"enteros.\n"
#: src/std-types/docs.md
msgid ""
-"Show students the generated docs for the `rand` crate at ."
+"Show students the generated docs for the `rand` crate at ."
msgstr ""
-"Muestra a los alumnos los documentos generados para el crate `rand` en "
-"."
+"Muestra a los alumnos los documentos generados para el crate `rand` en ."
#: src/std-types/option.md
msgid ""
-"We have already seen some use of `Option`. It stores either a value of "
-"type `T` or nothing. For example, [`String::find`](https://doc.rust-lang.org/"
-"stable/std/string/struct.String.html#method.find) returns an `Option`."
+"We have already seen some use of `Option`. It stores either a value of type "
+"`T` or nothing. For example, [`String::find`](https://doc.rust-lang.org/stable/"
+"std/string/struct.String.html#method.find) returns an `Option`."
msgstr ""
"Ya hemos visto algunos usos de `Option`. Almacena un valor de tipo `T` o "
-"nada. Por ejemplo, [`String::find`](https://doc.rust-lang.org/stable/std/"
-"string/struct.String.html#method.find) devuelve un `Option`."
+"nada. Por ejemplo, [`String::find`](https://doc.rust-lang.org/stable/std/string/"
+"struct.String.html#method.find) devuelve un `Option`."
#: src/std-types/option.md
msgid "\"Löwe 老虎 Léopard Gepardi\""
@@ -6693,21 +6563,19 @@ msgstr "\"No se ha encontrado el carácter\""
#: src/std-types/option.md
msgid "`Option` is widely used, not just in the standard library."
-msgstr ""
-"`Option` se usa en muchos contextos, no solo en la biblioteca estándar."
+msgstr "`Option` se usa en muchos contextos, no solo en la biblioteca estándar."
#: src/std-types/option.md
msgid ""
"`unwrap` will return the value in an `Option`, or panic. `expect` is similar "
"but takes an error message."
msgstr ""
-"`unwrap` devolverá el valor en un elemento `Option` o un error pánico. "
-"`expect` funciona de forma similar, pero muestra un mensaje de error."
+"`unwrap` devolverá el valor en un elemento `Option` o un error pánico. `expect` "
+"funciona de forma similar, pero muestra un mensaje de error."
#: src/std-types/option.md
msgid ""
-"You can panic on None, but you can't \"accidentally\" forget to check for "
-"None."
+"You can panic on None, but you can't \"accidentally\" forget to check for None."
msgstr ""
"Puedes obtener un pánico en None, pero no puedes olvidarte \"de forma "
"accidental\" de seleccionar None."
@@ -6722,11 +6590,11 @@ msgstr ""
#: src/std-types/option.md
msgid ""
-"The niche optimization means that `Option` often has the same size in "
-"memory as `T`."
+"The niche optimization means that `Option` often has the same size in memory "
+"as `T`."
msgstr ""
-"La \"optimización de nicho\" significa que `Option` a menudo tiene el "
-"mismo tamaño en memoria que `T`."
+"La \"optimización de nicho\" significa que `Option` a menudo tiene el mismo "
+"tamaño en memoria que `T`."
#: src/std-types/result.md
msgid ""
@@ -6734,10 +6602,10 @@ msgid ""
"operation, each with a different enum variant. It is generic: `Result` "
"where `T` is used in the `Ok` variant and `E` appears in the `Err` variant."
msgstr ""
-"`Result` es parecido a `Option`, pero indica si una operación se ha "
-"completado de forma correcta o ha fallado, cada una con un tipo diferente. "
-"Es genérico: `Result` donde `T` es usado en el variante `Ok` y `E` en "
-"el variante `Err`."
+"`Result` es parecido a `Option`, pero indica si una operación se ha completado "
+"de forma correcta o ha fallado, cada una con un tipo diferente. Es genérico: "
+"`Result` donde `T` es usado en el variante `Ok` y `E` en el variante "
+"`Err`."
#: src/std-types/result.md src/error-handling/result.md
msgid "\"diary.txt\""
@@ -6758,21 +6626,21 @@ msgstr "\"No se ha podido abrir el diario: {err}\""
#: src/std-types/result.md
msgid ""
"As with `Option`, the successful value sits inside of `Result`, forcing the "
-"developer to explicitly extract it. This encourages error checking. In the "
-"case where an error should never happen, `unwrap()` or `expect()` can be "
-"called, and this is a signal of the developer intent too."
+"developer to explicitly extract it. This encourages error checking. In the case "
+"where an error should never happen, `unwrap()` or `expect()` can be called, and "
+"this is a signal of the developer intent too."
msgstr ""
-"Al igual que con `Option`, el valor correcto se encuentra dentro de "
-"`Result`, lo que obliga al desarrollador a extraerlo de forma explícita. "
-"Esto fomenta la comprobación de errores. En el caso de que nunca se produzca "
-"un error, se puede llamar a `unwrap()` o a `expect()`, y esto también es una "
-"señal de la intención del desarrollador."
+"Al igual que con `Option`, el valor correcto se encuentra dentro de `Result`, "
+"lo que obliga al desarrollador a extraerlo de forma explícita. Esto fomenta la "
+"comprobación de errores. En el caso de que nunca se produzca un error, se puede "
+"llamar a `unwrap()` o a `expect()`, y esto también es una señal de la intención "
+"del desarrollador."
#: src/std-types/result.md
msgid ""
-"`Result` documentation is a recommended read. Not during the course, but it "
-"is worth mentioning. It contains a lot of convenience methods and functions "
-"that help functional-style programming."
+"`Result` documentation is a recommended read. Not during the course, but it is "
+"worth mentioning. It contains a lot of convenience methods and functions that "
+"help functional-style programming."
msgstr ""
"La documentación sobre `Result` es una lectura recomendada. Aunque no se vea "
"durante este curso, merece la pena mencionarlo. Contiene muchos métodos y "
@@ -6780,19 +6648,19 @@ msgstr ""
#: src/std-types/result.md
msgid ""
-"`Result` is the standard type to implement error handling as we will see on "
-"Day 4."
+"`Result` is the standard type to implement error handling as we will see on Day "
+"4."
msgstr ""
-"`Result` es el tipo estándar para implementar la gestión de errores, tal y "
-"como veremos el día 4."
+"`Result` es el tipo estándar para implementar la gestión de errores, tal y como "
+"veremos el día 4."
#: src/std-types/string.md
msgid ""
"[`String`](https://doc.rust-lang.org/std/string/struct.String.html) is a "
"growable UTF-8 encoded string:"
msgstr ""
-"[`String`](https://doc.rust-lang.org/std/string/struct.String.html) es el "
-"búfer de cadena ampliable UTF-8 estándar:"
+"[`String`](https://doc.rust-lang.org/std/string/struct.String.html) es el búfer "
+"de cadena ampliable UTF-8 estándar:"
#: src/std-types/string.md src/std-traits/read-and-write.md
#: src/memory-management/review.md src/testing/unit-tests.md
@@ -6823,37 +6691,37 @@ msgstr "\"s3: longitud = {}, número de caracteres = {}\""
#: src/std-types/string.md
msgid ""
"`String` implements [`Deref`](https://doc.rust-lang.org/std/"
-"string/struct.String.html#deref-methods-str), which means that you can call "
-"all `str` methods on a `String`."
+"string/struct.String.html#deref-methods-str), which means that you can call all "
+"`str` methods on a `String`."
msgstr ""
"`String` implementa \\[`Deref`\\]\\[2\\], lo que significa que "
"puedes llamar a todos los métodos `str` en una `String`."
#: src/std-types/string.md
msgid ""
-"`String::new` returns a new empty string, use `String::with_capacity` when "
-"you know how much data you want to push to the string."
+"`String::new` returns a new empty string, use `String::with_capacity` when you "
+"know how much data you want to push to the string."
msgstr ""
"`String::new` devuelve una nueva cadena vacía. Usa `String::with_capacity` "
"cuando sepas cuántos datos quieres guardar."
#: src/std-types/string.md
msgid ""
-"`String::len` returns the size of the `String` in bytes (which can be "
-"different from its length in characters)."
+"`String::len` returns the size of the `String` in bytes (which can be different "
+"from its length in characters)."
msgstr ""
-"`String::len` devuelve el tamaño de `String` en bytes (que puede ser "
-"diferente de su longitud en caracteres)."
+"`String::len` devuelve el tamaño de `String` en bytes (que puede ser diferente "
+"de su longitud en caracteres)."
#: src/std-types/string.md
msgid ""
"`String::chars` returns an iterator over the actual characters. Note that a "
-"`char` can be different from what a human will consider a \"character\" due "
-"to [grapheme clusters](https://docs.rs/unicode-segmentation/latest/"
+"`char` can be different from what a human will consider a \"character\" due to "
+"[grapheme clusters](https://docs.rs/unicode-segmentation/latest/"
"unicode_segmentation/struct.Graphemes.html)."
msgstr ""
-"`String::chars` devuelve un iterador sobre los caracteres reales. Ten en "
-"cuenta que un `char` puede ser diferente de lo que un humano consideraría un "
+"`String::chars` devuelve un iterador sobre los caracteres reales. Ten en cuenta "
+"que un `char` puede ser diferente de lo que un humano consideraría un "
"\"caracter\", debido a los [grupos de grafemas](https://docs.rs/unicode-"
"segmentation/latest/unicode_segmentation/struct.Graphemes.html)."
@@ -6862,16 +6730,16 @@ msgid ""
"When people refer to strings they could either be talking about `&str` or "
"`String`."
msgstr ""
-"Cuando la gente se refiere a una cadena, pueden estar hablando de `&str` o "
-"de `String`."
+"Cuando la gente se refiere a una cadena, pueden estar hablando de `&str` o de "
+"`String`."
#: src/std-types/string.md
msgid ""
"When a type implements `Deref`, the compiler will let you "
"transparently call methods from `T`."
msgstr ""
-"Cuando un tipo implementa `Deref`, el compilador te permite "
-"llamar a métodos de forma transparente desde `T`."
+"Cuando un tipo implementa `Deref`, el compilador te permite llamar "
+"a métodos de forma transparente desde `T`."
#: src/std-types/string.md
msgid ""
@@ -6883,8 +6751,8 @@ msgstr ""
#: src/std-types/string.md
msgid ""
-"`String` implements `Deref` which transparently gives it "
-"access to `str`'s methods."
+"`String` implements `Deref` which transparently gives it access "
+"to `str`'s methods."
msgstr ""
"`String` implementa `Deref`, que le proporciona acceso "
"transparente a los métodos de `str`."
@@ -6900,8 +6768,8 @@ msgid ""
"with some extra guarantees."
msgstr ""
"`String` se implementa como un envoltorio alrededor de un vector de bytes. "
-"Muchas de las operaciones que ves como compatibles con vectores también lo "
-"son con `String`, pero con algunas garantías adicionales."
+"Muchas de las operaciones que ves como compatibles con vectores también lo son "
+"con `String`, pero con algunas garantías adicionales."
#: src/std-types/string.md
msgid "Compare the different ways to index a `String`:"
@@ -6909,41 +6777,40 @@ msgstr "Compara las diferentes formas de indexar `String`:"
#: src/std-types/string.md
msgid ""
-"To a character by using `s3.chars().nth(i).unwrap()` where `i` is in-bound, "
-"out-of-bounds."
+"To a character by using `s3.chars().nth(i).unwrap()` where `i` is in-bound, out-"
+"of-bounds."
msgstr ""
-"A un carácter mediante `s3. chars().nth(i).unwrap()`, donde `i` está dentro "
-"o fuera de los límites."
+"A un carácter mediante `s3. chars().nth(i).unwrap()`, donde `i` está dentro o "
+"fuera de los límites."
#: src/std-types/string.md
msgid ""
-"To a substring by using `s3[0..4]`, where that slice is on character "
-"boundaries or not."
+"To a substring by using `s3[0..4]`, where that slice is on character boundaries "
+"or not."
msgstr ""
-"A una cadena secundaria mediante `s3[0..4]`, donde el slice está en los "
-"límites de caracteres o no."
+"A una cadena secundaria mediante `s3[0..4]`, donde el slice está en los límites "
+"de caracteres o no."
#: src/std-types/string.md
msgid ""
-"Many types can be converted to a string with the [`to_string`](https://doc."
-"rust-lang.org/std/string/trait.ToString.html#tymethod.to_string) method. "
-"This trait is automatically implemented for all types that implement "
-"`Display`, so anything that can be formatted can also be converted to a "
-"string."
+"Many types can be converted to a string with the [`to_string`](https://doc.rust-"
+"lang.org/std/string/trait.ToString.html#tymethod.to_string) method. This trait "
+"is automatically implemented for all types that implement `Display`, so "
+"anything that can be formatted can also be converted to a string."
msgstr ""
"Muchos tipos pueden ser convertidos a una cadena con el método [`to_string`]"
-"(https://doc.rust-lang.org/std/string/trait.ToString.html#tymethod."
-"to_string). Este trait es automáticamente implementado para cualquier tipo "
-"que implemente `Display`, entonces cualquier objeto que pueda ser formateado "
-"también puede ser convertido a una cadena."
+"(https://doc.rust-lang.org/std/string/trait.ToString.html#tymethod.to_string). "
+"Este trait es automáticamente implementado para cualquier tipo que implemente "
+"`Display`, entonces cualquier objeto que pueda ser formateado también puede ser "
+"convertido a una cadena."
#: src/std-types/vec.md
msgid ""
"[`Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html) is the standard "
"resizable heap-allocated buffer:"
msgstr ""
-"[`Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html) es el búfer "
-"estándar redimensionable asignado al _heap_:"
+"[`Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html) es el búfer estándar "
+"redimensionable asignado al _heap_:"
#: src/std-types/vec.md
msgid "\"v1: len = {}, capacity = {}\""
@@ -6981,20 +6848,20 @@ msgstr ""
#: src/std-types/vec.md
msgid ""
-"`Vec` is a type of collection, along with `String` and `HashMap`. The data "
-"it contains is stored on the heap. This means the amount of data doesn't "
-"need to be known at compile time. It can grow or shrink at runtime."
+"`Vec` is a type of collection, along with `String` and `HashMap`. The data it "
+"contains is stored on the heap. This means the amount of data doesn't need to "
+"be known at compile time. It can grow or shrink at runtime."
msgstr ""
"`Vec` es un tipo de colección, junto con `String` y `HashMap`. Los datos que "
-"contiene se almacenan en el _heap_. Esto significa que no es necesario "
-"conocer el tamaño de los datos durante la compilación. Puede aumentar o "
-"disminuir durante la ejecución."
+"contiene se almacenan en el _heap_. Esto significa que no es necesario conocer "
+"el tamaño de los datos durante la compilación. Puede aumentar o disminuir "
+"durante la ejecución."
#: src/std-types/vec.md
msgid ""
"Notice how `Vec` is a generic type too, but you don't have to specify `T` "
-"explicitly. As always with Rust type inference, the `T` was established "
-"during the first `push` call."
+"explicitly. As always with Rust type inference, the `T` was established during "
+"the first `push` call."
msgstr ""
"Ten en cuenta que `Vec` también es un tipo genérico, pero no tienes que "
"especificar `T` de forma explícita. Como siempre sucede con la inferencia de "
@@ -7002,11 +6869,11 @@ msgstr ""
#: src/std-types/vec.md
msgid ""
-"`vec![...]` is a canonical macro to use instead of `Vec::new()` and it "
-"supports adding initial elements to the vector."
+"`vec![...]` is a canonical macro to use instead of `Vec::new()` and it supports "
+"adding initial elements to the vector."
msgstr ""
-"`vec![...]` es una macro canónica para usarla en lugar de `Vec::new()` y "
-"admite que se añadan elementos iniciales al vector."
+"`vec![...]` es una macro canónica para usarla en lugar de `Vec::new()` y admite "
+"que se añadan elementos iniciales al vector."
#: src/std-types/vec.md
msgid ""
@@ -7014,18 +6881,18 @@ msgid ""
"Alternatively, using `get` will return an `Option`. The `pop` function will "
"remove the last element."
msgstr ""
-"Para indexar el vector, se utiliza `[` `]`, pero entrará en pánico si se "
-"sale de los límites. También se puede usar `get` para obtener una `Option`. "
-"La función `pop` eliminará el último elemento."
+"Para indexar el vector, se utiliza `[` `]`, pero entrará en pánico si se sale "
+"de los límites. También se puede usar `get` para obtener una `Option`. La "
+"función `pop` eliminará el último elemento."
#: src/std-types/vec.md
msgid ""
-"Slices are covered on day 3. For now, students only need to know that a "
-"value of type `Vec` gives access to all of the documented slice methods, too."
+"Slices are covered on day 3. For now, students only need to know that a value "
+"of type `Vec` gives access to all of the documented slice methods, too."
msgstr ""
-"Se estudiarán los slices el tercer día del curso. Por ahora, los "
-"participantes solo necesitan saber que un valor del tipo `Vec` también da "
-"acceso a todos los métodos de slice documentados."
+"Se estudiarán los slices el tercer día del curso. Por ahora, los participantes "
+"solo necesitan saber que un valor del tipo `Vec` también da acceso a todos los "
+"métodos de slice documentados."
#: src/std-types/hashmap.md
msgid "Standard hash map with protection against HashDoS attacks:"
@@ -7049,8 +6916,7 @@ msgstr "\"Los miserables\""
#: src/std-types/hashmap.md
msgid "\"We know about {} books, but not Les Misérables.\""
-msgstr ""
-"\"Tenemos información acerca de {} libros, pero no de Los miserables.\""
+msgstr "\"Tenemos información acerca de {} libros, pero no de Los miserables.\""
#: src/std-types/hashmap.md
msgid "\"Alice's Adventure in Wonderland\""
@@ -7067,8 +6933,8 @@ msgstr "\"{book} es desconocido.\""
#: src/std-types/hashmap.md
msgid "// Use the .entry() method to insert a value if nothing is found.\n"
msgstr ""
-"// Utiliza el método .entry() para insertar un valor si no se encuentra "
-"ningún resultado.\n"
+"// Utiliza el método .entry() para insertar un valor si no se encuentra ningún "
+"resultado.\n"
#: src/std-types/hashmap.md
msgid "\"{page_counts:#?}\""
@@ -7082,13 +6948,13 @@ msgstr "`HashMap` no se ha explicado en el preludio y debe conocerse."
#: src/std-types/hashmap.md
msgid ""
"Try the following lines of code. The first line will see if a book is in the "
-"hashmap and if not return an alternative value. The second line will insert "
-"the alternative value in the hashmap if the book is not found."
+"hashmap and if not return an alternative value. The second line will insert the "
+"alternative value in the hashmap if the book is not found."
msgstr ""
-"Prueba las siguientes líneas de código. La primera línea comprobará si un "
-"libro está incluido en el hashmap y, si no, devolverá un valor alternativo. "
-"La segunda línea insertará el valor alternativo en el hashmap si el libro no "
-"se encuentra."
+"Prueba las siguientes líneas de código. La primera línea comprobará si un libro "
+"está incluido en el hashmap y, si no, devolverá un valor alternativo. La "
+"segunda línea insertará el valor alternativo en el hashmap si el libro no se "
+"encuentra."
#: src/std-types/hashmap.md
msgid "\"Harry Potter and the Sorcerer's Stone\""
@@ -7101,26 +6967,25 @@ msgstr "\"Los juegos del hambre\""
#: src/std-types/hashmap.md
msgid "Unlike `vec!`, there is unfortunately no standard `hashmap!` macro."
msgstr ""
-"A diferencia de `vec!`, por desgracia no hay ninguna macro estándar de "
-"`hashmap!`."
+"A diferencia de `vec!`, por desgracia no hay ninguna macro estándar de `hashmap!"
+"`."
#: src/std-types/hashmap.md
msgid ""
-"Although, since Rust 1.56, HashMap implements [`From<[(K, V); N]>`](https://"
-"doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#impl-"
-"From%3C%5B(K,+V);+N%5D%3E-for-HashMap%3CK,+V,+RandomState%3E), which allows "
-"us to easily initialize a hash map from a literal array:"
+"Although, since Rust 1.56, HashMap implements [`From<[(K, V); N]>`](https://doc."
+"rust-lang.org/std/collections/hash_map/struct.HashMap.html#impl-From%3C%5B(K,"
+"+V);+N%5D%3E-for-HashMap%3CK,+V,+RandomState%3E), which allows us to easily "
+"initialize a hash map from a literal array:"
msgstr ""
-"Sin embargo, desde la versión 1.56 de Rust, HashMap implementa [`From<[(K, "
-"V); N]>`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap."
-"html#impl-From%3C%5B(K,+V);+N%5D%3E-for-HashMap%3CK,+V,+RandomState%, que "
-"nos permite inicializar fácilmente un mapa hash a partir de un _array_ "
-"literal:"
+"Sin embargo, desde la versión 1.56 de Rust, HashMap implementa [`From<[(K, V); "
+"N]>`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap."
+"html#impl-From%3C%5B(K,+V);+N%5D%3E-for-HashMap%3CK,+V,+RandomState%, que nos "
+"permite inicializar fácilmente un mapa hash a partir de un _array_ literal:"
#: src/std-types/hashmap.md
msgid ""
-"Alternatively HashMap can be built from any `Iterator` which yields key-"
-"value tuples."
+"Alternatively HashMap can be built from any `Iterator` which yields key-value "
+"tuples."
msgstr ""
"HashMap también se puede crear a partir de cualquier `Iterator` que genere "
"tuplas de pares clave-valor."
@@ -7128,8 +6993,8 @@ msgstr ""
#: src/std-types/hashmap.md
msgid ""
"We are showing `HashMap`, and avoid using `&str` as key to make "
-"examples easier. Using references in collections can, of course, be done, "
-"but it can lead into complications with the borrow checker."
+"examples easier. Using references in collections can, of course, be done, but "
+"it can lead into complications with the borrow checker."
msgstr ""
"Mostraremos `HashMap` y evitaremos utilizar `&str` para que los "
"ejemplos sean más sencillos. Por supuesto, se pueden usar las referencias en "
@@ -7137,8 +7002,8 @@ msgstr ""
#: src/std-types/hashmap.md
msgid ""
-"Try removing `to_string()` from the example above and see if it still "
-"compiles. Where do you think we might run into issues?"
+"Try removing `to_string()` from the example above and see if it still compiles. "
+"Where do you think we might run into issues?"
msgstr ""
"Prueba a eliminar `to_string()` del ejemplo anterior para ver si aún sigue "
"compilando. ¿Dónde crees que podríamos encontrar problemas?"
@@ -7146,9 +7011,9 @@ msgstr ""
#: src/std-types/hashmap.md
msgid ""
"This type has several \"method-specific\" return types, such as `std::"
-"collections::hash_map::Keys`. These types often appear in searches of the "
-"Rust docs. Show students the docs for this type, and the helpful link back "
-"to the `keys` method."
+"collections::hash_map::Keys`. These types often appear in searches of the Rust "
+"docs. Show students the docs for this type, and the helpful link back to the "
+"`keys` method."
msgstr ""
"Este tipo tiene varios tipos de devolución \"específicos del método\", como "
"`std::collections::hash_map::Keys`. Estos tipos a menudo aparecen en las "
@@ -7159,36 +7024,35 @@ msgstr ""
msgid ""
"In this exercise you will take a very simple data structure and make it "
"generic. It uses a [`std::collections::HashMap`](https://doc.rust-lang.org/"
-"stable/std/collections/struct.HashMap.html) to keep track of which values "
-"have been seen and how many times each one has appeared."
+"stable/std/collections/struct.HashMap.html) to keep track of which values have "
+"been seen and how many times each one has appeared."
msgstr ""
-"En este ejercicio habrá una estructura de datos muy sencilla y la "
-"convertirás en genérica. Utiliza un [`std::collections::HashMap`](https://"
-"doc.rust-lang.org/stable/std/collections/struct.HashMap.html) para hacer un "
-"seguimiento de los valores se han visto y cuántas veces ha aparecido cada "
-"uno."
+"En este ejercicio habrá una estructura de datos muy sencilla y la convertirás "
+"en genérica. Utiliza un [`std::collections::HashMap`](https://doc.rust-lang.org/"
+"stable/std/collections/struct.HashMap.html) para hacer un seguimiento de los "
+"valores se han visto y cuántas veces ha aparecido cada uno."
#: src/std-types/exercise.md
msgid ""
-"The initial version of `Counter` is hard coded to only work for `u32` "
-"values. Make the struct and its methods generic over the type of value being "
-"tracked, that way `Counter` can track any type of value."
+"The initial version of `Counter` is hard coded to only work for `u32` values. "
+"Make the struct and its methods generic over the type of value being tracked, "
+"that way `Counter` can track any type of value."
msgstr ""
-"La versión inicial de `Counter` está codificada para que solo funcione con "
-"los valores `u32`. Haz que struct y sus métodos sean genéricos sobre el tipo "
-"de valor del que se está haciendo un seguimiento, de manera que `Counter` "
-"pueda hacer el seguimiento de cualquier tipo de valor."
+"La versión inicial de `Counter` está codificada para que solo funcione con los "
+"valores `u32`. Haz que struct y sus métodos sean genéricos sobre el tipo de "
+"valor del que se está haciendo un seguimiento, de manera que `Counter` pueda "
+"hacer el seguimiento de cualquier tipo de valor."
#: src/std-types/exercise.md
msgid ""
-"If you finish early, try using the [`entry`](https://doc.rust-lang.org/"
-"stable/std/collections/struct.HashMap.html#method.entry) method to halve the "
-"number of hash lookups required to implement the `count` method."
+"If you finish early, try using the [`entry`](https://doc.rust-lang.org/stable/"
+"std/collections/struct.HashMap.html#method.entry) method to halve the number of "
+"hash lookups required to implement the `count` method."
msgstr ""
-"Si te sobra tiempo, prueba a usar el método [`entry`](https://doc.rust-lang."
-"org/stable/std/collections/struct.HashMap.html#method.entry) para reducir a "
-"la mitad el número de búsquedas de hash que se necesita para implementar el "
-"método `count`."
+"Si te sobra tiempo, prueba a usar el método [`entry`](https://doc.rust-lang.org/"
+"stable/std/collections/struct.HashMap.html#method.entry) para reducir a la "
+"mitad el número de búsquedas de hash que se necesita para implementar el método "
+"`count`."
#: src/std-types/exercise.md src/std-types/solution.md
msgid ""
@@ -7244,25 +7108,25 @@ msgstr "Default, sintaxis de actualización de structs"
#: src/std-traits.md
msgid ""
-"As with the standard-library types, spend time reviewing the documentation "
-"for each trait."
+"As with the standard-library types, spend time reviewing the documentation for "
+"each trait."
msgstr ""
-"Al igual que con los tipos de biblioteca estándar, dedica tiempo a revisar "
-"la documentación de cada trait."
+"Al igual que con los tipos de biblioteca estándar, dedica tiempo a revisar la "
+"documentación de cada trait."
#: src/std-traits.md
msgid "This section is long. Take a break midway through."
msgstr ""
-"Esta parte es larga, por lo que recomendamos tomar un descanso al llegar a "
-"la mitad."
+"Esta parte es larga, por lo que recomendamos tomar un descanso al llegar a la "
+"mitad."
#: src/std-traits/comparisons.md
msgid ""
-"These traits support comparisons between values. All traits can be derived "
-"for types containing fields that implement these traits."
+"These traits support comparisons between values. All traits can be derived for "
+"types containing fields that implement these traits."
msgstr ""
-"Estos traits permiten comparar valores. Se pueden derivar todos los traits "
-"de los tipos que contengan campos que implementen estos traits."
+"Estos traits permiten comparar valores. Se pueden derivar todos los traits de "
+"los tipos que contengan campos que implementen estos traits."
#: src/std-traits/comparisons.md
msgid "`PartialEq` and `Eq`"
@@ -7279,13 +7143,13 @@ msgstr ""
#: src/std-traits/comparisons.md
msgid ""
-"`Eq` is a full equivalence relation (reflexive, symmetric, and transitive) "
-"and implies `PartialEq`. Functions that require full equivalence will use "
-"`Eq` as a trait bound."
+"`Eq` is a full equivalence relation (reflexive, symmetric, and transitive) and "
+"implies `PartialEq`. Functions that require full equivalence will use `Eq` as a "
+"trait bound."
msgstr ""
"`Eq` es una relación de equivalencia completa (reflexiva, simétrica y "
-"transitiva) e implica `PartialEq`. Las funciones que requieren una "
-"equivalencia total usan `Eq` como límite del trait."
+"transitiva) e implica `PartialEq`. Las funciones que requieren una equivalencia "
+"total usan `Eq` como límite del trait."
#: src/std-traits/comparisons.md
msgid "`PartialOrd` and `Ord`"
@@ -7296,8 +7160,8 @@ msgid ""
"`PartialOrd` defines a partial ordering, with a `partial_cmp` method. It is "
"used to implement the `<`, `<=`, `>=`, and `>` operators."
msgstr ""
-"`PartialOrd` define un orden parcial, con un método `partial_cmp`. Se usa "
-"para implementar los operadores `<`, `<=`, `>=` y `>`."
+"`PartialOrd` define un orden parcial, con un método `partial_cmp`. Se usa para "
+"implementar los operadores `<`, `<=`, `>=` y `>`."
#: src/std-traits/comparisons.md
msgid "`Ord` is a total ordering, with `cmp` returning `Ordering`."
@@ -7308,21 +7172,20 @@ msgid ""
"`PartialEq` can be implemented between different types, but `Eq` cannot, "
"because it is reflexive:"
msgstr ""
-"`PartialEq` se puede implementar entre diferentes tipos, pero `Eq` no, ya "
-"que es reflexivo:"
+"`PartialEq` se puede implementar entre diferentes tipos, pero `Eq` no, ya que "
+"es reflexivo:"
#: src/std-traits/comparisons.md
msgid ""
-"In practice, it's common to derive these traits, but uncommon to implement "
-"them."
+"In practice, it's common to derive these traits, but uncommon to implement them."
msgstr ""
"En la práctica, es habitual derivar estos traits, aunque no se suelen "
"implementar."
#: src/std-traits/operators.md
msgid ""
-"Operator overloading is implemented via traits in [`std::ops`](https://doc."
-"rust-lang.org/std/ops/index.html):"
+"Operator overloading is implemented via traits in [`std::ops`](https://doc.rust-"
+"lang.org/std/ops/index.html):"
msgstr ""
"La sobrecarga de operadores se implementa mediante _traits_ en [`std::ops`]"
"(https://doc.rust-lang.org/std/ops/index.html):"
@@ -7346,10 +7209,9 @@ msgid ""
"the operator is not `Copy`, you should consider overloading the operator for "
"`&T` as well. This avoids unnecessary cloning on the call site."
msgstr ""
-"Respuesta: `Add:add` consume a `self`. Si el tipo `T` para el que se "
-"sobrecarga el operador no es `Copy`, deberías plantearte también sobrecargar "
-"el operador para `&T`. Así se evita la clonación innecesaria en el sitio de "
-"la llamada."
+"Respuesta: `Add:add` consume a `self`. Si el tipo `T` para el que se sobrecarga "
+"el operador no es `Copy`, deberías plantearte también sobrecargar el operador "
+"para `&T`. Así se evita la clonación innecesaria en el sitio de la llamada."
#: src/std-traits/operators.md
msgid ""
@@ -7362,30 +7224,29 @@ msgstr ""
#: src/std-traits/operators.md
msgid ""
"Short answer: Function type parameters are controlled by the caller, but "
-"associated types (like `Output`) are controlled by the implementer of a "
-"trait."
+"associated types (like `Output`) are controlled by the implementer of a trait."
msgstr ""
-"Respuesta corta: el llamador controla los parámetros tipo de la función, "
-"pero los tipos asociados (como `Output`) son controlados por el "
-"implementador de un trait."
+"Respuesta corta: el llamador controla los parámetros tipo de la función, pero "
+"los tipos asociados (como `Output`) son controlados por el implementador de un "
+"trait."
#: src/std-traits/operators.md
msgid ""
-"You could implement `Add` for two different types, e.g. `impl Add<(i32, "
-"i32)> for Point` would add a tuple to a `Point`."
+"You could implement `Add` for two different types, e.g. `impl Add<(i32, i32)> "
+"for Point` would add a tuple to a `Point`."
msgstr ""
"Se podría implementar `Add` para dos tipos distintos; por ejemplo, `impl "
"Add<(i32, i32)> for Point` añadiría una tupla a un `Point`."
#: src/std-traits/from-and-into.md
msgid ""
-"Types implement [`From`](https://doc.rust-lang.org/std/convert/trait.From."
-"html) and [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) to "
+"Types implement [`From`](https://doc.rust-lang.org/std/convert/trait.From.html) "
+"and [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) to "
"facilitate type conversions:"
msgstr ""
-"Los tipos implementan [`From`](https://doc.rust-lang.org/std/convert/trait."
-"From.html) y [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) "
-"para facilitar las conversiones de tipos:"
+"Los tipos implementan [`From`](https://doc.rust-lang.org/std/convert/trait.From."
+"html) y [`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) para "
+"facilitar las conversiones de tipos:"
#: src/std-traits/from-and-into.md
msgid "\"{s}, {addr}, {one}, {bigger}\""
@@ -7394,37 +7255,37 @@ msgstr "\"{s}, {addr}, {one}, {bigger}\""
#: src/std-traits/from-and-into.md
msgid ""
"[`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) is "
-"automatically implemented when [`From`](https://doc.rust-lang.org/std/"
-"convert/trait.From.html) is implemented:"
+"automatically implemented when [`From`](https://doc.rust-lang.org/std/convert/"
+"trait.From.html) is implemented:"
msgstr ""
-"[`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) se "
-"implementa automáticamente cuando se implementa [`From`](https://doc.rust-"
-"lang.org/std/convert/trait.From.html):"
+"[`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) se implementa "
+"automáticamente cuando se implementa [`From`](https://doc.rust-lang.org/std/"
+"convert/trait.From.html):"
#: src/std-traits/from-and-into.md
msgid ""
-"That's why it is common to only implement `From`, as your type will get "
-"`Into` implementation too."
+"That's why it is common to only implement `From`, as your type will get `Into` "
+"implementation too."
msgstr ""
-"Por eso se suele implementar solo `From`, ya que el tipo ya habrá "
-"implementado también `Into`."
+"Por eso se suele implementar solo `From`, ya que el tipo ya habrá implementado "
+"también `Into`."
#: src/std-traits/from-and-into.md
msgid ""
"When declaring a function argument input type like \"anything that can be "
-"converted into a `String`\", the rule is opposite, you should use `Into`. "
-"Your function will accept types that implement `From` and those that _only_ "
+"converted into a `String`\", the rule is opposite, you should use `Into`. Your "
+"function will accept types that implement `From` and those that _only_ "
"implement `Into`."
msgstr ""
-"Cuando se declara un tipo de entrada de argumento de función como "
-"\"cualquier elemento que se pueda convertir en `String`\", la regla es la "
-"contraria y se debe usar `Into`. La función aceptará tipos que implementen "
-"`From` y aquellos que _solo_ implementen `Into`."
+"Cuando se declara un tipo de entrada de argumento de función como \"cualquier "
+"elemento que se pueda convertir en `String`\", la regla es la contraria y se "
+"debe usar `Into`. La función aceptará tipos que implementen `From` y aquellos "
+"que _solo_ implementen `Into`."
#: src/std-traits/casting.md
msgid ""
-"Rust has no _implicit_ type conversions, but does support explicit casts "
-"with `as`. These generally follow C semantics where those are defined."
+"Rust has no _implicit_ type conversions, but does support explicit casts with "
+"`as`. These generally follow C semantics where those are defined."
msgstr ""
"Rust no tiene conversiones de tipo _implícitas_, pero admite conversiones "
"explícitas con `as`. Por lo general, se definen según la semántica de C."
@@ -7444,26 +7305,25 @@ msgstr "\"ya que u8: {}\""
#: src/std-traits/casting.md
msgid ""
"The results of `as` are _always_ defined in Rust and consistent across "
-"platforms. This might not match your intuition for changing sign or casting "
-"to a smaller type -- check the docs, and comment for clarity."
+"platforms. This might not match your intuition for changing sign or casting to "
+"a smaller type -- check the docs, and comment for clarity."
msgstr ""
-"Los resultados de `as` se definen _siempre_ en Rust y son coherentes en "
-"todas las plataformas. Es posible que no coincida con tu idea de cambiar el "
-"signo o convertirlo a otro de menor tamaño. Consulta los documentos y/o "
-"pregunta si tienes cualquier duda."
+"Los resultados de `as` se definen _siempre_ en Rust y son coherentes en todas "
+"las plataformas. Es posible que no coincida con tu idea de cambiar el signo o "
+"convertirlo a otro de menor tamaño. Consulta los documentos y/o pregunta si "
+"tienes cualquier duda."
#: src/std-traits/casting.md
msgid ""
-"Casting with `as` is a relatively sharp tool that is easy to use "
-"incorrectly, and can be a source of subtle bugs as future maintenance work "
-"changes the types that are used or the ranges of values in types. Casts are "
-"best used only when the intent is to indicate unconditional truncation (e.g. "
-"selecting the bottom 32 bits of a `u64` with `as u32`, regardless of what "
-"was in the high bits)."
+"Casting with `as` is a relatively sharp tool that is easy to use incorrectly, "
+"and can be a source of subtle bugs as future maintenance work changes the types "
+"that are used or the ranges of values in types. Casts are best used only when "
+"the intent is to indicate unconditional truncation (e.g. selecting the bottom "
+"32 bits of a `u64` with `as u32`, regardless of what was in the high bits)."
msgstr ""
-"La conversión con `as` es una herramienta relativamente precisa y fácil de "
-"usar de forma incorrecta. Puede ser una fuente de pequeños errores, ya que "
-"los futuros trabajos de mantenimiento cambian los tipos que se usan o los "
+"La conversión con `as` es una herramienta relativamente precisa y fácil de usar "
+"de forma incorrecta. Puede ser una fuente de pequeños errores, ya que los "
+"futuros trabajos de mantenimiento cambian los tipos que se usan o los "
"intervalos de valores de los tipos. Las conversiones se utilizan únicamente "
"cuando se quiere indicar un truncamiento incondicional (por ejemplo, "
"seleccionando los 32 bits inferiores de un `u64` con `as u32`, "
@@ -7471,17 +7331,16 @@ msgstr ""
#: src/std-traits/casting.md
msgid ""
-"For infallible casts (e.g. `u32` to `u64`), prefer using `From` or `Into` "
-"over `as` to confirm that the cast is in fact infallible. For fallible "
-"casts, `TryFrom` and `TryInto` are available when you want to handle casts "
-"that fit differently from those that don't."
+"For infallible casts (e.g. `u32` to `u64`), prefer using `From` or `Into` over "
+"`as` to confirm that the cast is in fact infallible. For fallible casts, "
+"`TryFrom` and `TryInto` are available when you want to handle casts that fit "
+"differently from those that don't."
msgstr ""
"En el caso de las conversiones que no sean falibles (por ejemplo, `u32` a "
-"`u64`), se recomienda utilizar `From` o `Into` en lugar de `as` para "
-"confirmar que la conversión es precisamente infalible. En el caso de las "
-"conversiones falibles, `TryFrom` y `TryInto` están disponibles cuando "
-"necesitas gestionar conversiones que se ajustan de forma diferente a las que "
-"no lo hacen."
+"`u64`), se recomienda utilizar `From` o `Into` en lugar de `as` para confirmar "
+"que la conversión es precisamente infalible. En el caso de las conversiones "
+"falibles, `TryFrom` y `TryInto` están disponibles cuando necesitas gestionar "
+"conversiones que se ajustan de forma diferente a las que no lo hacen."
#: src/std-traits/casting.md
msgid "Consider taking a break after this slide."
@@ -7489,12 +7348,11 @@ msgstr "Plantéate hacer una pausa después de esta diapositiva."
#: src/std-traits/casting.md
msgid ""
-"`as` is similar to a C++ static cast. Use of `as` in cases where data might "
-"be lost is generally discouraged, or at least deserves an explanatory "
-"comment."
+"`as` is similar to a C++ static cast. Use of `as` in cases where data might be "
+"lost is generally discouraged, or at least deserves an explanatory comment."
msgstr ""
-"`as` es similar a una conversión estática de C++. En general, se desaconseja "
-"el uso de `as` en los casos en los que puedan perderse datos, o al menos se "
+"`as` es similar a una conversión estática de C++. En general, se desaconseja el "
+"uso de `as` en los casos en los que puedan perderse datos, o al menos se "
"recomienda dejar un comentario explicativo."
#: src/std-traits/casting.md
@@ -7505,13 +7363,13 @@ msgstr ""
#: src/std-traits/read-and-write.md
msgid ""
-"Using [`Read`](https://doc.rust-lang.org/std/io/trait.Read.html) and "
-"[`BufRead`](https://doc.rust-lang.org/std/io/trait.BufRead.html), you can "
-"abstract over `u8` sources:"
+"Using [`Read`](https://doc.rust-lang.org/std/io/trait.Read.html) and [`BufRead`]"
+"(https://doc.rust-lang.org/std/io/trait.BufRead.html), you can abstract over "
+"`u8` sources:"
msgstr ""
-"Usando [`Read`](https://doc.rust-lang.org/std/io/trait.Read.html) y "
-"[`BufRead`](https://doc.rust-lang.org/std/io/trait.BufRead.html), se puede "
-"abstraer sobre fuentes `u8`:"
+"Usando [`Read`](https://doc.rust-lang.org/std/io/trait.Read.html) y [`BufRead`]"
+"(https://doc.rust-lang.org/std/io/trait.BufRead.html), se puede abstraer sobre "
+"fuentes `u8`:"
#: src/std-traits/read-and-write.md
msgid "b\"foo\\nbar\\nbaz\\n\""
@@ -7530,8 +7388,8 @@ msgid ""
"Similarly, [`Write`](https://doc.rust-lang.org/std/io/trait.Write.html) lets "
"you abstract over `u8` sinks:"
msgstr ""
-"De forma similar, [`Write`](https://doc.rust-lang.org/std/io/trait.Write."
-"html) te permite abstraer sobre fuentes `u8`:"
+"De forma similar, [`Write`](https://doc.rust-lang.org/std/io/trait.Write.html) "
+"te permite abstraer sobre fuentes `u8`:"
#: src/std-traits/read-and-write.md
msgid "\"\\n\""
@@ -7550,8 +7408,8 @@ msgid ""
"[`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) trait "
"produces a default value for a type."
msgstr ""
-"El trait [`Default`](https://doc.rust-lang.org/std/default/trait.Default."
-"html) produce un valor predeterminado para un tipo."
+"El trait [`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) "
+"produce un valor predeterminado para un tipo."
#: src/std-traits/default.md
msgid "\"John Smith\""
@@ -7569,8 +7427,7 @@ msgstr "\"Ya está configurado.\""
msgid "\"{almost_default_struct:#?}\""
msgstr "\"{almost_default_struct:#?}\""
-#: src/std-traits/default.md src/lifetimes/exercise.md
-#: src/lifetimes/solution.md
+#: src/std-traits/default.md src/lifetimes/exercise.md src/lifetimes/solution.md
msgid "\"{:#?}\""
msgstr "\"{:#?}\""
@@ -7583,8 +7440,8 @@ msgstr ""
#: src/std-traits/default.md
msgid ""
-"A derived implementation will produce a value where all fields are set to "
-"their default values."
+"A derived implementation will produce a value where all fields are set to their "
+"default values."
msgstr ""
"Una implementación derivada producirá un valor en el que todos los campos "
"tendrán sus valores predeterminados."
@@ -7592,16 +7449,16 @@ msgstr ""
#: src/std-traits/default.md
msgid "This means all types in the struct must implement `Default` too."
msgstr ""
-"Esto significa que todos los tipos de la estructura también deberán "
-"implementar `Default`."
+"Esto significa que todos los tipos de la estructura también deberán implementar "
+"`Default`."
#: src/std-traits/default.md
msgid ""
-"Standard Rust types often implement `Default` with reasonable values (e.g. "
-"`0`, `\"\"`, etc)."
+"Standard Rust types often implement `Default` with reasonable values (e.g. `0`, "
+"`\"\"`, etc)."
msgstr ""
-"Los tipos estándar de Rust suelen implementar `Default` con valores "
-"razonables (por ejemplo, `0`, `\"\"`, etc.)."
+"Los tipos estándar de Rust suelen implementar `Default` con valores razonables "
+"(por ejemplo, `0`, `\"\"`, etc.)."
#: src/std-traits/default.md
msgid "The partial struct initialization works nicely with default."
@@ -7614,32 +7471,30 @@ msgid ""
"The Rust standard library is aware that types can implement `Default` and "
"provides convenience methods that use it."
msgstr ""
-"La biblioteca estándar de Rust tiene en cuenta que los tipos pueden "
-"implementar `Default` y, por ello, proporciona métodos prácticos que lo "
-"utilizan."
+"La biblioteca estándar de Rust tiene en cuenta que los tipos pueden implementar "
+"`Default` y, por ello, proporciona métodos prácticos que lo utilizan."
#: src/std-traits/default.md
msgid ""
-"The `..` syntax is called [struct update syntax](https://doc.rust-lang.org/"
-"book/ch05-01-defining-structs.html#creating-instances-from-other-instances-"
-"with-struct-update-syntax)."
+"The `..` syntax is called [struct update syntax](https://doc.rust-lang.org/book/"
+"ch05-01-defining-structs.html#creating-instances-from-other-instances-with-"
+"struct-update-syntax)."
msgstr ""
-"la sintaxis `..` se denomina [sintaxis de actualización de estructuras]"
-"(https://doc.rust-lang.org/book/ch05-01-defining-structs.html#creating-"
-"instances-from-other-instances-with-struct-update-syntax)."
+"la sintaxis `..` se denomina [sintaxis de actualización de estructuras](https://"
+"doc.rust-lang.org/book/ch05-01-defining-structs.html#creating-instances-from-"
+"other-instances-with-struct-update-syntax)."
#: src/std-traits/closures.md
msgid ""
-"Closures or lambda expressions have types which cannot be named. However, "
-"they implement special [`Fn`](https://doc.rust-lang.org/std/ops/trait.Fn."
-"html), [`FnMut`](https://doc.rust-lang.org/std/ops/trait.FnMut.html), and "
-"[`FnOnce`](https://doc.rust-lang.org/std/ops/trait.FnOnce.html) traits:"
+"Closures or lambda expressions have types which cannot be named. However, they "
+"implement special [`Fn`](https://doc.rust-lang.org/std/ops/trait.Fn.html), "
+"[`FnMut`](https://doc.rust-lang.org/std/ops/trait.FnMut.html), and [`FnOnce`]"
+"(https://doc.rust-lang.org/std/ops/trait.FnOnce.html) traits:"
msgstr ""
"Los cierres o expresiones lambda tienen tipos que no pueden nombrarse. Sin "
-"embargo, implementan _traits_ especiales [`Fn`](https://doc.rust-lang.org/"
-"std/ops/trait.Fn.html), [`FnMut`](https://doc.rust-lang.org/std/ops/trait."
-"FnMut.html) y [`FnOnce`](https://doc.rust-lang.org/std/ops/trait.FnOnce."
-"html):"
+"embargo, implementan _traits_ especiales [`Fn`](https://doc.rust-lang.org/std/"
+"ops/trait.Fn.html), [`FnMut`](https://doc.rust-lang.org/std/ops/trait.FnMut."
+"html) y [`FnOnce`](https://doc.rust-lang.org/std/ops/trait.FnOnce.html):"
#: src/std-traits/closures.md
msgid "\"Calling function on {input}\""
@@ -7659,40 +7514,39 @@ msgstr "\"multiply_sum: {}\""
#: src/std-traits/closures.md
msgid ""
-"An `Fn` (e.g. `add_3`) neither consumes nor mutates captured values, or "
-"perhaps captures nothing at all. It can be called multiple times "
-"concurrently."
+"An `Fn` (e.g. `add_3`) neither consumes nor mutates captured values, or perhaps "
+"captures nothing at all. It can be called multiple times concurrently."
msgstr ""
-"Un `Fn` (por ejemplo, `add_3`) no consume ni modifica los valores "
-"capturados, o quizá no captura nada en absoluto. Se puede llamar varias "
-"veces al mismo tiempo."
+"Un `Fn` (por ejemplo, `add_3`) no consume ni modifica los valores capturados, o "
+"quizá no captura nada en absoluto. Se puede llamar varias veces al mismo "
+"tiempo."
#: src/std-traits/closures.md
msgid ""
"An `FnMut` (e.g. `accumulate`) might mutate captured values. You can call it "
"multiple times, but not concurrently."
msgstr ""
-"Un `FnMut` (por ejemplo, `accumulate`) puede modificar los valores "
-"capturados. Se puede llamar varias veces, pero no de forma simultánea."
+"Un `FnMut` (por ejemplo, `accumulate`) puede modificar los valores capturados. "
+"Se puede llamar varias veces, pero no de forma simultánea."
#: src/std-traits/closures.md
msgid ""
"If you have an `FnOnce` (e.g. `multiply_sum`), you may only call it once. It "
"might consume captured values."
msgstr ""
-"Si tienes un `FnOnce` (por ejemplo, `multiply_sum`), solo puedes llamarlo "
-"una vez. Puede consumir valores capturados."
+"Si tienes un `FnOnce` (por ejemplo, `multiply_sum`), solo puedes llamarlo una "
+"vez. Puede consumir valores capturados."
#: src/std-traits/closures.md
msgid ""
-"`FnMut` is a subtype of `FnOnce`. `Fn` is a subtype of `FnMut` and `FnOnce`. "
-"I.e. you can use an `FnMut` wherever an `FnOnce` is called for, and you can "
-"use an `Fn` wherever an `FnMut` or `FnOnce` is called for."
+"`FnMut` is a subtype of `FnOnce`. `Fn` is a subtype of `FnMut` and `FnOnce`. I."
+"e. you can use an `FnMut` wherever an `FnOnce` is called for, and you can use "
+"an `Fn` wherever an `FnMut` or `FnOnce` is called for."
msgstr ""
-"`FnMut` es un subtipo de `FnOnce`, mientras que `Fn` es un subtipo de "
-"`FnMut` y `FnOnce`. Es decir, puedes utilizar un `FnMut` siempre que se "
-"llame a un `FnOnce`, y puedes usar un `Fn` siempre que se llame a un `FnMut` "
-"o a un `FnOnce`."
+"`FnMut` es un subtipo de `FnOnce`, mientras que `Fn` es un subtipo de `FnMut` y "
+"`FnOnce`. Es decir, puedes utilizar un `FnMut` siempre que se llame a un "
+"`FnOnce`, y puedes usar un `Fn` siempre que se llame a un `FnMut` o a un "
+"`FnOnce`."
#: src/std-traits/closures.md
msgid ""
@@ -7701,18 +7555,17 @@ msgid ""
"the most flexibility for the caller."
msgstr ""
"Cuando defines una función que admite un closure, debes usar `FnOnce` si es "
-"posible (es decir, se llama una vez) o, en su defecto, `FnMut`. En último "
-"lugar estaría `Fn`. De esta forma, se ofrece la máxima flexibilidad al "
-"llamador."
+"posible (es decir, se llama una vez) o, en su defecto, `FnMut`. En último lugar "
+"estaría `Fn`. De esta forma, se ofrece la máxima flexibilidad al llamador."
#: src/std-traits/closures.md
msgid ""
"In contrast, when you have a closure, the most flexible you can have is `Fn` "
"(it can be passed everywhere), then `FnMut`, and lastly `FnOnce`."
msgstr ""
-"Por el contrario, cuando tienes un cierre (closure), lo más flexible que "
-"puedes tener es `Fn` (se puede transmitir en todas partes), a continuación "
-"`FnMut` y, por último, `FnOnce`."
+"Por el contrario, cuando tienes un cierre (closure), lo más flexible que puedes "
+"tener es `Fn` (se puede transmitir en todas partes), a continuación `FnMut` y, "
+"por último, `FnOnce`."
#: src/std-traits/closures.md
msgid ""
@@ -7724,8 +7577,8 @@ msgstr ""
#: src/std-traits/closures.md
msgid ""
-"By default, closures will capture by reference if they can. The `move` "
-"keyword makes them capture by value."
+"By default, closures will capture by reference if they can. The `move` keyword "
+"makes them capture by value."
msgstr ""
"De forma predeterminada, los cierres capturan, si pueden, por referencia. La "
"palabra clave `move` hace que capturen por valor."
@@ -7744,10 +7597,10 @@ msgstr "\"Greg\""
#: src/std-traits/exercise.md
msgid ""
-"In this example, you will implement the classic [\"ROT13\" cipher](https://"
-"en.wikipedia.org/wiki/ROT13). Copy this code to the playground, and "
-"implement the missing bits. Only rotate ASCII alphabetic characters, to "
-"ensure the result is still valid UTF-8."
+"In this example, you will implement the classic [\"ROT13\" cipher](https://en."
+"wikipedia.org/wiki/ROT13). Copy this code to the playground, and implement the "
+"missing bits. Only rotate ASCII alphabetic characters, to ensure the result is "
+"still valid UTF-8."
msgstr ""
"En este ejemplo, implementaremos el algoritmo de cifrado clásico [\"ROT13\"]"
"(https://en.wikipedia.org/wiki/ROT13). Copia este código en el playground e "
@@ -7768,11 +7621,11 @@ msgstr "\"To get to the other side!\""
#: src/std-traits/exercise.md
msgid ""
-"What happens if you chain two `RotDecoder` instances together, each rotating "
-"by 13 characters?"
+"What happens if you chain two `RotDecoder` instances together, each rotating by "
+"13 characters?"
msgstr ""
-"¿Qué ocurre si encadenas dos instancias `RotDecoder` y cada una de ellas "
-"rota 13 posiciones?"
+"¿Qué ocurre si encadenas dos instancias `RotDecoder` y cada una de ellas rota "
+"13 posiciones?"
#: src/std-traits/solution.md
msgid "'A'"
@@ -7788,11 +7641,11 @@ msgstr "Hoy trataremos los siguientes puntos:"
#: src/welcome-day-3.md
msgid ""
-"Memory management, lifetimes, and the borrow checker: how Rust ensures "
-"memory safety."
+"Memory management, lifetimes, and the borrow checker: how Rust ensures memory "
+"safety."
msgstr ""
-"Gestión de la memoria, _lifetimes_ y el _borrow checker_: cómo garantiza "
-"Rust la seguridad de la memoria."
+"Gestión de la memoria, _lifetimes_ y el _borrow checker_: cómo garantiza Rust "
+"la seguridad de la memoria."
#: src/welcome-day-3.md
msgid "Smart pointers: standard library pointer types."
@@ -7803,8 +7656,8 @@ msgid ""
"Including 10 minute breaks, this session should take about 2 hours and 20 "
"minutes. It contains:"
msgstr ""
-"Contando con los descansos de 10 minutos, la duración prevista de la sesión "
-"es de unas 2 horas y 20 minutos. Contiene:"
+"Contando con los descansos de 10 minutos, la duración prevista de la sesión es "
+"de unas 2 horas y 20 minutos. Contiene:"
#: src/memory-management.md src/memory-management/clone.md
msgid "Clone"
@@ -7859,17 +7712,17 @@ msgid ""
"Creating a `String` puts fixed-sized metadata on the stack and dynamically "
"sized data, the actual string, on the heap:"
msgstr ""
-"Al crear un `String`, los metadatos de tamaño fijo se colocan en la _stack_ "
-"y los datos de tamaño dinámico (la cadena real) en el _heap_:"
+"Al crear un `String`, los metadatos de tamaño fijo se colocan en la _stack_ y "
+"los datos de tamaño dinámico (la cadena real) en el _heap_:"
#: src/memory-management/review.md
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."
+"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."
msgstr ""
"Menciona que un `String` está respaldado por un `Vec`, por lo que tiene "
-"capacidad y longitud y, si es mutable, puede crecer mediante reasignación en "
-"el _heap_."
+"capacidad y longitud y, si es mutable, puede crecer mediante reasignación en el "
+"_heap_."
#: src/memory-management/review.md
msgid ""
@@ -7878,16 +7731,16 @@ msgid ""
"struct.System.html) and custom allocators can be implemented using the "
"[Allocator API](https://doc.rust-lang.org/std/alloc/index.html)"
msgstr ""
-"Si los alumnos lo preguntan, puedes mencionar que la memoria subyacente "
-"recibe una asignación de _heap_ mediante el [Asignador del Sistema](https://"
-"doc.rust-lang.org/std/alloc/struct.System.html) y que se pueden implementar "
-"asignadores personalizados mediante el [_Allocator API_](https://doc.rust-"
-"lang.org/std/alloc/index.html)."
+"Si los alumnos lo preguntan, puedes mencionar que la memoria subyacente recibe "
+"una asignación de _heap_ mediante el [Asignador del Sistema](https://doc.rust-"
+"lang.org/std/alloc/struct.System.html) y que se pueden implementar asignadores "
+"personalizados mediante el [_Allocator API_](https://doc.rust-lang.org/std/"
+"alloc/index.html)."
#: src/memory-management/review.md
msgid ""
-"We can inspect the memory layout with `unsafe` Rust. However, you should "
-"point out that this is rightfully unsafe!"
+"We can inspect the memory layout with `unsafe` Rust. However, you should point "
+"out that this is rightfully unsafe!"
msgstr ""
"Podemos inspeccionar la disposición de la memoria con código `unsafe`. Sin "
"embargo, debes señalar que esto no es seguro."
@@ -7903,8 +7756,7 @@ msgstr "\"mundo\""
#: src/memory-management/review.md
msgid ""
"// 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"
msgstr ""
"// ¡NO HAGÁIS ESTO EN CASA! Solo con fines educativos.\n"
@@ -7923,16 +7775,14 @@ msgstr "Tradicionalmente, los lenguajes se dividen en dos grandes categorías:"
#: src/memory-management/approaches.md
msgid "Full control via manual memory management: C, C++, Pascal, ..."
msgstr ""
-"Control total a través de la gestión manual de la memoria: C, C++, Pascal, "
-"etc."
+"Control total a través de la gestión manual de la memoria: C, C++, Pascal, etc."
#: src/memory-management/approaches.md
msgid "Programmer decides when to allocate or free heap memory."
msgstr "El programador decide cuándo asignar o liberar memoria del montículo."
#: src/memory-management/approaches.md
-msgid ""
-"Programmer must determine whether a pointer still points to valid memory."
+msgid "Programmer must determine whether a pointer still points to valid memory."
msgstr ""
"El programador debe determinar si un puntero aún apunta a una memoria válida."
@@ -7953,8 +7803,8 @@ msgid ""
"A runtime system ensures that memory is not freed until it can no longer be "
"referenced."
msgstr ""
-"Un sistema de tiempo de ejecución asegura que la memoria no se libera hasta "
-"que ya no se pueda hacer referencia a ella."
+"Un sistema de tiempo de ejecución asegura que la memoria no se libera hasta que "
+"ya no se pueda hacer referencia a ella."
#: src/memory-management/approaches.md
msgid ""
@@ -7972,89 +7822,88 @@ msgid ""
"Full control _and_ safety via compile time enforcement of correct memory "
"management."
msgstr ""
-"Control completo _y_ seguridad completa gracias a que el compilador se "
-"encarga del manejo correcto de la memoria."
+"Control completo _y_ seguridad completa gracias a que el compilador se encarga "
+"del manejo correcto de la memoria."
#: src/memory-management/approaches.md
msgid "It does this with an explicit ownership concept."
-msgstr ""
-"Para ello, se utiliza un concepto de _ownership_ (propiedad) explícito."
+msgstr "Para ello, se utiliza un concepto de _ownership_ (propiedad) explícito."
#: src/memory-management/approaches.md
msgid ""
-"This slide is intended to help students coming from other languages to put "
-"Rust in context."
+"This slide is intended to help students coming from other languages to put Rust "
+"in context."
msgstr ""
-"El objetivo de esta diapositiva es ayudar a los estudiantes de otros "
-"lenguajes a entender mejor Rust."
+"El objetivo de esta diapositiva es ayudar a los estudiantes de otros lenguajes "
+"a entender mejor Rust."
#: src/memory-management/approaches.md
msgid ""
"C must manage heap manually with `malloc` and `free`. Common errors include "
-"forgetting to call `free`, calling it multiple times for the same pointer, "
-"or dereferencing a pointer after the memory it points to has been freed."
+"forgetting to call `free`, calling it multiple times for the same pointer, or "
+"dereferencing a pointer after the memory it points to has been freed."
msgstr ""
-"C debe gestionar el montículo de forma manual con `malloc` y `free`. Entre "
-"los errores habituales se incluyen olvidarse de llamar a `free`, llamarlo "
-"varias veces para el mismo puntero o desreferenciar un puntero después de "
-"que se haya liberado la memoria a la que apunta."
+"C debe gestionar el montículo de forma manual con `malloc` y `free`. Entre los "
+"errores habituales se incluyen olvidarse de llamar a `free`, llamarlo varias "
+"veces para el mismo puntero o desreferenciar un puntero después de que se haya "
+"liberado la memoria a la que apunta."
#: src/memory-management/approaches.md
msgid ""
"C++ has tools like smart pointers (`unique_ptr`, `shared_ptr`) that take "
-"advantage of language guarantees about calling destructors to ensure memory "
-"is freed when a function returns. It is still quite easy to mis-use these "
-"tools and create similar bugs to C."
+"advantage of language guarantees about calling destructors to ensure memory is "
+"freed when a function returns. It is still quite easy to mis-use these tools "
+"and create similar bugs to C."
msgstr ""
"C++ tiene herramientas como los punteros inteligentes (`unique_ptr` y "
"`shared_ptr`) que aprovechan las garantías del lenguaje sobre la llamada a "
"destructores para garantizar que la memoria se libere cuando se devuelva una "
-"función. Sin embargo, es fácil hacer un uso inadecuado de estas herramientas "
-"y crear errores similares a los de C."
+"función. Sin embargo, es fácil hacer un uso inadecuado de estas herramientas y "
+"crear errores similares a los de C."
#: src/memory-management/approaches.md
msgid ""
-"Java, Go, and Python rely on the garbage collector to identify memory that "
-"is no longer reachable and discard it. This guarantees that any pointer can "
-"be dereferenced, eliminating use-after-free and other classes of bugs. But, "
-"GC has a runtime cost and is difficult to tune properly."
+"Java, Go, and Python rely on the garbage collector to identify memory that is "
+"no longer reachable and discard it. This guarantees that any pointer can be "
+"dereferenced, eliminating use-after-free and other classes of bugs. But, GC has "
+"a runtime cost and is difficult to tune properly."
msgstr ""
"Java, Go y Python utilizan el recolector de elementos no utilizados para "
"identificar la memoria a la que ya no se puede acceder y descartarla. Esto "
-"asegura que se pueda desreferenciar cualquier puntero, de forma que se "
-"eliminan los errores use-after-free y otros tipos de errores. Sin embargo, "
-"el recolector de elementos no utilizados tiene un coste de tiempo de "
-"ejecución y es difícil ajustarlo adecuadamente."
+"asegura que se pueda desreferenciar cualquier puntero, de forma que se eliminan "
+"los errores use-after-free y otros tipos de errores. Sin embargo, el recolector "
+"de elementos no utilizados tiene un coste de tiempo de ejecución y es difícil "
+"ajustarlo adecuadamente."
#: src/memory-management/approaches.md
msgid ""
-"Rust's ownership and borrowing model can, in many cases, get the performance "
-"of C, with alloc and free operations precisely where they are required -- "
-"zero cost. It also provides tools similar to C++'s smart pointers. When "
-"required, other options such as reference counting are available, and there "
-"are even third-party crates available to support runtime garbage collection "
-"(not covered in this class)."
+"Rust's ownership and borrowing model can, in many cases, get the performance of "
+"C, with alloc and free operations precisely where they are required -- zero "
+"cost. It also provides tools similar to C++'s smart pointers. When required, "
+"other options such as reference counting are available, and there are even "
+"third-party crates available to support runtime garbage collection (not covered "
+"in this class)."
msgstr ""
"El modelo de propiedad y préstamo de Rust puede, en muchos casos, permitir "
"obtener el rendimiento de C, con operaciones asignadas y libres donde se "
"necesiten y sin coste. También proporciona herramientas similares a los "
-"punteros inteligentes de C++. Si es necesario, hay disponibles otras "
-"opciones, como el recuento de referencias, e incluso hay crates de terceros "
-"que admiten la recolección de elementos no utilizados del tiempo de "
-"ejecución (estos elementos no se tratan en esta clase)."
+"punteros inteligentes de C++. Si es necesario, hay disponibles otras opciones, "
+"como el recuento de referencias, e incluso hay crates de terceros que admiten "
+"la recolección de elementos no utilizados del tiempo de ejecución (estos "
+"elementos no se tratan en esta clase)."
#: src/memory-management/ownership.md
msgid ""
-"All variable bindings have a _scope_ where they are valid and it is an error "
-"to use a variable outside its scope:"
+"All variable bindings have a _scope_ where they are valid and it is an error to "
+"use a variable outside its scope:"
msgstr ""
-"Todos los enlaces a variables tienen un _ámbito_ donde son válidos y se "
-"produce un error cuando se usan fuera de él:"
+"Todos los enlaces a variables tienen un _ámbito_ donde son válidos y se produce "
+"un error cuando se usan fuera de él:"
#: src/memory-management/ownership.md
msgid ""
-"We say that the variable _owns_ the value. Every Rust value has precisely "
-"one owner at all times."
+"We say that the variable _owns_ the value. Every Rust value has precisely one "
+"owner at all times."
msgstr ""
"Decimos que el valor _pertenece_ a la variable. Cada valor en Rust tiene "
"exactamente un dueño en todo tiempo."
@@ -8070,14 +7919,13 @@ msgstr ""
#: src/memory-management/ownership.md
msgid ""
"Students familiar with garbage-collection implementations will know that a "
-"garbage collector starts with a set of \"roots\" to find all reachable "
-"memory. Rust's \"single owner\" principle is a similar idea."
+"garbage collector starts with a set of \"roots\" to find all reachable memory. "
+"Rust's \"single owner\" principle is a similar idea."
msgstr ""
"Los participantes que estén familiarizados con las implementaciones de "
"recolección de elementos no utilizados sabrán que este tipo de recolector "
-"comienza con un conjunto de \"raíces\" para buscar toda la memoria "
-"disponible. El principio de \"propietario único\" de Rust es una idea "
-"similar."
+"comienza con un conjunto de \"raíces\" para buscar toda la memoria disponible. "
+"El principio de \"propietario único\" de Rust es una idea similar."
#: src/memory-management/move.md
msgid "An assignment will transfer _ownership_ between variables:"
@@ -8097,8 +7945,7 @@ msgstr "La asignación de `s1` a `s2` transfiere el _ownership_."
#: src/memory-management/move.md
msgid "When `s1` goes out of scope, nothing happens: it does not own anything."
-msgstr ""
-"Cuando `s1` queda fuera del ámbito, no ocurre nada: no le pertenece nada."
+msgstr "Cuando `s1` queda fuera del ámbito, no ocurre nada: no le pertenece nada."
#: src/memory-management/move.md
msgid "When `s2` goes out of scope, the string data is freed."
@@ -8179,8 +8026,8 @@ msgstr "// say_hello(name);\n"
#: src/memory-management/move.md
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!)."
+"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!)."
msgstr ""
"Menciona que es lo contrario de los valores predeterminados de C++, que se "
"copian por valor, a menos que utilices `std::move` (y que el constructor de "
@@ -8188,20 +8035,19 @@ msgstr ""
#: src/memory-management/move.md
msgid ""
-"It is only the ownership that moves. Whether any machine code is generated "
-"to manipulate the data itself is a matter of optimization, and such copies "
-"are aggressively optimized away."
+"It is only the ownership that moves. Whether any machine code is generated to "
+"manipulate the data itself is a matter of optimization, and such copies are "
+"aggressively optimized away."
msgstr ""
-"Es únicamente el ownership el que se mueve. Si se genera algún código "
-"máquina para manipular los datos en sí, se trata de una cuestión de "
-"optimización, y esas copias se optimizan de forma agresiva."
+"Es únicamente el ownership el que se mueve. Si se genera algún código máquina "
+"para manipular los datos en sí, se trata de una cuestión de optimización, y "
+"esas copias se optimizan de forma agresiva."
#: src/memory-management/move.md
-msgid ""
-"Simple values (such as integers) can be marked `Copy` (see later slides)."
+msgid "Simple values (such as integers) can be marked `Copy` (see later slides)."
msgstr ""
-"Los valores simples (como los enteros) se pueden marcar como `Copy` "
-"(consulta las diapositivas posteriores)."
+"Los valores simples (como los enteros) se pueden marcar como `Copy` (consulta "
+"las diapositivas posteriores)."
#: src/memory-management/move.md
msgid "In Rust, clones are explicit (by using `clone`)."
@@ -8229,11 +8075,11 @@ msgstr ""
#: src/memory-management/move.md
msgid ""
-"`main` can retain ownership if it passes `name` as a reference (`&name`) and "
-"if `say_hello` accepts a reference as a parameter."
+"`main` can retain ownership if it passes `name` as a reference (`&name`) and if "
+"`say_hello` accepts a reference as a parameter."
msgstr ""
-"main` podrá conservar el _ownership_ si pasa`name` como referencia (`&name`) "
-"y si `say_hello` acepta una referencia como parámetro."
+"main` podrá conservar el _ownership_ si pasa`name` como referencia (`&name`) y "
+"si `say_hello` acepta una referencia como parámetro."
#: src/memory-management/move.md
msgid ""
@@ -8248,9 +8094,9 @@ msgid ""
"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 ""
-"Rust hace que resulte más difícil que en C++ crear copias por error al "
-"definir la semántica de movimiento como predeterminada y al obligar a los "
-"programadores a clonar sólo de forma explícita."
+"Rust hace que resulte más difícil que en C++ crear copias por error al definir "
+"la semántica de movimiento como predeterminada y al obligar a los programadores "
+"a clonar sólo de forma explícita."
#: src/memory-management/move.md
msgid "Defensive Copies in Modern C++"
@@ -8277,8 +8123,7 @@ msgstr ""
#: src/memory-management/move.md
msgid "When `s1` and `s2` go out of scope, they each free their own memory."
-msgstr ""
-"Cuando `s1` y `s2` salen del ámbito, cada uno libera su propia memoria."
+msgstr "Cuando `s1` y `s2` salen del ámbito, cada uno libera su propia memoria."
#: src/memory-management/move.md
msgid "Before copy-assignment:"
@@ -8302,29 +8147,28 @@ msgstr ""
msgid ""
"C++ also has [`std::move`](https://en.cppreference.com/w/cpp/utility/move), "
"which is used to indicate when a value may be moved from. If the example had "
-"been `s2 = std::move(s1)`, no heap allocation would take place. After the "
-"move, `s1` would be in a valid but unspecified state. Unlike Rust, the "
-"programmer is allowed to keep using `s1`."
+"been `s2 = std::move(s1)`, no heap allocation would take place. After the move, "
+"`s1` would be in a valid but unspecified state. Unlike Rust, the programmer is "
+"allowed to keep using `s1`."
msgstr ""
"C++ también tiene [`std::move`](https://en.cppreference.com/w/cpp/utility/"
"move), que se usa para indicar cuándo se puede mover un valor. Si el ejemplo "
-"hubiera sido `s2 = std::move(s1)`, no se llevaría a cabo ninguna asignación "
-"de montículo. Después del movimiento, `s1` tendría un estado válido, pero no "
-"especificado. A diferencia de Rust, el programador puede seguir utilizando "
-"`s1`."
+"hubiera sido `s2 = std::move(s1)`, no se llevaría a cabo ninguna asignación de "
+"montículo. Después del movimiento, `s1` tendría un estado válido, pero no "
+"especificado. A diferencia de Rust, el programador puede seguir utilizando `s1`."
#: src/memory-management/move.md
msgid ""
-"Unlike Rust, `=` in C++ can run arbitrary code as determined by the type "
-"which is being copied or moved."
+"Unlike Rust, `=` in C++ can run arbitrary code as determined by the type which "
+"is being copied or moved."
msgstr ""
-"A diferencia de Rust, en C++ se puede ejecutar código arbitrario con `=` "
-"según el tipo que se vaya a copiar o mover."
+"A diferencia de Rust, en C++ se puede ejecutar código arbitrario con `=` según "
+"el tipo que se vaya a copiar o mover."
#: src/memory-management/clone.md
msgid ""
-"Sometimes you _want_ to make a copy of a value. The `Clone` trait "
-"accomplishes this."
+"Sometimes you _want_ to make a copy of a value. The `Clone` trait accomplishes "
+"this."
msgstr ""
"Cuando _queramos_ hacer una copia de un valor, podemos hacerlo con el trait "
"`Clone`."
@@ -8340,16 +8184,16 @@ msgstr ""
#: src/memory-management/clone.md
msgid ""
-"It's common to \"clone your way out\" of problems with the borrow checker, "
-"and return later to try to optimize those clones away."
+"It's common to \"clone your way out\" of problems with the borrow checker, and "
+"return later to try to optimize those clones away."
msgstr ""
"Es habitual \"clonar para salir\" de los problemas con el verificador de "
"préstamos y volver más tarde para optimizar esos clones."
#: src/memory-management/clone.md
msgid ""
-"`clone` generally performs a deep copy of the value, meaning that if you e."
-"g. clone an array, all of the elements of the array are cloned as well."
+"`clone` generally performs a deep copy of the value, meaning that if you e.g. "
+"clone an array, all of the elements of the array are cloned as well."
msgstr ""
"`clone` generalmente realiza una copia a fondo del valor. Por ejemplo, si "
"clonas un array, todos los elementos del array tambien son clonados."
@@ -8363,11 +8207,10 @@ msgstr ""
"realizar lógica personalizada de clonación si es necesario."
#: src/memory-management/copy-types.md
-msgid ""
-"While move semantics are the default, certain types are copied by default:"
+msgid "While move semantics are the default, certain types are copied by default:"
msgstr ""
-"Aunque la semántica de movimiento es la opción predeterminada, algunos tipos "
-"se copian de forma predeterminada:"
+"Aunque la semántica de movimiento es la opción predeterminada, algunos tipos se "
+"copian de forma predeterminada:"
#: src/memory-management/copy-types.md
msgid "These types implement the `Copy` trait."
@@ -8375,19 +8218,16 @@ msgstr "Estos tipos implementan el trait `Copy`."
#: src/memory-management/copy-types.md
msgid "You can opt-in your own types to use copy semantics:"
-msgstr ""
-"Puedes habilitar tus propios tipos para que usen la semántica de copia:"
+msgstr "Puedes habilitar tus propios tipos para que usen la semántica de copia:"
#: src/memory-management/copy-types.md
msgid "After the assignment, both `p1` and `p2` own their own data."
-msgstr ""
-"Después de la asignación, tanto `p1` como `p2` tienen sus propios datos."
+msgstr "Después de la asignación, tanto `p1` como `p2` tienen sus propios datos."
#: src/memory-management/copy-types.md
msgid "We can also use `p1.clone()` to explicitly copy the data."
msgstr ""
-"También podemos utilizar `p1.clone()` para copiar los datos de forma "
-"explícita."
+"También podemos utilizar `p1.clone()` para copiar los datos de forma explícita."
#: src/memory-management/copy-types.md
msgid "Copying and cloning are not the same thing:"
@@ -8402,8 +8242,7 @@ msgstr ""
"funciona en cualquier objeto."
#: src/memory-management/copy-types.md
-msgid ""
-"Copying does not allow for custom logic (unlike copy constructors in C++)."
+msgid "Copying does not allow for custom logic (unlike copy constructors in C++)."
msgstr ""
"Copiar no permite lógica personalizada (a diferencia de los constructores de "
"copias de C++)."
@@ -8426,11 +8265,11 @@ msgstr "En el ejemplo anterior, prueba lo siguiente:"
#: src/memory-management/copy-types.md
msgid ""
-"Add a `String` field to `struct Point`. It will not compile because `String` "
-"is not a `Copy` type."
+"Add a `String` field to `struct Point`. It will not compile because `String` is "
+"not a `Copy` type."
msgstr ""
-"Añade un campo `String` a `struct Point`. No se compilará porque `String` no "
-"es de tipo `Copy`."
+"Añade un campo `String` a `struct Point`. No se compilará porque `String` no es "
+"de tipo `Copy`."
#: src/memory-management/copy-types.md
msgid ""
@@ -8447,15 +8286,15 @@ msgstr "Demuestra que funciona si clonas `p1`."
#: src/memory-management/copy-types.md
msgid ""
"Shared references are `Copy`/`Clone`, mutable references are not. This is "
-"because rust requires that mutable references be exclusive, so while it's "
-"valid to make a copy of a shared reference, creating a copy of a mutable "
-"reference would violate Rust's borrowing rules."
+"because rust requires that mutable references be exclusive, so while it's valid "
+"to make a copy of a shared reference, creating a copy of a mutable reference "
+"would violate Rust's borrowing rules."
msgstr ""
"Referencias compartidas son `Copy`/`Clone`, pero referencias mutables no lo "
-"son. Esto es porque Rust requiere que las referencias mutables sean "
-"exclusivas. Esto significa que es valido hacer una copia de una referencia "
-"compartida, pero hacer lo mismo para una referencia mutable violaría las "
-"reglas de préstamo de Rust."
+"son. Esto es porque Rust requiere que las referencias mutables sean exclusivas. "
+"Esto significa que es valido hacer una copia de una referencia compartida, pero "
+"hacer lo mismo para una referencia mutable violaría las reglas de préstamo de "
+"Rust."
#: src/memory-management/drop.md
msgid "The `Drop` Trait"
@@ -8524,20 +8363,20 @@ msgstr ""
msgid ""
"All its fields will then be dropped too, whether or not it implements `Drop`."
msgstr ""
-"También se suprimirán todos sus campos, independientemente de si implementa "
-"o no `Drop`."
+"También se suprimirán todos sus campos, independientemente de si implementa o "
+"no `Drop`."
#: src/memory-management/drop.md
msgid ""
"`std::mem::drop` is just an empty function that takes any value. The "
"significance is that it takes ownership of the value, so at the end of its "
-"scope it gets dropped. This makes it a convenient way to explicitly drop "
-"values earlier than they would otherwise go out of scope."
+"scope it gets dropped. This makes it a convenient way to explicitly drop values "
+"earlier than they would otherwise go out of scope."
msgstr ""
"`std::mem::drop` es solo una función vacía que toma cualquier valor. Es "
"importante saber que toma la propiedad del valor, por lo que se descarta al "
-"final de su ámbito. Se trata de una forma sencilla de suprimir los valores "
-"de forma explícita antes que si se salen de su ámbito."
+"final de su ámbito. Se trata de una forma sencilla de suprimir los valores de "
+"forma explícita antes que si se salen de su ámbito."
#: src/memory-management/drop.md
msgid ""
@@ -8567,12 +8406,12 @@ msgstr "Prueba a sustituir `drop(a)` por `a.drop()`."
#: src/memory-management/exercise.md
msgid ""
"In this example, we will implement a complex data type that owns all of its "
-"data. We will use the \"builder pattern\" to support building a new value "
-"piece-by-piece, using convenience functions."
+"data. We will use the \"builder pattern\" to support building a new value piece-"
+"by-piece, using convenience functions."
msgstr ""
-"En este ejemplo, implementaremos un tipo de datos complejo que posee todos "
-"sus datos. Utilizaremos el \"patrón de compilación\" para permitir la "
-"compilación de un nuevo valor parte por parte mediante funciones prácticas."
+"En este ejemplo, implementaremos un tipo de datos complejo que posee todos sus "
+"datos. Utilizaremos el \"patrón de compilación\" para permitir la compilación "
+"de un nuevo valor parte por parte mediante funciones prácticas."
#: src/memory-management/exercise.md
msgid "Fill in the missing pieces."
@@ -8700,20 +8539,19 @@ msgstr "\"cinco: {}\""
#: src/smart-pointers/box.md
msgid ""
-"`Box` implements `Deref`, which means that you can [call "
-"methods from `T` directly on a `Box`](https://doc.rust-lang.org/std/ops/"
-"trait.Deref.html#more-on-deref-coercion)."
+"`Box` implements `Deref`, which means that you can [call methods "
+"from `T` directly on a `Box`](https://doc.rust-lang.org/std/ops/trait.Deref."
+"html#more-on-deref-coercion)."
msgstr ""
-"`Box` implementa `Deref`, lo que significa que puedes [llamar "
-"a métodos desde `T` directamente en un `Box`](https://doc.rust-lang.org/"
-"std/ops/trait.Deref.html#more-on-deref-coercion)."
+"`Box` implementa `Deref`, lo que significa que puedes [llamar a "
+"métodos desde `T` directamente en un `Box`](https://doc.rust-lang.org/std/"
+"ops/trait.Deref.html#more-on-deref-coercion)."
#: src/smart-pointers/box.md
-msgid ""
-"Recursive data types or data types with dynamic sizes need to use a `Box`:"
+msgid "Recursive data types or data types with dynamic sizes need to use a `Box`:"
msgstr ""
-"Los tipos de datos recursivos o los tipos de datos con tamaños dinámicos "
-"deben utilizar un `Box`:"
+"Los tipos de datos recursivos o los tipos de datos con tamaños dinámicos deben "
+"utilizar un `Box`:"
#: src/smart-pointers/box.md
msgid "/// A non-empty list: first element and the rest of the list.\n"
@@ -8731,8 +8569,8 @@ msgstr "\"{list:?}\""
msgid ""
"```bob\n"
" Stack Heap\n"
-".- - - - - - - - - - - - - - . .- - - - - - - - - - - - - - - - - - - - "
-"- - - - -.\n"
+".- - - - - - - - - - - - - - . .- - - - - - - - - - - - - - - - - - - - - - "
+"- - -.\n"
": : : :\n"
": "
"list : : :\n"
@@ -8744,14 +8582,14 @@ msgid ""
"+----+ :\n"
": : : :\n"
": : : :\n"
-"'- - - - - - - - - - - - - - ' '- - - - - - - - - - - - - - - - - - - - "
-"- - - - -'\n"
+"'- - - - - - - - - - - - - - ' '- - - - - - - - - - - - - - - - - - - - - - "
+"- - -'\n"
"```"
msgstr ""
"```bob\n"
" Stack Heap\n"
-".- - - - - - - - - - - - - - . .- - - - - - - - - - - - - - - - - - - - "
-"- - - - -.\n"
+".- - - - - - - - - - - - - - . .- - - - - - - - - - - - - - - - - - - - - - "
+"- - -.\n"
": : : :\n"
": "
"list : : :\n"
@@ -8763,14 +8601,14 @@ msgstr ""
"+----+ :\n"
": : : :\n"
": : : :\n"
-"'- - - - - - - - - - - - - - ' '- - - - - - - - - - - - - - - - - - - - "
-"- - - - -'\n"
+"'- - - - - - - - - - - - - - ' '- - - - - - - - - - - - - - - - - - - - - - "
+"- - -'\n"
"```"
#: src/smart-pointers/box.md
msgid ""
-"`Box` is like `std::unique_ptr` in C++, except that it's guaranteed to be "
-"not null."
+"`Box` is like `std::unique_ptr` in C++, except that it's guaranteed to be not "
+"null."
msgstr ""
"`Box` es igual que `std::unique_ptr` en C++, salvo que está asegurado que no "
"será nulo."
@@ -8790,42 +8628,41 @@ msgstr ""
#: src/smart-pointers/box.md
msgid ""
"want to transfer ownership of a large amount of data. To avoid copying large "
-"amounts of data on the stack, instead store the data on the heap in a `Box` "
-"so only the pointer is moved."
+"amounts of data on the stack, instead store the data on the heap in a `Box` so "
+"only the pointer is moved."
msgstr ""
-"quieres transferir la propiedad (\"ownership\") de una gran cantidad de "
-"datos. Para evitar que se copien grandes cantidades de datos en el _stack_, "
-"almacena los datos del _heap_ en un `Box` para que solo se mueva el puntero."
+"quieres transferir la propiedad (\"ownership\") de una gran cantidad de datos. "
+"Para evitar que se copien grandes cantidades de datos en el _stack_, almacena "
+"los datos del _heap_ en un `Box` para que solo se mueva el puntero."
#: src/smart-pointers/box.md
msgid ""
"If `Box` was not used and we attempted to embed a `List` directly into the "
-"`List`, the compiler would not be able to compute a fixed size for the "
-"struct in memory (the `List` would be of infinite size)."
+"`List`, the compiler would not be able to compute a fixed size for the struct "
+"in memory (the `List` would be of infinite size)."
msgstr ""
-"Si no utilizamos `Box` e intentamos insertar un `List` directamente dentro "
-"de `List`, el compilador no podría calcular un tamaño fijo de la estructura "
-"en la memoria (`List` tendría un tamaño infinito)."
+"Si no utilizamos `Box` e intentamos insertar un `List` directamente dentro de "
+"`List`, el compilador no podría calcular un tamaño fijo de la estructura en la "
+"memoria (`List` tendría un tamaño infinito)."
#: src/smart-pointers/box.md
msgid ""
-"`Box` solves this problem as it has the same size as a regular pointer and "
-"just points at the next element of the `List` in the heap."
+"`Box` solves this problem as it has the same size as a regular pointer and just "
+"points at the next element of the `List` in the heap."
msgstr ""
"`Box` resuelve este problema, ya que tiene el mismo tamaño que un puntero "
"normal y solo apunta al siguiente elemento de la `List` en el _heap_."
#: src/smart-pointers/box.md
msgid ""
-"Remove the `Box` in the List definition and show the compiler error. We get "
-"the message \"recursive without indirection\", because for data recursion, "
-"we have to use indirection, a `Box` or reference of some kind, instead of "
-"storing the value directly."
+"Remove the `Box` in the List definition and show the compiler error. We get the "
+"message \"recursive without indirection\", because for data recursion, we have "
+"to use indirection, a `Box` or reference of some kind, instead of storing the "
+"value directly."
msgstr ""
-"Elimina `Box` de la definición de la lista y muestra el error del "
-"compilador. El mensaje \"recursivo con indirección\" es una sugerencia de "
-"que debes usar un Box o referencia de algún tipo en lugar de almacenar un "
-"valor directamente."
+"Elimina `Box` de la definición de la lista y muestra el error del compilador. "
+"El mensaje \"recursivo con indirección\" es una sugerencia de que debes usar un "
+"Box o referencia de algún tipo en lugar de almacenar un valor directamente."
#: src/smart-pointers/box.md
msgid "Niche Optimization"
@@ -8833,25 +8670,25 @@ msgstr "Optimización de la Memoria"
#: src/smart-pointers/box.md
msgid ""
-"Though `Box` looks like `std::unique_ptr` in C++, it cannot be empty/null. "
-"This makes `Box` one of the types that allow the compiler to optimize "
-"storage of some enums."
+"Though `Box` looks like `std::unique_ptr` in C++, it cannot be empty/null. This "
+"makes `Box` one of the types that allow the compiler to optimize storage of "
+"some enums."
msgstr ""
-"Aunque `Box` se parece a `std::unique_ptr` en C++, no puede ser vació o "
-"nulo. Esto hace `Box` uno de los tipos que permite que el compilador "
-"optimice el almacenaje de ciertas enumeraciones."
+"Aunque `Box` se parece a `std::unique_ptr` en C++, no puede ser vació o nulo. "
+"Esto hace `Box` uno de los tipos que permite que el compilador optimice el "
+"almacenaje de ciertas enumeraciones."
#: src/smart-pointers/box.md
msgid ""
"For example, `Option>` has the same size, as just `Box`, because "
-"compiler uses NULL-value to discriminate variants instead of using explicit "
-"tag ([\"Null Pointer Optimization\"](https://doc.rust-lang.org/std/option/"
+"compiler uses NULL-value to discriminate variants instead of using explicit tag "
+"([\"Null Pointer Optimization\"](https://doc.rust-lang.org/std/option/"
"#representation)):"
msgstr ""
"Por ejemplo, `Option>` tiene el mismo tamaño que `Box`, ya que el "
"compilador usa el valor nulo para discriminar variantes en vez de usar una "
-"etiqueta explicita ([\"Null Pointer Optimization\"](https://doc.rust-lang."
-"org/std/option/#representation)):"
+"etiqueta explicita ([\"Null Pointer Optimization\"](https://doc.rust-lang.org/"
+"std/option/#representation)):"
#: src/smart-pointers/box.md
msgid "\"Just box\""
@@ -8875,13 +8712,13 @@ msgstr "\"Tamaño de none: {}\""
#: src/smart-pointers/rc.md
msgid ""
-"[`Rc`](https://doc.rust-lang.org/std/rc/struct.Rc.html) is a reference-"
-"counted shared pointer. Use this when you need to refer to the same data "
-"from multiple places:"
+"[`Rc`](https://doc.rust-lang.org/std/rc/struct.Rc.html) is a reference-counted "
+"shared pointer. Use this when you need to refer to the same data from multiple "
+"places:"
msgstr ""
"[`Rc`](https://doc.rust-lang.org/std/rc/struct.Rc.html) es un puntero "
-"compartido de referencia contada. Utilízalo cuando necesites hacer "
-"referencia a los mismos datos desde varios lugares:"
+"compartido de referencia contada. Utilízalo cuando necesites hacer referencia a "
+"los mismos datos desde varios lugares:"
#: src/smart-pointers/rc.md
msgid "\"a: {a}\""
@@ -8893,9 +8730,8 @@ msgstr "\"b: {b}\""
#: src/smart-pointers/rc.md
msgid ""
-"See [`Arc`](../concurrency/shared_state/arc.md) and [`Mutex`](https://doc."
-"rust-lang.org/std/sync/struct.Mutex.html) if you are in a multi-threaded "
-"context."
+"See [`Arc`](../concurrency/shared_state/arc.md) and [`Mutex`](https://doc.rust-"
+"lang.org/std/sync/struct.Mutex.html) if you are in a multi-threaded context."
msgstr ""
"Consulta [`Arc`](../concurrency/shared_state/arc.md) y [`Mutex`](https://doc."
"rust-lang.org/std/sync/struct.Mutex.html) si te encuentras en un contexto "
@@ -8903,19 +8739,19 @@ msgstr ""
#: src/smart-pointers/rc.md
msgid ""
-"You can _downgrade_ a shared pointer into a [`Weak`](https://doc.rust-lang."
-"org/std/rc/struct.Weak.html) pointer to create cycles that will get dropped."
+"You can _downgrade_ a shared pointer into a [`Weak`](https://doc.rust-lang.org/"
+"std/rc/struct.Weak.html) pointer to create cycles that will get dropped."
msgstr ""
-"Puedes _degradar_ un puntero compartido en un puntero [`Weak`](https://doc."
-"rust-lang.org/std/rc/struct.Weak.html) para crear ciclos que se abandonarán."
+"Puedes _degradar_ un puntero compartido en un puntero [`Weak`](https://doc.rust-"
+"lang.org/std/rc/struct.Weak.html) para crear ciclos que se abandonarán."
#: src/smart-pointers/rc.md
msgid ""
-"`Rc`'s count ensures that its contained value is valid for as long as there "
-"are references."
+"`Rc`'s count ensures that its contained value is valid for as long as there are "
+"references."
msgstr ""
-"El recuento de `Rc` asegura que el valor que contiene sea válido mientras "
-"haya referencias."
+"El recuento de `Rc` asegura que el valor que contiene sea válido mientras haya "
+"referencias."
#: src/smart-pointers/rc.md
msgid "`Rc` in Rust is like `std::shared_ptr` in C++."
@@ -8923,13 +8759,13 @@ msgstr "`Rc` en Rust es como `std::shared_ptr` en C++."
#: src/smart-pointers/rc.md
msgid ""
-"`Rc::clone` is cheap: it creates a pointer to the same allocation and "
-"increases the reference count. Does not make a deep clone and can generally "
-"be ignored when looking for performance issues in code."
+"`Rc::clone` is cheap: it creates a pointer to the same allocation and increases "
+"the reference count. Does not make a deep clone and can generally be ignored "
+"when looking for performance issues in code."
msgstr ""
"`Rc::clone` es simple: crea un puntero en la misma asignación y aumenta el "
-"recuento de referencias. No hace clones completos y, por lo general, se "
-"puede ignorar cuando se buscan problemas de rendimiento en el código."
+"recuento de referencias. No hace clones completos y, por lo general, se puede "
+"ignorar cuando se buscan problemas de rendimiento en el código."
#: src/smart-pointers/rc.md
msgid ""
@@ -8945,8 +8781,8 @@ msgstr "Comprueba el recuento de referencias con `Rc::strong_count`."
#: src/smart-pointers/rc.md
msgid ""
-"`Rc::downgrade` gives you a _weakly reference-counted_ object to create "
-"cycles that will be dropped properly (likely in combination with `RefCell`)."
+"`Rc::downgrade` gives you a _weakly reference-counted_ object to create cycles "
+"that will be dropped properly (likely in combination with `RefCell`)."
msgstr ""
"`Rc::downgrade` ofrece un objeto _de referencia contada debil_ para crear "
"ciclos que que se borraran propiamente (probablemente en combinación con "
@@ -8955,8 +8791,8 @@ msgstr ""
#: src/smart-pointers/trait-objects.md
msgid ""
"We previously saw how trait objects can be used with references, e.g `&dyn "
-"Pet`. However, we can also use trait objects with smart pointers like `Box` "
-"to create an owned trait object: `Box`."
+"Pet`. However, we can also use trait objects with smart pointers like `Box` to "
+"create an owned trait object: `Box`."
msgstr ""
"Previamente vimos que objetos de trait se pueden usar con referencias, e.g. "
"`&dyn Pet`. También podemos usar objetos de trait con punteros inteligentes "
@@ -8970,15 +8806,15 @@ msgstr "Diseño de la memoria después de asignar `pets`:"
msgid ""
"```bob\n"
" Stack Heap\n"
-".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - "
-"- -.\n"
+".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - "
+"-.\n"
": : : :\n"
": \"pets: Vec\" : : \"data: Cat\" +----+----+----"
"+----+ :\n"
-": +-----------+-------+ : : +-------+-------+ | F | i | d | "
-"o | :\n"
-": | ptr | o---+---+--. : | lives | 9 | +----+----+----"
-"+----+ :\n"
+": +-----------+-------+ : : +-------+-------+ | F | i | d | o "
+"| :\n"
+": | ptr | o---+---+--. : | lives | 9 | +----+----+----+----"
+"+ :\n"
": | len | 2 | : | : +-------+-------+ "
"^ :\n"
": | capacity | 2 | : | : ^ "
@@ -8997,45 +8833,45 @@ msgid ""
"+ :\n"
" : | "
"| :\n"
-" `- - -| - - |- - - - - - - - - - - - - - - "
-"- -'\n"
+" `- - -| - - |- - - - - - - - - - - - - - - - "
+"-'\n"
" | |\n"
-" | | "
-"\"Program text\"\n"
-" .- - -| - - |- - - - - - - - - - - - - - - "
-"- -.\n"
+" | | \"Program "
+"text\"\n"
+" .- - -| - - |- - - - - - - - - - - - - - - - "
+"-.\n"
" : | | "
"vtable :\n"
" : | | +----------------------"
"+ :\n"
-" : | `----->| \"::"
-"talk\" | :\n"
+" : | `----->| \"::talk\" "
+"| :\n"
" : | +----------------------"
"+ :\n"
" : | "
"vtable :\n"
" : | +----------------------"
"+ :\n"
-" : '----------->| \"::"
-"talk\" | :\n"
+" : '----------->| \"::talk\" "
+"| :\n"
" : +----------------------"
"+ :\n"
" : :\n"
-" '- - - - - - - - - - - - - - - - - - - - - "
-"- -'\n"
+" '- - - - - - - - - - - - - - - - - - - - - - "
+"-'\n"
"```"
msgstr ""
"```bob\n"
" Stack Heap\n"
-".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - "
-"- -.\n"
+".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - "
+"-.\n"
": : : :\n"
": \"pets: Vec\" : : \"data: Cat\" +----+----+----"
"+----+ :\n"
-": +-----------+-------+ : : +-------+-------+ | F | i | d | "
-"o | :\n"
-": | ptr | o---+---+--. : | lives | 9 | +----+----+----"
-"+----+ :\n"
+": +-----------+-------+ : : +-------+-------+ | F | i | d | o "
+"| :\n"
+": | ptr | o---+---+--. : | lives | 9 | +----+----+----+----"
+"+ :\n"
": | len | 2 | : | : +-------+-------+ "
"^ :\n"
": | capacity | 2 | : | : ^ "
@@ -9054,32 +8890,32 @@ msgstr ""
"+ :\n"
" : | "
"| :\n"
-" `- - -| - - |- - - - - - - - - - - - - - - "
-"- -'\n"
+" `- - -| - - |- - - - - - - - - - - - - - - - "
+"-'\n"
" | |\n"
-" | | "
-"\"Program text\"\n"
-" .- - -| - - |- - - - - - - - - - - - - - - "
-"- -.\n"
+" | | \"Program "
+"text\"\n"
+" .- - -| - - |- - - - - - - - - - - - - - - - "
+"-.\n"
" : | | "
"vtable :\n"
" : | | +----------------------"
"+ :\n"
-" : | `----->| \"::"
-"talk\" | :\n"
+" : | `----->| \"::talk\" "
+"| :\n"
" : | +----------------------"
"+ :\n"
" : | "
"vtable :\n"
" : | +----------------------"
"+ :\n"
-" : '----------->| \"::"
-"talk\" | :\n"
+" : '----------->| \"::talk\" "
+"| :\n"
" : +----------------------"
"+ :\n"
" : :\n"
-" '- - - - - - - - - - - - - - - - - - - - - "
-"- -'\n"
+" '- - - - - - - - - - - - - - - - - - - - - - "
+"-'\n"
"```"
#: src/smart-pointers/trait-objects.md
@@ -9087,31 +8923,31 @@ msgid ""
"Types that implement a given trait may be of different sizes. This makes it "
"impossible to have things like `Vec` in the example above."
msgstr ""
-"Los tipos que implementan un trait pueden tener diferentes tamaños. Esto "
-"hace imposible tener elementos como `Vec` en el ejemplo anterior."
+"Los tipos que implementan un trait pueden tener diferentes tamaños. Esto hace "
+"imposible tener elementos como `Vec` en el ejemplo anterior."
#: src/smart-pointers/trait-objects.md
msgid ""
"`dyn Pet` is a way to tell the compiler about a dynamically sized type that "
"implements `Pet`."
msgstr ""
-"`dyn Pet` es una forma de indicar al compilador un tipo de tamaño dinámico "
-"que implementa `Pet`."
+"`dyn Pet` es una forma de indicar al compilador un tipo de tamaño dinámico que "
+"implementa `Pet`."
#: src/smart-pointers/trait-objects.md
msgid ""
-"In the example, `pets` is allocated on the stack and the vector data is on "
-"the heap. The two vector elements are _fat pointers_:"
+"In the example, `pets` is allocated on the stack and the vector data is on the "
+"heap. The two vector elements are _fat pointers_:"
msgstr ""
-"En este ejemplo, `pets` es alocado sobre el stack y los datos del vector "
-"sobre el heap. Los dos elementos del vector son _punteros gordos_:"
+"En este ejemplo, `pets` es alocado sobre el stack y los datos del vector sobre "
+"el heap. Los dos elementos del vector son _punteros gordos_:"
#: src/smart-pointers/trait-objects.md
msgid ""
"A fat pointer is a double-width pointer. It has two components: a pointer to "
"the actual object and a pointer to the [virtual method table](https://en."
-"wikipedia.org/wiki/Virtual_method_table) (vtable) for the `Pet` "
-"implementation of that particular object."
+"wikipedia.org/wiki/Virtual_method_table) (vtable) for the `Pet` implementation "
+"of that particular object."
msgstr ""
"Un puntero gordo es un puntero de tamaño doble. Tiene dos componentes: un "
"puntero al objeto y un puntero a la [tabla virtual de métodos](https://en."
@@ -9120,8 +8956,8 @@ msgstr ""
#: src/smart-pointers/trait-objects.md
msgid ""
-"The data for the `Dog` named Fido is the `name` and `age` fields. The `Cat` "
-"has a `lives` field."
+"The data for the `Dog` named Fido is the `name` and `age` fields. The `Cat` has "
+"a `lives` field."
msgstr ""
"Los datos para el `Dog` llamado Fido son los campos `name` y `age`. El `Cat` "
"tiene un campo `lives`."
@@ -9132,17 +8968,16 @@ msgstr "Compara estas salidas en el ejemplo anterior:"
#: src/smart-pointers/exercise.md
msgid ""
-"A binary tree is a tree-type data structure where every node has two "
-"children (left and right). We will create a tree where each node stores a "
-"value. For a given node N, all nodes in a N's left subtree contain smaller "
-"values, and all nodes in N's right subtree will contain larger values."
+"A binary tree is a tree-type data structure where every node has two children "
+"(left and right). We will create a tree where each node stores a value. For a "
+"given node N, all nodes in a N's left subtree contain smaller values, and all "
+"nodes in N's right subtree will contain larger values."
msgstr ""
-"Un árbol binario es una estructura de datos de tipo árbol en la que cada "
-"nodo tiene dos elementos secundarios (izquierda y derecha). Crearemos un "
-"árbol en el que cada nodo almacene un valor. Para un nodo N dado, todos los "
-"nodos del subárbol izquierdo de N contienen valores más pequeños, mientras "
-"que todos los nodos del subárbol derecho de N contendrán valores de mayor "
-"tamaño."
+"Un árbol binario es una estructura de datos de tipo árbol en la que cada nodo "
+"tiene dos elementos secundarios (izquierda y derecha). Crearemos un árbol en el "
+"que cada nodo almacene un valor. Para un nodo N dado, todos los nodos del "
+"subárbol izquierdo de N contienen valores más pequeños, mientras que todos los "
+"nodos del subárbol derecho de N contendrán valores de mayor tamaño."
#: src/smart-pointers/exercise.md
msgid "Implement the following types, so that the given tests pass."
@@ -9151,8 +8986,8 @@ msgstr ""
#: src/smart-pointers/exercise.md
msgid ""
-"Extra Credit: implement an iterator over a binary tree that returns the "
-"values in order."
+"Extra Credit: implement an iterator over a binary tree that returns the values "
+"in order."
msgstr ""
"Ejercicio adicional: implementar un iterador sobre un árbol binario que "
"devuelva los valores en orden."
@@ -9171,8 +9006,7 @@ msgid ""
"///\n"
"/// If the same value is added multiple times, it is only stored once.\n"
msgstr ""
-"/// Contenedor que almacena un conjunto de valores mediante un árbol "
-"binario.\n"
+"/// Contenedor que almacena un conjunto de valores mediante un árbol binario.\n"
"///\n"
"/// Si se añade el mismo valor varias veces, solo se almacena una vez.\n"
@@ -9193,8 +9027,8 @@ msgid ""
"Including 10 minute breaks, this session should take about 1 hour and 55 "
"minutes. It contains:"
msgstr ""
-"Contando con los descansos de 10 minutos, la duración prevista de la sesión "
-"es de una horas y 55 minutos. Contiene:"
+"Contando con los descansos de 10 minutos, la duración prevista de la sesión es "
+"de una horas y 55 minutos. Contiene:"
#: src/borrowing/shared.md
msgid ""
@@ -9217,9 +9051,9 @@ msgid ""
"This slide is a review of the material on references from day 1, expanding "
"slightly to include function arguments and return values."
msgstr ""
-"En esta diapositiva se repasará el material de las referencias desde día 1 y "
-"se ampliará un poco para incluir los argumentos de las funciones y los "
-"valores devueltos."
+"En esta diapositiva se repasará el material de las referencias desde día 1 y se "
+"ampliará un poco para incluir los argumentos de las funciones y los valores "
+"devueltos."
#: src/borrowing/shared.md
msgid "Notes on stack returns and inlining:"
@@ -9228,27 +9062,27 @@ msgstr "Notas sobre la devolución de resultados de la _stack_:"
#: src/borrowing/shared.md
msgid ""
"Demonstrate that the return from `add` is cheap because the compiler can "
-"eliminate the copy operation, by inlining the call to add into main. Change "
-"the above code to print stack addresses and run it on the [Playground]"
-"(https://play.rust-lang.org/?"
+"eliminate the copy operation, by inlining the call to add into main. Change the "
+"above code to print stack addresses and run it on the [Playground](https://play."
+"rust-lang.org/?"
"version=stable&mode=release&edition=2021&gist=0cb13be1c05d7e3446686ad9947c4671) "
"or look at the assembly in [Godbolt](https://rust.godbolt.org/). In the "
-"\"DEBUG\" optimization level, the addresses should change, while they stay "
-"the same when changing to the \"RELEASE\" setting:"
+"\"DEBUG\" optimization level, the addresses should change, while they stay the "
+"same when changing to the \"RELEASE\" setting:"
msgstr ""
-"Demuestra que la instrucción de retorno de `add` es barato porque el "
-"compilador puede eliminar la operación de copia. Cambia el código anterior "
-"para imprimir las direcciones de la _stack_ y ejecutarlas en el [Playground]"
-"(https://play.rust-lang.org/?"
+"Demuestra que la instrucción de retorno de `add` es barato porque el compilador "
+"puede eliminar la operación de copia. Cambia el código anterior para imprimir "
+"las direcciones de la _stack_ y ejecutarlas en el [Playground](https://play."
+"rust-lang.org/?"
"version=stable&mode=release&edition=2021&gist=0cb13be1c05d7e3446686ad9947c4671) "
-"o consulta el ensamblador en [Godbolt](https://rust.godbolt.org/). En el "
-"nivel de optimización \"DEBUG\", las direcciones deberían cambiar. Sin "
-"embargo, deberían mantenerse igual modificar la configuración \"RELEASE\":"
+"o consulta el ensamblador en [Godbolt](https://rust.godbolt.org/). En el nivel "
+"de optimización \"DEBUG\", las direcciones deberían cambiar. Sin embargo, "
+"deberían mantenerse igual modificar la configuración \"RELEASE\":"
#: src/borrowing/shared.md
msgid ""
-"The Rust compiler can do automatic inlining, that can be disabled on a "
-"function level with `#[inline(never)]`."
+"The Rust compiler can do automatic inlining, that can be disabled on a function "
+"level with `#[inline(never)]`."
msgstr ""
"El compilador Rust puede hacer enlineamiento automático que puede ser "
"deshabilitado al nivel de una función con `#[inline(never)]`."
@@ -9256,22 +9090,22 @@ msgstr ""
#: src/borrowing/shared.md
msgid ""
"Once disabled, the printed address will change on all optimization levels. "
-"Looking at Godbolt or Playground, one can see that in this case, the return "
-"of the value depends on the ABI, e.g. on amd64 the two i32 that is making up "
-"the point will be returned in 2 registers (eax and edx)."
+"Looking at Godbolt or Playground, one can see that in this case, the return of "
+"the value depends on the ABI, e.g. on amd64 the two i32 that is making up the "
+"point will be returned in 2 registers (eax and edx)."
msgstr ""
"Una vez deshabilitado, la dirección impresa cambiara en todos los niveles de "
-"optimización. Mirando en Godbolt o Playground, uno puede ver que en este "
-"caso el valor de retorno dependen del ABI, e.g. en amd64 los dos i32 que "
-"constituyen el punto son regresados en 2 registros (eax y edx)."
+"optimización. Mirando en Godbolt o Playground, uno puede ver que en este caso "
+"el valor de retorno dependen del ABI, e.g. en amd64 los dos i32 que constituyen "
+"el punto son regresados en 2 registros (eax y edx)."
#: src/borrowing/borrowck.md
msgid ""
-"Rust's _borrow checker_ puts constraints on the ways you can borrow values. "
-"For a given value, at any time:"
+"Rust's _borrow checker_ puts constraints on the ways you can borrow values. For "
+"a given value, at any time:"
msgstr ""
-"El _borrow checker_ de Rust limita las formas en que se pueden tomar "
-"prestados valores. Para un dado valor, en cualquier tiempo:"
+"El _borrow checker_ de Rust limita las formas en que se pueden tomar prestados "
+"valores. Para un dado valor, en cualquier tiempo:"
#: src/borrowing/borrowck.md
msgid "You can have one or more shared references to the value, _or_"
@@ -9286,8 +9120,8 @@ msgid ""
"Note that the requirement is that conflicting references not _exist_ at the "
"same point. It does not matter where the reference is dereferenced."
msgstr ""
-"Ten en cuenta que el requisito es que las referencias que están en conflicto "
-"no _se encuentren_ en el mismo punto. No importa en el lugar en el que se "
+"Ten en cuenta que el requisito es que las referencias que están en conflicto no "
+"_se encuentren_ en el mismo punto. No importa en el lugar en el que se "
"desreferencie la referencia."
#: src/borrowing/borrowck.md
@@ -9300,56 +9134,56 @@ msgstr ""
#: src/borrowing/borrowck.md
msgid ""
-"Move the `println!` statement for `b` before the scope that introduces `c` "
-"to make the code compile."
+"Move the `println!` statement for `b` before the scope that introduces `c` to "
+"make the code compile."
msgstr ""
-"Mueve la instrucción `println!` de `b` antes del ámbito que introduce `c` "
-"para que el código compile."
+"Mueve la instrucción `println!` de `b` antes del ámbito que introduce `c` para "
+"que el código compile."
#: src/borrowing/borrowck.md
msgid ""
-"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\"."
+"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 ""
-"Después de ese cambio, el compilador se da cuenta de que `b` solo se usa "
-"antes del nuevo préstamo mutable de `a` a través de `c`. Se trata de una "
-"función del verificador de préstamos denominada \"tiempo de vida no léxico\"."
+"Después de ese cambio, el compilador se da cuenta de que `b` solo se usa antes "
+"del nuevo préstamo mutable de `a` a través de `c`. Se trata de una función del "
+"verificador de préstamos denominada \"tiempo de vida no léxico\"."
#: src/borrowing/borrowck.md
msgid ""
-"The exclusive reference constraint is quite strong. Rust uses it to ensure "
-"that data races do not occur. Rust also _relies_ on this constraint to "
-"optimize code. For example, a value behind a shared reference can be safely "
-"cached in a register for the lifetime of that reference."
+"The exclusive reference constraint is quite strong. Rust uses it to ensure that "
+"data races do not occur. Rust also _relies_ on this constraint to optimize "
+"code. For example, a value behind a shared reference can be safely cached in a "
+"register for the lifetime of that reference."
msgstr ""
-"La restricción de referencia exclusiva es bastante sólida. Rust la utiliza "
-"para asegurarse de que no se produzcan data races. Rust también _se basa_ en "
-"esta restricción para optimizar el código. Por ejemplo, el valor de una "
-"referencia compartida se puede almacenar en caché de forma segura en un "
-"registro durante el tiempo de vida de dicha referencia."
+"La restricción de referencia exclusiva es bastante sólida. Rust la utiliza para "
+"asegurarse de que no se produzcan data races. Rust también _se basa_ en esta "
+"restricción para optimizar el código. Por ejemplo, el valor de una referencia "
+"compartida se puede almacenar en caché de forma segura en un registro durante "
+"el tiempo de vida de dicha referencia."
#: src/borrowing/borrowck.md
msgid ""
"The borrow checker is designed to accommodate many common patterns, such as "
-"taking exclusive references to different fields in a struct at the same "
-"time. But, there are some situations where it doesn't quite \"get it\" and "
-"this often results in \"fighting with the borrow checker.\""
+"taking exclusive references to different fields in a struct at the same time. "
+"But, there are some situations where it doesn't quite \"get it\" and this often "
+"results in \"fighting with the borrow checker.\""
msgstr ""
"El verificador de préstamos está diseñado para adaptarse a muchos patrones "
-"comunes, como tomar referencias exclusivas en diferentes campos de un struct "
-"al mismo tiempo. Sin embargo, hay algunas situaciones en las que \"no lo "
-"entiende del todo\", lo que suele dar lugar a \"conflictos con el "
-"comprobador de préstamos.\""
+"comunes, como tomar referencias exclusivas en diferentes campos de un struct al "
+"mismo tiempo. Sin embargo, hay algunas situaciones en las que \"no lo entiende "
+"del todo\", lo que suele dar lugar a \"conflictos con el comprobador de "
+"préstamos.\""
#: src/borrowing/examples.md
msgid ""
"As a concrete example of how these borrowing rules prevent memory errors, "
-"consider the case of modifying a collection while there are references to "
-"its elements:"
+"consider the case of modifying a collection while there are references to its "
+"elements:"
msgstr ""
-"Como un ejemplo concreto de como estas reglas de préstamo previenen errores "
-"de memoria, considera el caso de modificar una colección cuando existen "
+"Como un ejemplo concreto de como estas reglas de préstamo previenen errores de "
+"memoria, considera el caso de modificar una colección cuando existen "
"referencias a sus elementos:"
#: src/borrowing/examples.md
@@ -9362,35 +9196,35 @@ msgstr "Considera este caso parecido de invalidación de iterador:"
#: src/borrowing/examples.md
msgid ""
-"In both of these cases, modifying the collection by pushing new elements "
-"into it can potentially invalidate existing references to the collection's "
-"elements if the collection has to reallocate."
+"In both of these cases, modifying the collection by pushing new elements into "
+"it can potentially invalidate existing references to the collection's elements "
+"if the collection has to reallocate."
msgstr ""
-"En ambos casos, añadir elementos a la colección puede invalidar referencias "
-"pre-existentes a los elementos de la colección si es necesario realizar "
+"En ambos casos, añadir elementos a la colección puede invalidar referencias pre-"
+"existentes a los elementos de la colección si es necesario realizar "
"reasignación."
#: src/borrowing/interior-mutability.md
msgid ""
-"In some situations, it's necessary to modify data behind a shared (read-"
-"only) reference. For example, a shared data structure might have an internal "
-"cache, and wish to update that cache from read-only methods."
+"In some situations, it's necessary to modify data behind a shared (read-only) "
+"reference. For example, a shared data structure might have an internal cache, "
+"and wish to update that cache from read-only methods."
msgstr ""
"En algunas situaciones, es necesario modificar los datos subyacentes a una "
-"referencia compartida (de solo lectura). Por ejemplo, una estructura de "
-"datos compartida puede contar con una caché interna y pretender actualizarla "
-"con métodos de solo lectura."
+"referencia compartida (de solo lectura). Por ejemplo, una estructura de datos "
+"compartida puede contar con una caché interna y pretender actualizarla con "
+"métodos de solo lectura."
#: src/borrowing/interior-mutability.md
msgid ""
-"The \"interior mutability\" pattern allows exclusive (mutable) access behind "
-"a shared reference. The standard library provides several ways to do this, "
-"all while still ensuring safety, typically by performing a runtime check."
+"The \"interior mutability\" pattern allows exclusive (mutable) access behind a "
+"shared reference. The standard library provides several ways to do this, all "
+"while still ensuring safety, typically by performing a runtime check."
msgstr ""
-"El patrón \"mutabilidad interior\" permite el acceso exclusivo (mutable) "
-"desde una referencia compartida. La biblioteca estándar ofrece varias formas "
-"de hacerlo y, al mismo tiempo, garantiza la seguridad, normalmente mediante "
-"una comprobación del tiempo de ejecución."
+"El patrón \"mutabilidad interior\" permite el acceso exclusivo (mutable) desde "
+"una referencia compartida. La biblioteca estándar ofrece varias formas de "
+"hacerlo y, al mismo tiempo, garantiza la seguridad, normalmente mediante una "
+"comprobación del tiempo de ejecución."
#: src/borrowing/interior-mutability.md
msgid "`RefCell`"
@@ -9425,32 +9259,30 @@ msgid ""
"the value. Since there are no references, borrowing rules cannot be broken."
msgstr ""
"`Cell` envuelve un valor y permite obtenerlo o definirlo, incluso con una "
-"referencia compartida a `Cell`. Sin embargo, no permite obtener referencias "
-"al valor. Como no hay referencias, las reglas de préstamos no pueden "
-"quebrantarse."
+"referencia compartida a `Cell`. Sin embargo, no permite obtener referencias al "
+"valor. Como no hay referencias, las reglas de préstamos no pueden quebrantarse."
#: src/borrowing/interior-mutability.md
msgid ""
-"The main thing to take away from this slide is that Rust provides _safe_ "
-"ways to modify data behind a shared reference. There are a variety of ways "
-"to ensure that safety, and `RefCell` and `Cell` are two of them."
+"The main thing to take away from this slide is that Rust provides _safe_ ways "
+"to modify data behind a shared reference. There are a variety of ways to ensure "
+"that safety, and `RefCell` and `Cell` are two of them."
msgstr ""
"Lo más importante de esta diapositiva es que Rust ofrece formas _seguras_ de "
-"modificar los datos subyacentes a una referencia compartida. Hay varias "
-"formas de garantizar la seguridad, como `RefCell` y `Cell`."
+"modificar los datos subyacentes a una referencia compartida. Hay varias formas "
+"de garantizar la seguridad, como `RefCell` y `Cell`."
#: src/borrowing/interior-mutability.md
msgid ""
"`RefCell` enforces Rust's usual borrowing rules (either multiple shared "
-"references or a single exclusive reference) with a runtime check. In this "
-"case, all borrows are very short and never overlap, so the checks always "
-"succeed."
+"references or a single exclusive reference) with a runtime check. In this case, "
+"all borrows are very short and never overlap, so the checks always succeed."
msgstr ""
"`RefCell` implementa las reglas de préstamos habituales de Rust (varias "
-"referencias compartidas o una única referencia exclusiva) con una "
-"comprobación del tiempo de ejecución. En este caso, todos los préstamos son "
-"muy cortos y nunca se solapan, por lo que las comprobaciones siempre se "
-"llevan a cabo de forma correcta."
+"referencias compartidas o una única referencia exclusiva) con una comprobación "
+"del tiempo de ejecución. En este caso, todos los préstamos son muy cortos y "
+"nunca se solapan, por lo que las comprobaciones siempre se llevan a cabo de "
+"forma correcta."
#: src/borrowing/interior-mutability.md
msgid ""
@@ -9458,10 +9290,9 @@ msgid ""
"call to `borrow_mut` before we print the cell. Trying to print a borrowed "
"`RefCell` just shows the message `\"{borrowed}\"`."
msgstr ""
-"El bloque extra en el ejemplo `RefCell` existe para terminar el préstamo "
-"creado por la llamada a `borrow_mut` antes de que imprimimos cal celda. "
-"Intentando imprimir una celda `RefCell` solo enseña el mensaje "
-"`\"{borrowed}\"`."
+"El bloque extra en el ejemplo `RefCell` existe para terminar el préstamo creado "
+"por la llamada a `borrow_mut` antes de que imprimimos cal celda. Intentando "
+"imprimir una celda `RefCell` solo enseña el mensaje `\"{borrowed}\"`."
#: src/borrowing/interior-mutability.md
msgid ""
@@ -9471,27 +9302,26 @@ msgid ""
msgstr ""
"`Cell` es un medio más sencillo de garantizar la seguridad: tiene un método "
"`set` que utiliza `&self`. No es necesario comprobar el tiempo de ejecución, "
-"pero sí es necesario transferir los valores, lo que puede tener su propio "
-"coste."
+"pero sí es necesario transferir los valores, lo que puede tener su propio coste."
#: src/borrowing/interior-mutability.md
msgid ""
-"Both `RefCell` and `Cell` are `!Sync`, which means `&RefCell` and `&Cell` "
-"can't be passed between threads. This prevents two threads trying to access "
-"the cell at once."
+"Both `RefCell` and `Cell` are `!Sync`, which means `&RefCell` and `&Cell` can't "
+"be passed between threads. This prevents two threads trying to access the cell "
+"at once."
msgstr ""
-"Ambos `RefCell` y `Cell` son `!Sync`, que significa que `&RefCell` y `&Cell` "
-"no pueden ser pasados entre hilos. Esto previene que dos hilos intenten "
-"acceder la celda al mismo tiempo."
+"Ambos `RefCell` y `Cell` son `!Sync`, que significa que `&RefCell` y `&Cell` no "
+"pueden ser pasados entre hilos. Esto previene que dos hilos intenten acceder la "
+"celda al mismo tiempo."
#: src/borrowing/exercise.md
msgid ""
-"You're working on implementing a health-monitoring system. As part of that, "
-"you need to keep track of users' health statistics."
+"You're working on implementing a health-monitoring system. As part of that, you "
+"need to keep track of users' health statistics."
msgstr ""
-"Estás trabajando en la implementación de un sistema de monitorización de "
-"salud. Por ello, debes realizar un seguimiento de las estadísticas de salud "
-"de los usuarios."
+"Estás trabajando en la implementación de un sistema de monitorización de salud. "
+"Por ello, debes realizar un seguimiento de las estadísticas de salud de los "
+"usuarios."
#: src/borrowing/exercise.md
msgid ""
@@ -9508,20 +9338,18 @@ msgid ""
"Copy the code below to and fill in the missing "
"method:"
msgstr ""
-"Copia el fragmento de código que aparece más abajo en la página a y rellena el método que falta:"
+"Copia el fragmento de código que aparece más abajo en la página a y rellena el método que falta:"
#: src/borrowing/exercise.md
msgid ""
-"\"Update a user's statistics based on measurements from a visit to the "
-"doctor\""
+"\"Update a user's statistics based on measurements from a visit to the doctor\""
msgstr ""
"\"Actualiza las estadísticas de un usuario en función de las mediciones "
"obtenidas durante una consulta médica\""
#: src/borrowing/exercise.md src/borrowing/solution.md
-#: src/android/build-rules/library.md
-#: src/android/aidl/example-service/client.md
+#: src/android/build-rules/library.md src/android/aidl/example-service/client.md
msgid "\"Bob\""
msgstr "\"Bob\""
@@ -9540,16 +9368,16 @@ msgstr ""
#: src/lifetimes/lifetime-annotations.md
msgid ""
-"The lifetime can be implicit - this is what we have seen so far. Lifetimes "
-"can also be explicit: `&'a Point`, `&'document str`. Lifetimes start with "
-"`'` and `'a` is a typical default name. Read `&'a Point` as \"a borrowed "
-"`Point` which is valid for at least the lifetime `a`\"."
+"The lifetime can be implicit - this is what we have seen so far. Lifetimes can "
+"also be explicit: `&'a Point`, `&'document str`. Lifetimes start with `'` and "
+"`'a` is a typical default name. Read `&'a Point` as \"a borrowed `Point` which "
+"is valid for at least the lifetime `a`\"."
msgstr ""
"El tiempo de vida puede ser implícito, como hemos visto hasta ahora, pero "
"también explícito, como es el caso de `&'a Point` y `&'document str`. Los "
"tiempos de vida empiezan por `'` y `'a` es el nombre predeterminado que se "
-"suele usar. Lee `&'a Point` como \"un `Point` prestado que es válido al "
-"menos durante el tiempo de vida `a`\"."
+"suele usar. Lee `&'a Point` como \"un `Point` prestado que es válido al menos "
+"durante el tiempo de vida `a`\"."
#: src/lifetimes/lifetime-annotations.md
msgid ""
@@ -9558,9 +9386,9 @@ msgid ""
"ambiguity; the compiler verifies that there is a valid solution."
msgstr ""
"Los tiempos de vida siempre son inferidos por el compilador: no es posible "
-"asignar un tiempo de vida manualmente. Las anotaciones explicitas de tiempo "
-"de vida crean restricciones cuando hay ambigüedad; el compilador verifica "
-"que hay una solución válida."
+"asignar un tiempo de vida manualmente. Las anotaciones explicitas de tiempo de "
+"vida crean restricciones cuando hay ambigüedad; el compilador verifica que hay "
+"una solución válida."
#: src/lifetimes/lifetime-annotations.md
msgid ""
@@ -9586,12 +9414,11 @@ msgid ""
"requires explicit annotations of lifetimes on function arguments and return "
"values."
msgstr ""
-"En este ejemplo, el compilador no conoce el tiempo de vida que se debe "
-"inferir para `p3`. Al examinar el cuerpo de la función, se puede suponer con "
-"seguridad que el tiempo de vida de `p3` es menor que`p1` y `p2`. Sin "
-"embargo, como sucede con los tipos, Rust requiere anotaciones explícitas de "
-"los tiempos de vida en los argumentos de las funciones y los valores "
-"devueltos."
+"En este ejemplo, el compilador no conoce el tiempo de vida que se debe inferir "
+"para `p3`. Al examinar el cuerpo de la función, se puede suponer con seguridad "
+"que el tiempo de vida de `p3` es menor que`p1` y `p2`. Sin embargo, como sucede "
+"con los tipos, Rust requiere anotaciones explícitas de los tiempos de vida en "
+"los argumentos de las funciones y los valores devueltos."
#: src/lifetimes/lifetime-annotations.md
msgid "Add `'a` appropriately to `left_most`:"
@@ -9606,11 +9433,10 @@ msgstr ""
"devuelto tiene una duración de al menos `'a`."
#: src/lifetimes/lifetime-annotations.md
-msgid ""
-"In common cases, lifetimes can be elided, as described on the next slide."
+msgid "In common cases, lifetimes can be elided, as described on the next slide."
msgstr ""
-"De forma habitual, los tiempos de vida se pueden omitir, tal como se "
-"describe en la siguiente diapositiva."
+"De forma habitual, los tiempos de vida se pueden omitir, tal como se describe "
+"en la siguiente diapositiva."
#: src/lifetimes/lifetime-elision.md
msgid "Lifetimes in Function Calls"
@@ -9618,39 +9444,39 @@ msgstr "Tiempos de Vida en Llamadas a Función"
#: src/lifetimes/lifetime-elision.md
msgid ""
-"Lifetimes for function arguments and return values must be fully specified, "
-"but Rust allows lifetimes to be elided in most cases with [a few simple "
-"rules](https://doc.rust-lang.org/nomicon/lifetime-elision.html). This is not "
+"Lifetimes for function arguments and return values must be fully specified, but "
+"Rust allows lifetimes to be elided in most cases with [a few simple rules]"
+"(https://doc.rust-lang.org/nomicon/lifetime-elision.html). This is not "
"inference -- it is just a syntactic shorthand."
msgstr ""
-"El tiempo de vida de los argumentos de las funciones y los valores devueltos "
-"se deben especificar de manera completa, pero Rust permite que se puedan "
-"eludir en la mayoría de los casos con [unas reglas sencillas](https://doc."
-"rust-lang.org/nomicon/lifetime-elision.html). Esto no es inferencia -- solo "
-"es un atajo de sintaxis."
+"El tiempo de vida de los argumentos de las funciones y los valores devueltos se "
+"deben especificar de manera completa, pero Rust permite que se puedan eludir en "
+"la mayoría de los casos con [unas reglas sencillas](https://doc.rust-lang.org/"
+"nomicon/lifetime-elision.html). Esto no es inferencia -- solo es un atajo de "
+"sintaxis."
#: src/lifetimes/lifetime-elision.md
msgid "Each argument which does not have a lifetime annotation is given one."
msgstr ""
-"A cada argumento que no tenga una anotación de tiempo de vida se le "
-"proporciona uno."
+"A cada argumento que no tenga una anotación de tiempo de vida se le proporciona "
+"uno."
#: src/lifetimes/lifetime-elision.md
msgid ""
-"If there is only one argument lifetime, it is given to all un-annotated "
-"return values."
+"If there is only one argument lifetime, it is given to all un-annotated return "
+"values."
msgstr ""
-"Si solo hay un tiempo de vida de un argumento, se le asigna a todos los "
-"valores devueltos que no estén anotados."
+"Si solo hay un tiempo de vida de un argumento, se le asigna a todos los valores "
+"devueltos que no estén anotados."
#: src/lifetimes/lifetime-elision.md
msgid ""
-"If there are multiple argument lifetimes, but the first one is for `self`, "
-"that lifetime is given to all un-annotated return values."
+"If there are multiple argument lifetimes, but the first one is for `self`, that "
+"lifetime is given to all un-annotated return values."
msgstr ""
"Si existen varios tiempos de vida de argumentos, pero el primero es para "
-"`self`, ese tiempo de vida se asigna a todos los valores devueltos que no "
-"estén anotados."
+"`self`, ese tiempo de vida se asigna a todos los valores devueltos que no estén "
+"anotados."
#: src/lifetimes/lifetime-elision.md
msgid "In this example, `cab_distance` is trivially elided."
@@ -9668,46 +9494,43 @@ msgstr ""
#: src/lifetimes/lifetime-elision.md
msgid "Try adjusting the signature to \"lie\" about the lifetimes returned:"
msgstr ""
-"Prueba a ajustar la firma para \"mentir\" sobre los tiempos de vida "
-"devueltos:"
+"Prueba a ajustar la firma para \"mentir\" sobre los tiempos de vida devueltos:"
#: src/lifetimes/lifetime-elision.md
msgid ""
-"This won't compile, demonstrating that the annotations are checked for "
-"validity by the compiler. Note that this is not the case for raw pointers "
-"(unsafe), and this is a common source of errors with unsafe Rust."
+"This won't compile, demonstrating that the annotations are checked for validity "
+"by the compiler. Note that this is not the case for raw pointers (unsafe), and "
+"this is a common source of errors with unsafe Rust."
msgstr ""
"No se hará la compilación, lo que demuestra que el compilador comprueba la "
-"validez de las anotaciones. Debes tener en cuenta que este no es el caso de "
-"los punteros sin formato (inseguros), y es uno de los motivos por los que se "
+"validez de las anotaciones. Debes tener en cuenta que este no es el caso de los "
+"punteros sin formato (inseguros), y es uno de los motivos por los que se "
"cometen errores con Rust inseguro."
#: src/lifetimes/lifetime-elision.md
msgid ""
-"Students may ask when to use lifetimes. Rust borrows _always_ have "
-"lifetimes. Most of the time, elision and type inference mean these don't "
-"need to be written out. In more complicated cases, lifetime annotations can "
-"help resolve ambiguity. Often, especially when prototyping, it's easier to "
-"just work with owned data by cloning values where necessary."
+"Students may ask when to use lifetimes. Rust borrows _always_ have lifetimes. "
+"Most of the time, elision and type inference mean these don't need to be "
+"written out. In more complicated cases, lifetime annotations can help resolve "
+"ambiguity. Often, especially when prototyping, it's easier to just work with "
+"owned data by cloning values where necessary."
msgstr ""
-"Puede que los participantes pregunten cuándo se deben usar los tiempos de "
-"vida. Los préstamos de Rust _siempre_ tienen tiempos de vida. En la mayoría "
-"de las ocasiones, la omisión y la inferencia de tipos hacen que no sea "
-"necesario escribirlos. En casos más complicados, las anotaciones de tiempos "
-"de vida pueden ayudar a resolver la ambigüedad. A menudo, sobre todo cuando "
-"se llevan a cabo prototipos, resulta más fácil trabajar únicamente con datos "
-"propios, clonando valores siempre que sea necesario."
+"Puede que los participantes pregunten cuándo se deben usar los tiempos de vida. "
+"Los préstamos de Rust _siempre_ tienen tiempos de vida. En la mayoría de las "
+"ocasiones, la omisión y la inferencia de tipos hacen que no sea necesario "
+"escribirlos. En casos más complicados, las anotaciones de tiempos de vida "
+"pueden ayudar a resolver la ambigüedad. A menudo, sobre todo cuando se llevan a "
+"cabo prototipos, resulta más fácil trabajar únicamente con datos propios, "
+"clonando valores siempre que sea necesario."
#: src/lifetimes/struct-lifetimes.md
msgid "Lifetimes in Data Structures"
msgstr "Tiempos de vida en estructuras de datos"
#: src/lifetimes/struct-lifetimes.md
-msgid ""
-"If a data type stores borrowed data, it must be annotated with a lifetime:"
+msgid "If a data type stores borrowed data, it must be annotated with a lifetime:"
msgstr ""
-"Si un tipo de datos almacena datos prestados, se debe anotar con tiempo de "
-"vida:"
+"Si un tipo de datos almacena datos prestados, se debe anotar con tiempo de vida:"
#: src/lifetimes/struct-lifetimes.md
msgid "\"Bye {text}!\""
@@ -9716,8 +9539,8 @@ msgstr "\"¡Adiós, {text}!\""
#: src/lifetimes/struct-lifetimes.md
msgid "\"The quick brown fox jumps over the lazy dog.\""
msgstr ""
-"\"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba "
-"el saxofón detrás del palenque de paja.\""
+"\"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el "
+"saxofón detrás del palenque de paja.\""
#: src/lifetimes/struct-lifetimes.md
msgid "// erase(text);\n"
@@ -9743,21 +9566,21 @@ msgstr ""
#: src/lifetimes/struct-lifetimes.md
msgid ""
-"If `text` is consumed before the end of the lifetime of `fox` (or `dog`), "
-"the borrow checker throws an error."
+"If `text` is consumed before the end of the lifetime of `fox` (or `dog`), the "
+"borrow checker throws an error."
msgstr ""
-"Si `text` se consume antes de que acabe el tiempo de vida de `fox` (o "
-"`dog`), el _borrow checker_ (verificador de préstamos) muestra un error."
+"Si `text` se consume antes de que acabe el tiempo de vida de `fox` (o `dog`), "
+"el _borrow checker_ (verificador de préstamos) muestra un error."
#: src/lifetimes/struct-lifetimes.md
msgid ""
-"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."
+"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."
msgstr ""
-"Los tipos con datos prestados (_borrowed_) obligan a los usuarios a "
-"conservar los datos originales. Esto puede ser útil para crear vistas "
-"ligeras aunque, por lo general, hace que sean un poco más difíciles de usar."
+"Los tipos con datos prestados (_borrowed_) obligan a los usuarios a conservar "
+"los datos originales. Esto puede ser útil para crear vistas ligeras aunque, por "
+"lo general, hace que sean un poco más difíciles de usar."
#: src/lifetimes/struct-lifetimes.md
msgid "When possible, make data structures own their data directly."
@@ -9769,40 +9592,39 @@ msgstr ""
msgid ""
"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."
+"relationships between the references themselves, in addition to the lifetime of "
+"the struct itself. Those are very advanced use cases."
msgstr ""
"Algunas estructuras con varias referencias dentro pueden tener más de una "
-"anotación de tiempo de vida. Esto puede ser necesario si hay que describir "
-"las relaciones de tiempo de vida entre las propias referencias, además del "
-"tiempo de vida de la propia estructura. Estos son casos prácticos muy "
-"avanzados."
+"anotación de tiempo de vida. Esto puede ser necesario si hay que describir las "
+"relaciones de tiempo de vida entre las propias referencias, además del tiempo "
+"de vida de la propia estructura. Estos son casos prácticos muy avanzados."
#: src/lifetimes/exercise.md
msgid ""
"In this exercise, you will build a parser for the [protobuf binary encoding]"
-"(https://protobuf.dev/programming-guides/encoding/). Don't worry, it's "
-"simpler than it seems! This illustrates a common parsing pattern, passing "
-"slices of data. The underlying data itself is never copied."
+"(https://protobuf.dev/programming-guides/encoding/). Don't worry, it's simpler "
+"than it seems! This illustrates a common parsing pattern, passing slices of "
+"data. The underlying data itself is never copied."
msgstr ""
-"En este ejercicio, vas a compilar un analizador para la [codificación "
-"binaria de protobuf](https://protobuf.dev/programming-guides/encoding/). No "
-"hay nada de lo que preocuparse, es más sencillo de lo que parece. En este "
-"ejemplo se muestra un patrón de análisis muy habitual que consiste en "
-"transferir fracciones de datos. Los datos subyacentes nunca se copian."
+"En este ejercicio, vas a compilar un analizador para la [codificación binaria "
+"de protobuf](https://protobuf.dev/programming-guides/encoding/). No hay nada de "
+"lo que preocuparse, es más sencillo de lo que parece. En este ejemplo se "
+"muestra un patrón de análisis muy habitual que consiste en transferir "
+"fracciones de datos. Los datos subyacentes nunca se copian."
#: src/lifetimes/exercise.md
msgid ""
"Fully parsing a protobuf message requires knowing the types of the fields, "
-"indexed by their field numbers. That is typically provided in a `proto` "
-"file. In this exercise, we'll encode that information into `match` "
-"statements in functions that get called for each field."
+"indexed by their field numbers. That is typically provided in a `proto` file. "
+"In this exercise, we'll encode that information into `match` statements in "
+"functions that get called for each field."
msgstr ""
"Para poder llevar a cabo un análisis completo de un mensaje de protobuf, es "
"necesario conocer los tipos de campos, indexados por el número de campo. Se "
-"suelen proporcionar en un archivo `proto`. En este ejercicio, codificaremos "
-"esa información en declaraciones `match` en funciones a las que se llama "
-"para cada campo."
+"suelen proporcionar en un archivo `proto`. En este ejercicio, codificaremos esa "
+"información en declaraciones `match` en funciones a las que se llama para cada "
+"campo."
#: src/lifetimes/exercise.md
msgid "We'll use the following proto:"
@@ -9810,29 +9632,29 @@ msgstr "Usaremos el proto que sigue:"
#: src/lifetimes/exercise.md
msgid ""
-"A proto message is encoded as a series of fields, one after the next. Each "
-"is implemented as a \"tag\" followed by the value. The tag contains a field "
-"number (e.g., `2` for the `id` field of a `Person` message) and a wire type "
-"defining how the payload should be determined from the byte stream."
+"A proto message is encoded as a series of fields, one after the next. Each is "
+"implemented as a \"tag\" followed by the value. The tag contains a field number "
+"(e.g., `2` for the `id` field of a `Person` message) and a wire type defining "
+"how the payload should be determined from the byte stream."
msgstr ""
"Un mensaje proto se codifica como una serie de campos, uno detrás del otro. "
"Cada uno se implementa como una \"etiqueta\" seguida del valor. La etiqueta "
-"contiene un número de campo (por ejemplo, `2` para el campo `id` de un "
-"mensaje de `Person`) y un tipo de wire que define cómo se debe definir la "
-"carga útil a partir del flujo de bytes."
+"contiene un número de campo (por ejemplo, `2` para el campo `id` de un mensaje "
+"de `Person`) y un tipo de wire que define cómo se debe definir la carga útil a "
+"partir del flujo de bytes."
#: src/lifetimes/exercise.md
msgid ""
"Integers, including the tag, are represented with a variable-length encoding "
-"called VARINT. Luckily, `parse_varint` is defined for you below. The given "
-"code also defines callbacks to handle `Person` and `PhoneNumber` fields, and "
-"to parse a message into a series of calls to those callbacks."
+"called VARINT. Luckily, `parse_varint` is defined for you below. The given code "
+"also defines callbacks to handle `Person` and `PhoneNumber` fields, and to "
+"parse a message into a series of calls to those callbacks."
msgstr ""
-"Los números enteros, incluida la etiqueta, se representan con una "
-"codificación de longitud variable denominada VARINT. A continuación puedes "
-"consultar la definición de `parse_varint`. El código dado también define "
-"retrollamadas para gestionar los campos `Person` y `PhoneNumber`, así como "
-"analizar un mensaje en una serie de llamadas a dichas retrollamadas."
+"Los números enteros, incluida la etiqueta, se representan con una codificación "
+"de longitud variable denominada VARINT. A continuación puedes consultar la "
+"definición de `parse_varint`. El código dado también define retrollamadas para "
+"gestionar los campos `Person` y `PhoneNumber`, así como analizar un mensaje en "
+"una serie de llamadas a dichas retrollamadas."
#: src/lifetimes/exercise.md
msgid ""
@@ -9853,13 +9675,11 @@ msgstr "/// Varint WireType indica que el valor es un único VARINT.\n"
#: src/lifetimes/exercise.md src/lifetimes/solution.md
msgid ""
"//I64, -- not needed for this exercise\n"
-" /// The Len WireType indicates that the value is a length represented as "
-"a\n"
+" /// The Len WireType indicates that the value is a length represented as a\n"
" /// VARINT followed by exactly that number of bytes.\n"
msgstr ""
"//I64, -- no es necesario para este ejercicio\n"
-" /// El Len WireType indica que el valor es una longitud representada "
-"como\n"
+" /// El Len WireType indica que el valor es una longitud representada como\n"
" /// VARINT seguida exactamente de ese número de bytes.\n"
#: src/lifetimes/exercise.md src/lifetimes/solution.md
@@ -9912,11 +9732,9 @@ msgid "\"Expected `i32` to be an `I32` field\""
msgstr "\"`i32` era esperado ser un campo `I32`\""
#: src/lifetimes/exercise.md src/lifetimes/solution.md
-msgid ""
-"/// Parse a VARINT, returning the parsed value and the remaining bytes.\n"
+msgid "/// Parse a VARINT, returning the parsed value and the remaining bytes.\n"
msgstr ""
-"/// Analiza un VARINT, que devuelve el valor analizado y los bytes "
-"restantes.\n"
+"/// Analiza un VARINT, que devuelve el valor analizado y los bytes restantes.\n"
#: src/lifetimes/exercise.md src/lifetimes/solution.md
msgid "\"Not enough bytes for varint\""
@@ -9948,8 +9766,7 @@ msgstr "/// Analiza un campo y haz que devuelva los bytes restantes.\n"
#: src/lifetimes/exercise.md
msgid ""
-"\"Based on the wire type, build a Field, consuming as many bytes as "
-"necessary.\""
+"\"Based on the wire type, build a Field, consuming as many bytes as necessary.\""
msgstr ""
"\"En función del tipo de wire, crea un campo que utilice todos los bytes "
"necesarios.\""
@@ -9966,8 +9783,8 @@ msgid ""
"///\n"
"/// The entire input is consumed.\n"
msgstr ""
-"/// Analiza un mensaje de los datos proporcionados, llamando a `T::"
-"add_field` para cada campo\n"
+"/// Analiza un mensaje de los datos proporcionados, llamando a `T::add_field` "
+"para cada campo\n"
"/// del mensaje.\n"
"///\n"
"/// Se utilizan todos los datos introducidos.\n"
@@ -9978,17 +9795,17 @@ msgstr "// TAREA: implementar ProtoMessage para Person y PhoneNumber.\n"
#: src/lifetimes/exercise.md
msgid ""
-"In this exercise there are various cases where protobuf parsing might fail, "
-"e.g. if you try to parse an `i32` when there are fewer than 4 bytes left in "
-"the data buffer. In normal Rust code we'd handle this with the `Result` "
-"enum, but for simplicity in this exercise we panic if any errors are "
-"encountered. On day 4 we'll cover error handling in Rust in more detail."
+"In this exercise there are various cases where protobuf parsing might fail, e."
+"g. if you try to parse an `i32` when there are fewer than 4 bytes left in the "
+"data buffer. In normal Rust code we'd handle this with the `Result` enum, but "
+"for simplicity in this exercise we panic if any errors are encountered. On day "
+"4 we'll cover error handling in Rust in more detail."
msgstr ""
-"En este ejercicio hay varios casos en los cuales la lección del protobuf "
-"puede fallar, e.g. si intentas leer un `i32` cuando hay menos de 4 bytes "
-"restantes en el buffer de datos. Normalmente usaríamos el enum `Result`, "
-"pero para simplificar el ejercicio inducimos pánico si ocurre un error. En "
-"el día 4 cubriremos el manejo de errores en Rust en mas detall"
+"En este ejercicio hay varios casos en los cuales la lección del protobuf puede "
+"fallar, e.g. si intentas leer un `i32` cuando hay menos de 4 bytes restantes en "
+"el buffer de datos. Normalmente usaríamos el enum `Result`, pero para "
+"simplificar el ejercicio inducimos pánico si ocurre un error. En el día 4 "
+"cubriremos el manejo de errores en Rust en mas detall"
#: src/lifetimes/solution.md
msgid "\"len not a valid `usize`\""
@@ -10031,8 +9848,7 @@ msgstr "Probando."
#: src/welcome-day-4.md
msgid "Error handling: panics, `Result`, and the try operator `?`."
-msgstr ""
-"Gestión de errores: _panics_ (pánicos), `Result` y el operador _try_ `?`."
+msgstr "Gestión de errores: _panics_ (pánicos), `Result` y el operador _try_ `?`."
#: src/welcome-day-4.md
msgid ""
@@ -10046,8 +9862,8 @@ msgid ""
"Including 10 minute breaks, this session should take about 2 hours and 40 "
"minutes. It contains:"
msgstr ""
-"Contando con los descansos de 10 minutos, la duración prevista de la sesión "
-"es de unas 2 horas y 40 minutos. Contiene:"
+"Contando con los descansos de 10 minutos, la duración prevista de la sesión es "
+"de unas 2 horas y 40 minutos. Contiene:"
#: src/iterators.md
msgid "Iterator"
@@ -10063,13 +9879,13 @@ msgstr "FromIterator"
#: src/iterators/iterator.md
msgid ""
-"The [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) "
-"trait supports iterating over values in a collection. It requires a `next` "
-"method and provides lots of methods. Many standard library types implement "
-"`Iterator`, and you can implement it yourself, too:"
+"The [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) trait "
+"supports iterating over values in a collection. It requires a `next` method and "
+"provides lots of methods. Many standard library types implement `Iterator`, and "
+"you can implement it yourself, too:"
msgstr ""
-"El trait [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator."
-"html) permite iterar valores en una colección. Requiere un método `next` y "
+"El trait [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) "
+"permite iterar valores en una colección. Requiere un método `next` y "
"proporciona muchos otros métodos. Muchos tipos de bibliotecas estándar "
"implementan `Iterator` y también está a nuestro alcance:"
@@ -10079,42 +9895,41 @@ msgstr "\"fib({i}): {n}\""
#: src/iterators/iterator.md
msgid ""
-"The `Iterator` trait implements many common functional programming "
-"operations over collections (e.g. `map`, `filter`, `reduce`, etc). This is "
-"the trait where you can find all the documentation about them. In Rust these "
-"functions should produce the code as efficient as equivalent imperative "
-"implementations."
+"The `Iterator` trait implements many common functional programming operations "
+"over collections (e.g. `map`, `filter`, `reduce`, etc). This is the trait where "
+"you can find all the documentation about them. In Rust these functions should "
+"produce the code as efficient as equivalent imperative implementations."
msgstr ""
"El trait `Iterator` implementa muchas operaciones comunes de programación "
-"funcional en colecciones (por ejemplo, `map`, `filter`, `reduce`, etc.). "
-"Este es el trait que te permite encontrar toda la documentación sobre ellas. "
-"En Rust, estas funciones deberían generar un código tan eficiente como las "
+"funcional en colecciones (por ejemplo, `map`, `filter`, `reduce`, etc.). Este "
+"es el trait que te permite encontrar toda la documentación sobre ellas. En "
+"Rust, estas funciones deberían generar un código tan eficiente como las "
"implementaciones imperativas equivalentes."
#: src/iterators/iterator.md
msgid ""
"`IntoIterator` is the trait that makes for loops work. It is implemented by "
-"collection types such as `Vec` and references to them such as `&Vec` "
-"and `&[T]`. Ranges also implement it. This is why you can iterate over a "
-"vector with `for i in some_vec { .. }` but `some_vec.next()` doesn't exist."
+"collection types such as `Vec` and references to them such as `&Vec` and "
+"`&[T]`. Ranges also implement it. This is why you can iterate over a vector "
+"with `for i in some_vec { .. }` but `some_vec.next()` doesn't exist."
msgstr ""
-"`IntoIterator` es el trait que hace que los bucles funcionen. Se implementa "
-"a través de tipos de colecciones, como `Vec`, y de referencias a ellas, "
-"como `&Vec` y `&[T]`. Los rangos también lo implementan. Esta es la razón "
-"por la que se puede iterar sobre un vector con `for i in some_vec { .. }`, "
-"pero `some_vec.next()` no existe."
+"`IntoIterator` es el trait que hace que los bucles funcionen. Se implementa a "
+"través de tipos de colecciones, como `Vec`, y de referencias a ellas, como "
+"`&Vec` y `&[T]`. Los rangos también lo implementan. Esta es la razón por la "
+"que se puede iterar sobre un vector con `for i in some_vec { .. }`, pero "
+"`some_vec.next()` no existe."
#: src/iterators/intoiterator.md
msgid ""
"The `Iterator` trait tells you how to _iterate_ once you have created an "
-"iterator. The related trait [`IntoIterator`](https://doc.rust-lang.org/std/"
-"iter/trait.IntoIterator.html) defines how to create an iterator for a type. "
-"It is used automatically by the `for` loop."
+"iterator. The related trait [`IntoIterator`](https://doc.rust-lang.org/std/iter/"
+"trait.IntoIterator.html) defines how to create an iterator for a type. It is "
+"used automatically by the `for` loop."
msgstr ""
-"El trait `Iterator` te indica cómo _iterar_ una vez que has creado un "
-"iterador. El trait relacionado [`IntoIterator`](https://doc.rust-lang.org/"
-"std/iter/trait.IntoIterator.html) indica cómo crear un iterador para un "
-"tipo. Es usado automáticamente por los bucles `for`."
+"El trait `Iterator` te indica cómo _iterar_ una vez que has creado un iterador. "
+"El trait relacionado [`IntoIterator`](https://doc.rust-lang.org/std/iter/trait."
+"IntoIterator.html) indica cómo crear un iterador para un tipo. Es usado "
+"automáticamente por los bucles `for`."
#: src/iterators/intoiterator.md
msgid "\"point = {x}, {y}\""
@@ -10125,8 +9940,8 @@ msgid ""
"Click through to the docs for `IntoIterator`. Every implementation of "
"`IntoIterator` must declare two types:"
msgstr ""
-"Haz clic para leer la documentación para `IntoIterator`. Cada implementación "
-"de `IntoIterator` debe declarar dos tipos:"
+"Haz clic para leer la documentación para `IntoIterator`. Cada implementación de "
+"`IntoIterator` debe declarar dos tipos:"
#: src/iterators/intoiterator.md
msgid "`Item`: the type to iterate over, such as `i8`,"
@@ -10141,38 +9956,36 @@ msgid ""
"Note that `IntoIter` and `Item` are linked: the iterator must have the same "
"`Item` type, which means that it returns `Option- `"
msgstr ""
-"Ten en cuenta que `IntoIter` y `Item` están vinculados: el iterador debe "
-"tener el mismo tipo de `Item`, lo que significa que devuelve `Option
- `."
+"Ten en cuenta que `IntoIter` y `Item` están vinculados: el iterador debe tener "
+"el mismo tipo de `Item`, lo que significa que devuelve `Option
- `."
#: src/iterators/intoiterator.md
msgid "The example iterates over all combinations of x and y coordinates."
msgstr ""
-"En el ejemplo se itera sobre todas las combinaciones de las coordenadas x e "
-"y."
+"En el ejemplo se itera sobre todas las combinaciones de las coordenadas x e y."
#: src/iterators/intoiterator.md
msgid ""
"Try iterating over the grid twice in `main`. Why does this fail? Note that "
"`IntoIterator::into_iter` takes ownership of `self`."
msgstr ""
-"Prueba a iterar sobre la cuadrícula dos veces en `main`. ¿Por qué no "
-"funciona? Ten en cuenta que `IntoIterator::into_iter` tiene la propiedad de "
-"`self`."
+"Prueba a iterar sobre la cuadrícula dos veces en `main`. ¿Por qué no funciona? "
+"Ten en cuenta que `IntoIterator::into_iter` tiene la propiedad de `self`."
#: src/iterators/intoiterator.md
msgid ""
"Fix this issue by implementing `IntoIterator` for `&Grid` and storing a "
"reference to the `Grid` in `GridIter`."
msgstr ""
-"Soluciona este problema implementando `IntoIterator` para `&Grid` y "
-"almacenando una referencia a `Grid` en `GridIter`."
+"Soluciona este problema implementando `IntoIterator` para `&Grid` y almacenando "
+"una referencia a `Grid` en `GridIter`."
#: src/iterators/intoiterator.md
msgid ""
-"The same problem can occur for standard library types: `for e in "
-"some_vector` will take ownership of `some_vector` and iterate over owned "
-"elements from that vector. Use `for e in &some_vector` instead, to iterate "
-"over references to elements of `some_vector`."
+"The same problem can occur for standard library types: `for e in some_vector` "
+"will take ownership of `some_vector` and iterate over owned elements from that "
+"vector. Use `for e in &some_vector` instead, to iterate over references to "
+"elements of `some_vector`."
msgstr ""
"Lo mismo puede ocurrir con los tipos de biblioteca estándar: `for e in "
"some_vector` adquirirá la propiedad de `some_vector` e iterará sobre los "
@@ -10182,8 +9995,8 @@ msgstr ""
#: src/iterators/fromiterator.md
msgid ""
"[`FromIterator`](https://doc.rust-lang.org/std/iter/trait.FromIterator.html) "
-"lets you build a collection from an [`Iterator`](https://doc.rust-lang.org/"
-"std/iter/trait.Iterator.html)."
+"lets you build a collection from an [`Iterator`](https://doc.rust-lang.org/std/"
+"iter/trait.Iterator.html)."
msgstr ""
"[`FromIterator`](https://doc.rust-lang.org/std/iter/trait.FromIterator.html) "
"permite construir una colección a partir de un [`Iterator`](https://doc.rust-"
@@ -10203,21 +10016,20 @@ msgstr "Hay dos formas de especificar `B` en este método:"
#: src/iterators/fromiterator.md
msgid ""
-"With the \"turbofish\": `some_iterator.collect::
()`, as "
-"shown. The `_` shorthand used here lets Rust infer the type of the `Vec` "
-"elements."
+"With the \"turbofish\": `some_iterator.collect::()`, as shown. "
+"The `_` shorthand used here lets Rust infer the type of the `Vec` elements."
msgstr ""
"Con \"turbofish\": `some_iterator.collect::()`, tal como se "
-"muestra. La forma abreviada de `_` que se utiliza aquí permite que Rust "
-"infiera el tipo de los elementos `Vec`."
+"muestra. La forma abreviada de `_` que se utiliza aquí permite que Rust infiera "
+"el tipo de los elementos `Vec`."
#: src/iterators/fromiterator.md
msgid ""
"With type inference: `let prime_squares: Vec<_> = some_iterator.collect()`. "
"Rewrite the example to use this form."
msgstr ""
-"Con inferencia de tipos: `let prime_squares: Vec<_> = some_iterator."
-"collect()`. Reescribe el ejemplo para usar esta opción."
+"Con inferencia de tipos: `let prime_squares: Vec<_> = some_iterator.collect()`. "
+"Reescribe el ejemplo para usar esta opción."
#: src/iterators/fromiterator.md
msgid ""
@@ -10225,20 +10037,20 @@ msgid ""
"There are also more specialized implementations which let you do cool things "
"like convert an `Iterator- >` into a `Result
, E>`."
msgstr ""
-"Existen implementaciones básicas de `FromIterator` para `Vec`, `HashMap`, "
-"etc. También existen implementaciones mas especializadas que te dejan hacer "
-"cosas padres como convertir un `Iterator- >` a un "
-"`Result
, E>`."
+"Existen implementaciones básicas de `FromIterator` para `Vec`, `HashMap`, etc. "
+"También existen implementaciones mas especializadas que te dejan hacer cosas "
+"padres como convertir un `Iterator- >` a un `Result
, "
+"E>`."
#: src/iterators/exercise.md
msgid ""
-"In this exercise, you will need to find and use some of the provided methods "
-"in the [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) "
-"trait to implement a complex calculation."
+"In this exercise, you will need to find and use some of the provided methods in "
+"the [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) trait "
+"to implement a complex calculation."
msgstr ""
-"En este ejercicio, necesitaras encontrar y usar métodos del trait "
-"[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) para "
-"implementar una calculación compleja."
+"En este ejercicio, necesitaras encontrar y usar métodos del trait [`Iterator`]"
+"(https://doc.rust-lang.org/std/iter/trait.Iterator.html) para implementar una "
+"calculación compleja."
#: src/iterators/exercise.md
msgid ""
@@ -10246,22 +10058,20 @@ msgid ""
"pass. Use an iterator expression and `collect` the result to construct the "
"return value."
msgstr ""
-"Copia el siguiente fragmento de código en la página y haz que las pruebas sucedan sin error. Usa una expresión de iterador "
-"y `collect` para construir el valor devuelto."
+"Copia el siguiente fragmento de código en la página y haz que las pruebas sucedan sin error. Usa una expresión de iterador y "
+"`collect` para construir el valor devuelto."
#: src/iterators/exercise.md src/iterators/solution.md
msgid ""
-"/// Calculate the differences between elements of `values` offset by "
-"`offset`,\n"
+"/// Calculate the differences between elements of `values` offset by `offset`,\n"
"/// wrapping around from the end of `values` to the beginning.\n"
"///\n"
"/// Element `n` of the result is `values[(n+offset)%len] - values[n]`.\n"
msgstr ""
-"/// Calcula las diferencias entre los elementos de `values` offset por "
-"offset,\n"
-"/// envolviendo de esta forma los elementos desde el final de `values` hasta "
-"el principio.\n"
+"/// Calcula las diferencias entre los elementos de `values` offset por offset,\n"
+"/// envolviendo de esta forma los elementos desde el final de `values` hasta el "
+"principio.\n"
"///\n"
"/// El elemento `n` del resultado es `values[(n+offset)%len] - values[n]`.\n"
@@ -10272,8 +10082,8 @@ msgstr "use, super, self"
#: src/modules/modules.md
msgid "We have seen how `impl` blocks let us namespace functions to a type."
msgstr ""
-"Hemos visto cómo los bloques `impl` nos permiten asignar espacios de nombres "
-"de funciones a un tipo."
+"Hemos visto cómo los bloques `impl` nos permiten asignar espacios de nombres de "
+"funciones a un tipo."
#: src/modules/modules.md
msgid "Similarly, `mod` lets us namespace types and functions:"
@@ -10291,19 +10101,19 @@ msgstr "\"En el módulo bar\""
#: src/modules/modules.md
msgid ""
-"Packages provide functionality and include a `Cargo.toml` file that "
-"describes how to build a bundle of 1+ crates."
+"Packages provide functionality and include a `Cargo.toml` file that describes "
+"how to build a bundle of 1+ crates."
msgstr ""
-"Los paquetes ofrecen funciones e incluyen un archivo `Cargo.toml` que "
-"describe cómo compilar un paquete de más de un crate."
+"Los paquetes ofrecen funciones e incluyen un archivo `Cargo.toml` que describe "
+"cómo compilar un paquete de más de un crate."
#: src/modules/modules.md
msgid ""
-"Crates are a tree of modules, where a binary crate creates an executable and "
-"a library crate compiles to a library."
+"Crates are a tree of modules, where a binary crate creates an executable and a "
+"library crate compiles to a library."
msgstr ""
-"Los crates son un árbol de módulos, donde un crate binario crea un "
-"ejecutable y un crate de biblioteca compila una biblioteca."
+"Los crates son un árbol de módulos, donde un crate binario crea un ejecutable y "
+"un crate de biblioteca compila una biblioteca."
#: src/modules/modules.md
msgid "Modules define organization, scope, and are the focus of this section."
@@ -10312,20 +10122,18 @@ msgstr ""
"sección."
#: src/modules/filesystem.md
-msgid ""
-"Omitting the module content will tell Rust to look for it in another file:"
-msgstr ""
-"Omitir el contenido del módulo hará que Rust lo busque en otro archivo:"
+msgid "Omitting the module content will tell Rust to look for it in another file:"
+msgstr "Omitir el contenido del módulo hará que Rust lo busque en otro archivo:"
#: src/modules/filesystem.md
msgid ""
-"This tells rust that the `garden` module content is found at `src/garden."
-"rs`. Similarly, a `garden::vegetables` module can be found at `src/garden/"
-"vegetables.rs`."
+"This tells rust that the `garden` module content is found at `src/garden.rs`. "
+"Similarly, a `garden::vegetables` module can be found at `src/garden/vegetables."
+"rs`."
msgstr ""
"Esto indica que el contenido del módulo `garden` se encuentra en `src/garden."
-"rs`. Del mismo modo, el módulo `garden::vegetables` se encuentra en `src/"
-"garden/vegetables.rs`."
+"rs`. Del mismo modo, el módulo `garden::vegetables` se encuentra en `src/garden/"
+"vegetables.rs`."
#: src/modules/filesystem.md
msgid "The `crate` root is in:"
@@ -10341,13 +10149,12 @@ msgstr "`src/main.rs` (para un crate binario)"
#: src/modules/filesystem.md
msgid ""
-"Modules defined in files can be documented, too, using \"inner doc "
-"comments\". These document the item that contains them -- in this case, a "
-"module."
+"Modules defined in files can be documented, too, using \"inner doc comments\". "
+"These document the item that contains them -- in this case, a module."
msgstr ""
"Los módulos definidos en archivos también se pueden documentar mediante "
-"\"comentarios internos del documento\". En ellos se indica el elemento que "
-"los contiene, en este caso, un módulo."
+"\"comentarios internos del documento\". En ellos se indica el elemento que los "
+"contiene, en este caso, un módulo."
#: src/modules/filesystem.md
msgid ""
@@ -10376,32 +10183,31 @@ msgid ""
"Before Rust 2018, modules needed to be located at `module/mod.rs` instead of "
"`module.rs`, and this is still a working alternative for editions after 2018."
msgstr ""
-"Antes de Rust 2018, los módulos debían ubicarse en `module/mod.rs` en lugar "
-"de en `module.rs`. Esta alternativa sigue existiendo en las ediciones "
-"posteriores a 2018."
+"Antes de Rust 2018, los módulos debían ubicarse en `module/mod.rs` en lugar de "
+"en `module.rs`. Esta alternativa sigue existiendo en las ediciones posteriores "
+"a 2018."
#: src/modules/filesystem.md
msgid ""
-"The main reason to introduce `filename.rs` as alternative to `filename/mod."
-"rs` was because many files named `mod.rs` can be hard to distinguish in IDEs."
+"The main reason to introduce `filename.rs` as alternative to `filename/mod.rs` "
+"was because many files named `mod.rs` can be hard to distinguish in IDEs."
msgstr ""
-"El principal motivo de introducir `filename.rs` en lugar de `filename/mod."
-"rs` se debe a que si muchos archivos llamados `mod.rs` puede ser difícil "
+"El principal motivo de introducir `filename.rs` en lugar de `filename/mod.rs` "
+"se debe a que si muchos archivos llamados `mod.rs` puede ser difícil "
"distinguirlos en IDEs."
#: src/modules/filesystem.md
msgid "Deeper nesting can use folders, even if the main module is a file:"
msgstr ""
-"Un anidamiento más profundo puede usar carpetas, incluso si el módulo "
-"principal es un archivo:"
+"Un anidamiento más profundo puede usar carpetas, incluso si el módulo principal "
+"es un archivo:"
#: src/modules/filesystem.md
msgid ""
-"The place rust will look for modules can be changed with a compiler "
-"directive:"
+"The place rust will look for modules can be changed with a compiler directive:"
msgstr ""
-"El lugar donde Rust buscará los módulos se puede cambiar con una directiva "
-"del compilador:"
+"El lugar donde Rust buscará los módulos se puede cambiar con una directiva del "
+"compilador:"
#: src/modules/filesystem.md
msgid "\"some/path.rs\""
@@ -10409,8 +10215,8 @@ msgstr "\"some/path.rs\""
#: src/modules/filesystem.md
msgid ""
-"This is useful, for example, if you would like to place tests for a module "
-"in a file named `some_module_test.rs`, similar to the convention in Go."
+"This is useful, for example, if you would like to place tests for a module in a "
+"file named `some_module_test.rs`, similar to the convention in Go."
msgstr ""
"Esto resulta útil, por ejemplo, si deseas colocar pruebas de un módulo en un "
"archivo denominado `some_module_test.rs`, similar a la convención en Go."
@@ -10422,8 +10228,8 @@ msgstr "Los módulos marcan el límite de la privacidad:"
#: src/modules/visibility.md
msgid "Module items are private by default (hides implementation details)."
msgstr ""
-"Los elementos del módulo son privados de forma predeterminada (se ocultan "
-"los detalles de implementación)."
+"Los elementos del módulo son privados de forma predeterminada (se ocultan los "
+"detalles de implementación)."
#: src/modules/visibility.md
msgid "Parent and sibling items are always visible."
@@ -10431,11 +10237,11 @@ msgstr "Los elementos superiores y los del mismo nivel siempre están visibles."
#: src/modules/visibility.md
msgid ""
-"In other words, if an item is visible in module `foo`, it's visible in all "
-"the descendants of `foo`."
+"In other words, if an item is visible in module `foo`, it's visible in all the "
+"descendants of `foo`."
msgstr ""
-"Es decir, si un elemento está visible en el módulo `foo`, se verá en todos "
-"los elementos descendientes de `foo`."
+"Es decir, si un elemento está visible en el módulo `foo`, se verá en todos los "
+"elementos descendientes de `foo`."
#: src/modules/visibility.md
msgid "\"outer::private\""
@@ -10459,11 +10265,11 @@ msgstr "Haz que los módulos sean públicos con la palabra clave `pub`."
#: src/modules/visibility.md
msgid ""
-"Additionally, there are advanced `pub(...)` specifiers to restrict the scope "
-"of public visibility."
+"Additionally, there are advanced `pub(...)` specifiers to restrict the scope of "
+"public visibility."
msgstr ""
-"Además, hay especificadores `pub(...)` avanzados para restringir el ámbito "
-"de la visibilidad pública."
+"Además, hay especificadores `pub(...)` avanzados para restringir el ámbito de "
+"la visibilidad pública."
#: src/modules/visibility.md
msgid ""
@@ -10484,16 +10290,16 @@ msgstr ""
#: src/modules/visibility.md
msgid ""
-"In any case, visibility must be granted to an ancestor module (and all of "
-"its descendants)."
+"In any case, visibility must be granted to an ancestor module (and all of its "
+"descendants)."
msgstr ""
-"En cualquier caso, se debe dar visibilidad a un módulo antecedente (y a "
-"todos sus descendientes)."
+"En cualquier caso, se debe dar visibilidad a un módulo antecedente (y a todos "
+"sus descendientes)."
#: src/modules/paths.md
msgid ""
-"A module can bring symbols from another module into scope with `use`. You "
-"will typically see something like this at the top of each module:"
+"A module can bring symbols from another module into scope with `use`. You will "
+"typically see something like this at the top of each module:"
msgstr ""
"Un módulo puede incluir símbolos de otro módulo en el ámbito con `use`. "
"Normalmente, se ve algo como esto en la parte superior de cada módulo:"
@@ -10532,8 +10338,8 @@ msgstr "`bar::foo` hace referencia a `foo` en el crate `bar`."
#: src/modules/paths.md
msgid ""
-"It is common to \"re-export\" symbols at a shorter path. For example, the "
-"top-level `lib.rs` in a crate might have"
+"It is common to \"re-export\" symbols at a shorter path. For example, the top-"
+"level `lib.rs` in a crate might have"
msgstr ""
"Es habitual \"volver a exportar\" los símbolos en una ruta más corta. Por "
"ejemplo, el archivo `lib.rs` de nivel superior de un crate puede hacer que"
@@ -10549,33 +10355,33 @@ msgstr ""
#: src/modules/paths.md
msgid ""
"For the most part, only items that appear in a module need to be `use`'d. "
-"However, a trait must be in scope to call any methods on that trait, even if "
-"a type implementing that trait is already in scope. For example, to use the "
+"However, a trait must be in scope to call any methods on that trait, even if a "
+"type implementing that trait is already in scope. For example, to use the "
"`read_to_string` method on a type implementing the `Read` trait, you need to "
"`use std::io::Read`."
msgstr ""
-"La mayoría de las veces, únicamente deben ser `use` los elementos que "
-"aparecen en un módulo. Sin embargo, un trait debe encontrarse dentro del "
-"ámbito para llamar a cualquier método de ese trait, incluso aunque ya haya "
-"un tipo que implemente dicho trait dentro del ámbito. Por ejemplo, para usar "
-"el método `read_to_string` en un tipo que implemente el trait `Read`, debes "
-"usar std::io::Read`."
+"La mayoría de las veces, únicamente deben ser `use` los elementos que aparecen "
+"en un módulo. Sin embargo, un trait debe encontrarse dentro del ámbito para "
+"llamar a cualquier método de ese trait, incluso aunque ya haya un tipo que "
+"implemente dicho trait dentro del ámbito. Por ejemplo, para usar el método "
+"`read_to_string` en un tipo que implemente el trait `Read`, debes usar std::io::"
+"Read`."
#: src/modules/paths.md
msgid ""
-"The `use` statement can have a wildcard: `use std::io::*`. This is "
-"discouraged because it is not clear which items are imported, and those "
-"might change over time."
+"The `use` statement can have a wildcard: `use std::io::*`. This is discouraged "
+"because it is not clear which items are imported, and those might change over "
+"time."
msgstr ""
-"La instrucción `use` puede tener un comodín: `use std::io::*`. No se "
-"recomienda su uso porque no está claro qué elementos se importan y cuáles "
-"podrían cambiar con el tiempo."
+"La instrucción `use` puede tener un comodín: `use std::io::*`. No se recomienda "
+"su uso porque no está claro qué elementos se importan y cuáles podrían cambiar "
+"con el tiempo."
#: src/modules/exercise.md
msgid ""
-"In this exercise, you will reorganize a small GUI Library implementation. "
-"This library defines a `Widget` trait and a few implementations of that "
-"trait, as well as a `main` function."
+"In this exercise, you will reorganize a small GUI Library implementation. This "
+"library defines a `Widget` trait and a few implementations of that trait, as "
+"well as a `main` function."
msgstr ""
"En este ejercicio, vas a reorganizar una pequeña implementación de una "
"biblioteca GUI. Esta biblioteca define un trait `Widget` y algunas "
@@ -10587,8 +10393,8 @@ msgid ""
"module, so each widget type should get its own module."
msgstr ""
"Es habitual colocar cada tipo o conjunto de tipos que estén estrechamente "
-"relacionados en su propio módulo, por lo que cada tipo de widget debe tener "
-"su propio módulo."
+"relacionados en su propio módulo, por lo que cada tipo de widget debe tener su "
+"propio módulo."
#: src/modules/exercise.md
msgid "Cargo Setup"
@@ -10599,8 +10405,8 @@ msgid ""
"The Rust playground only supports one file, so you will need to make a Cargo "
"project on your local filesystem:"
msgstr ""
-"El playground de Rust solo admite un archivo, por lo que tendrás que crear "
-"un proyecto de Cargo en tu sistema de archivos local:"
+"El playground de Rust solo admite un archivo, por lo que tendrás que crear un "
+"proyecto de Cargo en tu sistema de archivos local:"
#: src/modules/exercise.md
msgid ""
@@ -10642,8 +10448,7 @@ msgstr "// Añade 4 espacios de relleno para los bordes\n"
#: src/modules/exercise.md
msgid ""
-"// TODO: Change draw_into to return Result<(), std::fmt::Error>. Then use "
-"the\n"
+"// TODO: Change draw_into to return Result<(), std::fmt::Error>. Then use the\n"
" // ?-operator here instead of .unwrap().\n"
msgstr ""
"// TAREAS: Cambia draw_into para devolver Result<(), std::fmt::Error>. A "
@@ -10697,9 +10502,9 @@ msgstr "\"Haz clic aquí\""
#: src/modules/exercise.md
msgid ""
-"Encourage students to divide the code in a way that feels natural for them, "
-"and get accustomed to the required `mod`, `use`, and `pub` declarations. "
-"Afterward, discuss what organizations are most idiomatic."
+"Encourage students to divide the code in a way that feels natural for them, and "
+"get accustomed to the required `mod`, `use`, and `pub` declarations. Afterward, "
+"discuss what organizations are most idiomatic."
msgstr ""
"Anima a los participantes a dividir el código de un modo que les parezca "
"natural para que se familiaricen con las declaraciones `mod`, `use` y `pub`. "
@@ -10768,8 +10573,8 @@ msgid ""
" // the ?-operator here instead of .unwrap().\n"
msgstr ""
"// TAREA: después de saber cómo gestionar los errores, puedes cambiar\n"
-" // draw_into para devolver Result<(), std::fmt::Error>. A "
-"continuación, usa\n"
+" // draw_into para devolver Result<(), std::fmt::Error>. A continuación, "
+"usa\n"
" // el operator ? en lugar de .unwrap().\n"
#: src/modules/solution.md
@@ -10790,18 +10595,17 @@ msgstr "Las pruebas unitarias se admiten en todo el código."
#: src/testing/unit-tests.md
msgid "Integration tests are supported via the `tests/` directory."
-msgstr ""
-"Las pruebas de integración se admiten a través del directorio `tests/`."
+msgstr "Las pruebas de integración se admiten a través del directorio `tests/`."
#: src/testing/unit-tests.md
msgid ""
-"Tests are marked with `#[test]`. Unit tests are often put in a nested "
-"`tests` module, using `#[cfg(test)]` to conditionally compile them only when "
-"building tests."
+"Tests are marked with `#[test]`. Unit tests are often put in a nested `tests` "
+"module, using `#[cfg(test)]` to conditionally compile them only when building "
+"tests."
msgstr ""
-"Las pruebas se marcan con `#[test]`. Las pruebas unitarias se suelen incluir "
-"en un módulo `tests` anidado en el que se utiliza `#[cfg(test)]` para "
-"compilarlas únicamente cuando se compilan las pruebas."
+"Las pruebas se marcan con `#[test]`. Las pruebas unitarias se suelen incluir en "
+"un módulo `tests` anidado en el que se utiliza `#[cfg(test)]` para compilarlas "
+"únicamente cuando se compilan las pruebas."
#: src/testing/unit-tests.md
msgid "\"Hello World\""
@@ -10879,8 +10683,8 @@ msgstr "El código se compilará y ejecutará como parte de `cargo test`."
#: src/testing/other.md
msgid ""
-"Adding `#` in the code will hide it from the docs, but will still compile/"
-"run it."
+"Adding `#` in the code will hide it from the docs, but will still compile/run "
+"it."
msgstr ""
"Si añades `#` al código, se ocultará de los documentos, pero se seguirá "
"compilando o ejecutando."
@@ -10896,13 +10700,13 @@ msgstr ""
#: src/testing/lints.md
msgid ""
-"The Rust compiler produces fantastic error messages, as well as helpful "
-"built-in lints. [Clippy](https://doc.rust-lang.org/clippy/) provides even "
-"more lints, organized into groups that can be enabled per-project."
+"The Rust compiler produces fantastic error messages, as well as helpful built-"
+"in lints. [Clippy](https://doc.rust-lang.org/clippy/) provides even more lints, "
+"organized into groups that can be enabled per-project."
msgstr ""
"El compilador de Rust crea mensajes de error muy buenos, así como lints "
-"integrados útiles. [Clippy](https://doc.rust-lang.org/clippy/) ofrece aún "
-"más lints, organizados en grupos que se pueden habilitar por proyecto."
+"integrados útiles. [Clippy](https://doc.rust-lang.org/clippy/) ofrece aún más "
+"lints, organizados en grupos que se pueden habilitar por proyecto."
#: src/testing/lints.md
msgid "\"X probably fits in a u16, right? {}\""
@@ -10910,29 +10714,29 @@ msgstr "\"Es probable que X encaje en una u16, ¿no? {}\""
#: src/testing/lints.md
msgid ""
-"Run the code sample and examine the error message. There are also lints "
-"visible here, but those will not be shown once the code compiles. Switch to "
-"the Playground site to show those lints."
+"Run the code sample and examine the error message. There are also lints visible "
+"here, but those will not be shown once the code compiles. Switch to the "
+"Playground site to show those lints."
msgstr ""
"Ejecuta el código de ejemplo y analiza el mensaje de error. También se ven "
-"lints, pero no se mostrarán una vez que se compile el código. Ve al "
-"playground para ver los lints."
+"lints, pero no se mostrarán una vez que se compile el código. Ve al playground "
+"para ver los lints."
#: src/testing/lints.md
msgid ""
-"After resolving the lints, run `clippy` on the playground site to show "
-"clippy warnings. Clippy has extensive documentation of its lints, and adds "
-"new lints (including default-deny lints) all the time."
+"After resolving the lints, run `clippy` on the playground site to show clippy "
+"warnings. Clippy has extensive documentation of its lints, and adds new lints "
+"(including default-deny lints) all the time."
msgstr ""
-"Después de resolver los lints, ejecuta `clippy` en el playground para "
-"mostrar advertencias de Clippy. Clippy cuenta con una amplia documentación "
-"sobre sus lints y añade otros nuevos continuamente (incluidos los de "
-"denegación de forma predeterminada)."
+"Después de resolver los lints, ejecuta `clippy` en el playground para mostrar "
+"advertencias de Clippy. Clippy cuenta con una amplia documentación sobre sus "
+"lints y añade otros nuevos continuamente (incluidos los de denegación de forma "
+"predeterminada)."
#: src/testing/lints.md
msgid ""
-"Note that errors or warnings with `help: ...` can be fixed with `cargo fix` "
-"or via your editor."
+"Note that errors or warnings with `help: ...` can be fixed with `cargo fix` or "
+"via your editor."
msgstr ""
"Ten en cuenta que los errores o las advertencias con `help: ...` se pueden "
"corregir con `cargo fix` o con el editor que uses."
@@ -10943,37 +10747,35 @@ msgstr "Algoritmo de Luhn"
#: src/testing/exercise.md
msgid ""
-"The [Luhn algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm) is used "
-"to validate credit card numbers. The algorithm takes a string as input and "
-"does the following to validate the credit card number:"
+"The [Luhn algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm) is used to "
+"validate credit card numbers. The algorithm takes a string as input and does "
+"the following to validate the credit card number:"
msgstr ""
"El [algoritmo de Luhn](https://es.wikipedia.org/wiki/Luhn_algorithm) se usa "
-"para validar números de tarjetas de crédito. El algoritmo toma una cadena "
-"como entrada y hace lo siguiente para validar el número de la tarjeta de "
-"crédito:"
+"para validar números de tarjetas de crédito. El algoritmo toma una cadena como "
+"entrada y hace lo siguiente para validar el número de la tarjeta de crédito:"
#: src/testing/exercise.md
msgid "Ignore all spaces. Reject numbers with fewer than two digits."
-msgstr ""
-"Ignora todos los espacios. Rechaza los números con menos de dos dígitos."
+msgstr "Ignora todos los espacios. Rechaza los números con menos de dos dígitos."
#: src/testing/exercise.md
msgid ""
"Moving from **right to left**, double every second digit: for the number "
"`1234`, we double `3` and `1`. For the number `98765`, we double `6` and `8`."
msgstr ""
-"De derecha a izquierda, duplica cada dos cifras: en el caso del número "
-"`1234`, se duplica el `3` y el `1`. En el caso del número `98765`, se "
-"duplica el `6` y el `8`."
+"De derecha a izquierda, duplica cada dos cifras: en el caso del número `1234`, "
+"se duplica el `3` y el `1`. En el caso del número `98765`, se duplica el `6` y "
+"el `8`."
#: src/testing/exercise.md
msgid ""
"After doubling a digit, sum the digits if the result is greater than 9. So "
"doubling `7` becomes `14` which becomes `1 + 4 = 5`."
msgstr ""
-"Después de duplicar un dígito, se suman los dígitos si el resultado es mayor "
-"a 9. Por tanto, si duplicas `7`, pasará a ser `14`, lo cual pasará a ser `1 "
-"+4 = 5`."
+"Después de duplicar un dígito, se suman los dígitos si el resultado es mayor a "
+"9. Por tanto, si duplicas `7`, pasará a ser `14`, lo cual pasará a ser `1 +4 = "
+"5`."
#: src/testing/exercise.md
msgid "Sum all the undoubled and doubled digits."
@@ -10981,28 +10783,26 @@ msgstr "Suma todos los dígitos, no duplicados y duplicados."
#: src/testing/exercise.md
msgid "The credit card number is valid if the sum ends with `0`."
-msgstr ""
-"El número de la tarjeta de crédito es válido si la suma termina en `0`."
+msgstr "El número de la tarjeta de crédito es válido si la suma termina en `0`."
#: src/testing/exercise.md
msgid ""
-"The provided code provides a buggy implementation of the luhn algorithm, "
-"along with two basic unit tests that confirm that most of the algorithm is "
+"The provided code provides a buggy implementation of the luhn algorithm, along "
+"with two basic unit tests that confirm that most of the algorithm is "
"implemented correctly."
msgstr ""
"El código proporcionado ofrece una implementación errónea del algoritmo de "
-"Luhn, junto con dos pruebas unitarias básicas que confirman que la mayor "
-"parte del algoritmo se ha implementado correctamente."
+"Luhn, junto con dos pruebas unitarias básicas que confirman que la mayor parte "
+"del algoritmo se ha implementado correctamente."
#: src/testing/exercise.md
msgid ""
-"Copy the code below to and write additional "
-"tests to uncover bugs in the provided implementation, fixing any bugs you "
-"find."
+"Copy the code below to and write additional tests "
+"to uncover bugs in the provided implementation, fixing any bugs you find."
msgstr ""
-"Copia el fragmento de código que aparece más abajo en la página a y escribe pruebas adicionales para descubrir y arreglar "
-"errores en la implementación proveída."
+"Copia el fragmento de código que aparece más abajo en la página a y escribe pruebas adicionales para descubrir y arreglar errores "
+"en la implementación proveída."
#: src/testing/exercise.md src/testing/solution.md
msgid "\"4263 9826 4026 9299\""
@@ -11081,8 +10881,8 @@ msgid ""
"Including 10 minute breaks, this session should take about 2 hours and 15 "
"minutes. It contains:"
msgstr ""
-"Contando con los descansos de 10 minutos, la duración prevista de la sesión "
-"es de unas 2 horas y 15 minutos. Contiene:"
+"Contando con los descansos de 10 minutos, la duración prevista de la sesión es "
+"de unas 2 horas y 15 minutos. Contiene:"
#: src/error-handling.md
msgid "Error Trait"
@@ -11132,23 +10932,20 @@ msgstr "Los pánicos con fines específicos pueden usar la macro `panic!`."
#: src/error-handling/panics.md
msgid ""
-"A panic will \"unwind\" the stack, dropping values just as if the functions "
-"had returned."
+"A panic will \"unwind\" the stack, dropping values just as if the functions had "
+"returned."
msgstr ""
"Cuando se produce un pánico, se \"desenrolla\" la pila y se eliminan los "
"valores como si las funciones hubieran devuelto un resultado."
#: src/error-handling/panics.md
-msgid ""
-"Use non-panicking APIs (such as `Vec::get`) if crashing is not acceptable."
+msgid "Use non-panicking APIs (such as `Vec::get`) if crashing is not acceptable."
msgstr ""
-"Utiliza API que no activen _panics_ (como `Vec::get`) si no se admiten "
-"fallos."
+"Utiliza API que no activen _panics_ (como `Vec::get`) si no se admiten fallos."
#: src/error-handling/panics.md
msgid ""
-"By default, a panic will cause the stack to unwind. The unwinding can be "
-"caught:"
+"By default, a panic will cause the stack to unwind. The unwinding can be caught:"
msgstr ""
"De forma predeterminada, el _panic_ hará que la _stack_ se desenrolle. El "
"proceso de desenrrollado se puede detectar:"
@@ -11167,19 +10964,18 @@ msgstr "\"¡Vaya!\""
#: src/error-handling/panics.md
msgid ""
-"Catching is unusual; do not attempt to implement exceptions with "
-"`catch_unwind`!"
+"Catching is unusual; do not attempt to implement exceptions with `catch_unwind`!"
msgstr ""
-"El catching no es habitual, por lo que recomendamos no implementar "
-"excepciones con `catch_unwind`!"
+"El catching no es habitual, por lo que recomendamos no implementar excepciones "
+"con `catch_unwind`!"
#: src/error-handling/panics.md
msgid ""
"This can be useful in servers which should keep running even if a single "
"request crashes."
msgstr ""
-"Esto puede ser útil en los servidores que deben seguir ejecutándose aunque "
-"una sola solicitud falle."
+"Esto puede ser útil en los servidores que deben seguir ejecutándose aunque una "
+"sola solicitud falle."
#: src/error-handling/panics.md
msgid "This does not work if `panic = 'abort'` is set in your `Cargo.toml`."
@@ -11187,9 +10983,9 @@ msgstr "No funciona si `panic = 'abort'` está definido en `Cargo.toml`."
#: src/error-handling/result.md
msgid ""
-"Our primary mechanism for error handling in Rust is the [`Result`](https://"
-"doc.rust-lang.org/stable/std/result/enum.Result.html) enum, which we briefly "
-"saw when discussing standard library types."
+"Our primary mechanism for error handling in Rust is the [`Result`](https://doc."
+"rust-lang.org/stable/std/result/enum.Result.html) enum, which we briefly saw "
+"when discussing standard library types."
msgstr ""
"El mecanismo primario para el manejo de errores en Rust es el enum [`Result`]"
"(https://doc.rust-lang.org/stable/std/result/enum.Result.html), que vimos "
@@ -11208,30 +11004,29 @@ msgid ""
"Whether or not a function can produce an error is encoded in the function's "
"type signature by having the function return a `Result` value."
msgstr ""
-"La signatura de tipo de una función indica si puede producir un error, en "
-"este caso devolverá un valor `Result`."
+"La signatura de tipo de una función indica si puede producir un error, en este "
+"caso devolverá un valor `Result`."
#: src/error-handling/result.md
msgid ""
"Like with `Option`, there is no way to forget to handle an error: You cannot "
"access either the success value or the error value without first pattern "
-"matching on the `Result` to check which variant you have. Methods like "
-"`unwrap` make it easier to write quick-and-dirty code that doesn't do robust "
-"error handling, but means that you can always see in your source code where "
-"proper error handling is being skipped."
+"matching on the `Result` to check which variant you have. Methods like `unwrap` "
+"make it easier to write quick-and-dirty code that doesn't do robust error "
+"handling, but means that you can always see in your source code where proper "
+"error handling is being skipped."
msgstr ""
"Como con `Option`, no hay manera de olvidarse de manejar un error: no puedes "
"acceder el valor de éxito o el valor de error sin hacer coincidencia de "
-"patrones sobre el `Result` para ver que variante tienes. Métodos como "
-"`unwrap` hacen que sea mas fácil escribir código rápido-y-sucio que no "
-"maneja errores de una forma robusta, pero esto significa que siempre puedes "
-"ver en tu código donde no estas manejando errores de la manera propia."
+"patrones sobre el `Result` para ver que variante tienes. Métodos como `unwrap` "
+"hacen que sea mas fácil escribir código rápido-y-sucio que no maneja errores de "
+"una forma robusta, pero esto significa que siempre puedes ver en tu código "
+"donde no estas manejando errores de la manera propia."
#: src/error-handling/result.md
msgid ""
"It may be helpful to compare error handling in Rust to error handling "
-"conventions that students may be familiar with from other programming "
-"languages."
+"conventions that students may be familiar with from other programming languages."
msgstr ""
"Podria ayudar comparar el manejo de errores en Rust con las convenciones de "
"manejo de errores de otros lenguajes que conocen los estudiantes."
@@ -11244,8 +11039,7 @@ msgstr "Muchos lenguajes usan excepciones, e.g. C++, Java, Python."
msgid ""
"In most languages with exceptions, whether or not a function can throw an "
"exception is not visible as part of its type signature. This generally means "
-"that you can't tell when calling a function if it may throw an exception or "
-"not."
+"that you can't tell when calling a function if it may throw an exception or not."
msgstr "En la mayoria"
#: src/error-handling/result.md
@@ -11269,22 +11063,20 @@ msgstr ""
#: src/error-handling/result.md
msgid ""
"Depending on the language it may be possible to forget to check the error "
-"value, in which case you may be accessing an uninitialized or otherwise "
-"invalid success value."
+"value, in which case you may be accessing an uninitialized or otherwise invalid "
+"success value."
msgstr ""
#: src/error-handling/try.md
msgid ""
-"Runtime errors like connection-refused or file-not-found are handled with "
-"the `Result` type, but matching this type on every call can be cumbersome. "
-"The try-operator `?` is used to return errors to the caller. It lets you "
-"turn the common"
+"Runtime errors like connection-refused or file-not-found are handled with the "
+"`Result` type, but matching this type on every call can be cumbersome. The try-"
+"operator `?` is used to return errors to the caller. It lets you turn the common"
msgstr ""
"Los errores de tiempo de ejecución, como los de fallo en la conexión o de "
-"archivo no encontrado, se gestionan con el tipo `Result`, pero hacer "
-"coincidir este tipo en todas las llamadas puede ser complicado. El operador "
-"try `?` se utiliza para devolver errores al llamador. Te permite convertir "
-"lo habitual"
+"archivo no encontrado, se gestionan con el tipo `Result`, pero hacer coincidir "
+"este tipo en todas las llamadas puede ser complicado. El operador try `?` se "
+"utiliza para devolver errores al llamador. Te permite convertir lo habitual"
#: src/error-handling/try.md
msgid "into the much simpler"
@@ -11327,22 +11119,22 @@ msgstr ""
#, fuzzy
msgid ""
"Note that `main` can return a `Result<(), E>` as long as it implements `std::"
-"process::Termination`. In practice, this means that `E` implements `Debug`. "
-"The executable will print the `Err` variant and return a nonzero exit status "
-"on error."
+"process::Termination`. In practice, this means that `E` implements `Debug`. The "
+"executable will print the `Err` variant and return a nonzero exit status on "
+"error."
msgstr ""
"Ten en cuenta que `main` puede devolver un `Result<(), E>` siempre que "
-"implemente `std::process:Termination`. En la práctica, esto significa que "
-"`E` implementa `Debug`. El ejecutable imprimirá la variante `Err` y "
-"devolverá un estado de salida distinto a cero si se produce un error."
+"implemente `std::process:Termination`. En la práctica, esto significa que `E` "
+"implementa `Debug`. El ejecutable imprimirá la variante `Err` y devolverá un "
+"estado de salida distinto a cero si se produce un error."
#: src/error-handling/try-conversions.md
msgid ""
"The effective expansion of `?` is a little more complicated than previously "
"indicated:"
msgstr ""
-"La expansión efectiva de `?` es un poco más complicada de lo que se ha "
-"indicado anteriormente:"
+"La expansión efectiva de `?` es un poco más complicada de lo que se ha indicado "
+"anteriormente:"
#: src/error-handling/try-conversions.md
msgid "works the same as"
@@ -11374,31 +11166,30 @@ msgstr "//fs::write(\"config.dat\", \"\").unwrap();\n"
#: src/error-handling/try-conversions.md
msgid ""
"The `?` operator must return a value compatible with the return type of the "
-"function. For `Result`, it means that the error types have to be compatible. "
-"A function that returns `Result` can only use `?` on a value "
-"of type `Result` if `ErrorOuter` and `ErrorInner` are the "
-"same type or if `ErrorOuter` implements `From`."
+"function. For `Result`, it means that the error types have to be compatible. A "
+"function that returns `Result` can only use `?` on a value of "
+"type `Result` if `ErrorOuter` and `ErrorInner` are the same type "
+"or if `ErrorOuter` implements `From`."
msgstr ""
"El operador `?` debe devolver un valor compatible con el tipo de resultado "
-"devuelto de la función. En `Result`, significa que los tipos de error deben "
-"ser compatibles. Una función que devuelve `Result` solo puede "
-"usar `?` en un valor del tipo `Result` si `ErrorOuter` y "
-"`ErrorInner` son del mismo tipo o si `ErrorOuter` implementa `. "
-"From`."
+"devuelto de la función. En `Result`, significa que los tipos de error deben ser "
+"compatibles. Una función que devuelve `Result` solo puede usar `?"
+"` en un valor del tipo `Result` si `ErrorOuter` y `ErrorInner` "
+"son del mismo tipo o si `ErrorOuter` implementa `. From`."
#: src/error-handling/try-conversions.md
msgid ""
"A common alternative to a `From` implementation is `Result::map_err`, "
"especially when the conversion only happens in one place."
msgstr ""
-"Una alternativa habitual a la implementación `From` es `Result::map_err`, "
-"sobre todo si la conversión solo se produce en un lugar."
+"Una alternativa habitual a la implementación `From` es `Result::map_err`, sobre "
+"todo si la conversión solo se produce en un lugar."
#: src/error-handling/try-conversions.md
msgid ""
"There is no compatibility requirement for `Option`. A function returning "
-"`Option` can use the `?` operator on `Option` for arbitrary `T` and "
-"`U` types."
+"`Option` can use the `?` operator on `Option` for arbitrary `T` and `U` "
+"types."
msgstr ""
"No hay ningún requisito de compatibilidad para `Option`. Una función que "
"devuelve `Option` puede usar el operador `?` en `Option` para tipos "
@@ -11421,14 +11212,13 @@ msgstr "Tipos de Errores Dinámicos"
#: src/error-handling/error.md
#, fuzzy
msgid ""
-"Sometimes we want to allow any type of error to be returned without writing "
-"our own enum covering all the different possibilities. The `std::error::"
-"Error` trait makes it easy to create a trait object that can contain any "
-"error."
+"Sometimes we want to allow any type of error to be returned without writing our "
+"own enum covering all the different possibilities. The `std::error::Error` "
+"trait makes it easy to create a trait object that can contain any error."
msgstr ""
-"A veces, queremos permitir que se devuelva cualquier tipo de error sin "
-"escribir nuestra propia _enum_ que cubra todas las posibilidades. `std::"
-"error::Error` facilita este proceso."
+"A veces, queremos permitir que se devuelva cualquier tipo de error sin escribir "
+"nuestra propia _enum_ que cubra todas las posibilidades. `std::error::Error` "
+"facilita este proceso."
#: src/error-handling/error.md
msgid "\"count.dat\""
@@ -11448,26 +11238,26 @@ msgstr "\"Error: {err}\""
#: src/error-handling/error.md
msgid ""
-"The `read_count` function can return `std::io::Error` (from file operations) "
-"or `std::num::ParseIntError` (from `String::parse`)."
+"The `read_count` function can return `std::io::Error` (from file operations) or "
+"`std::num::ParseIntError` (from `String::parse`)."
msgstr ""
-"La función `read_count` puede devolver `std::io::Error` (de las operaciones "
-"de archivos) o `std::num::ParseIntError` (de `String::parse`)."
+"La función `read_count` puede devolver `std::io::Error` (de las operaciones de "
+"archivos) o `std::num::ParseIntError` (de `String::parse`)."
#: src/error-handling/error.md
#, fuzzy
msgid ""
"Boxing errors saves on code, but gives up the ability to cleanly handle "
-"different error cases differently in the program. As such it's generally not "
-"a good idea to use `Box` in the public API of a library, but it "
-"can be a good option in a program where you just want to display the error "
-"message somewhere."
+"different error cases differently in the program. As such it's generally not a "
+"good idea to use `Box` in the public API of a library, but it can be "
+"a good option in a program where you just want to display the error message "
+"somewhere."
msgstr ""
-"Esto permite ahorrar código, pero no da la posibilidad de gestionar "
-"eficazmente los distintos casos de error en el programa. Por lo general, no "
-"es una buena idea utilizar `Box` en la API pública de una "
-"biblioteca, pero puede ser una buena opción en un programa en el que solo "
-"quieras mostrar el mensaje de error en alguna parte."
+"Esto permite ahorrar código, pero no da la posibilidad de gestionar eficazmente "
+"los distintos casos de error en el programa. Por lo general, no es una buena "
+"idea utilizar `Box` en la API pública de una biblioteca, pero puede "
+"ser una buena opción en un programa en el que solo quieras mostrar el mensaje "
+"de error en alguna parte."
#: src/error-handling/error.md
msgid ""
@@ -11479,9 +11269,9 @@ msgid ""
msgstr ""
"Asegúrate de implementar el trait `std::error::Error` al definir un tipo de "
"error personalizado para que pueda tener una estructura box. Sin embargo, si "
-"necesitas el atributo `no_std`, ten en cuenta que el trait `std::error::"
-"Error` de momento solo es compatible con `no_std` en [nightly](https://"
-"github.com/rust-lang/rust/issues/103765)."
+"necesitas el atributo `no_std`, ten en cuenta que el trait `std::error::Error` "
+"de momento solo es compatible con `no_std` en [nightly](https://github.com/rust-"
+"lang/rust/issues/103765)."
#: src/error-handling/thiserror-and-anyhow.md
#, fuzzy
@@ -11489,9 +11279,9 @@ msgid ""
"The [`thiserror`](https://docs.rs/thiserror/) and [`anyhow`](https://docs.rs/"
"anyhow/) crates are widely used to simplify error handling."
msgstr ""
-"Uno de los métodos más populares para crear una _enum_ (enumeración) de "
-"errores es el crate [thiserror](https://docs.rs/thiserror/), como hicimos en "
-"la página anterior:"
+"Uno de los métodos más populares para crear una _enum_ (enumeración) de errores "
+"es el crate [thiserror](https://docs.rs/thiserror/), como hicimos en la página "
+"anterior:"
#: src/error-handling/thiserror-and-anyhow.md
msgid ""
@@ -11506,8 +11296,8 @@ msgid ""
"`anyhow` is often used by applications to help with error handling in "
"functions, including adding contextual information to your errors."
msgstr ""
-"Las aplicaciones suelen utilizar `anyhow` para gestionar errores en "
-"funciones, como añadir información contextual a los errores."
+"Las aplicaciones suelen utilizar `anyhow` para gestionar errores en funciones, "
+"como añadir información contextual a los errores."
#: src/error-handling/thiserror-and-anyhow.md
msgid "\"Found no username in {0}\""
@@ -11560,9 +11350,9 @@ msgstr "`anyhow`"
#: src/error-handling/thiserror-and-anyhow.md
msgid ""
-"`anyhow::Error` is essentially a wrapper around `Box`. As such "
-"it's again generally not a good choice for the public API of a library, but "
-"is widely used in applications."
+"`anyhow::Error` is essentially a wrapper around `Box`. As such it's "
+"again generally not a good choice for the public API of a library, but is "
+"widely used in applications."
msgstr ""
"`anyhow::Error` es básicamente un envoltorio alrededor de `Box`. "
"Como tal, no suele ser una buena elección para la API pública de una "
@@ -11570,8 +11360,7 @@ msgstr ""
#: src/error-handling/thiserror-and-anyhow.md
msgid "`anyhow::Result` is a type alias for `Result`."
-msgstr ""
-"`anyhow::Result` es un alias de tipo para `Result`."
+msgstr "`anyhow::Result` es un alias de tipo para `Result`."
#: src/error-handling/thiserror-and-anyhow.md
msgid ""
@@ -11582,42 +11371,41 @@ msgstr ""
#: src/error-handling/thiserror-and-anyhow.md
msgid ""
-"Functionality provided by `anyhow::Result` may be familiar to Go "
-"developers, as it provides similar usage patterns and ergonomics to `(T, "
-"error)` from Go."
+"Functionality provided by `anyhow::Result` may be familiar to Go developers, "
+"as it provides similar usage patterns and ergonomics to `(T, error)` from Go."
msgstr ""
-"La funcionalidad proporcionada por `anyhow::Result` puede resultar "
-"familiar a los desarrolladores de Go, ya que ofrece patrones de uso y "
-"ergonomía similares a `(T, error)` de Go."
+"La funcionalidad proporcionada por `anyhow::Result` puede resultar familiar "
+"a los desarrolladores de Go, ya que ofrece patrones de uso y ergonomía "
+"similares a `(T, error)` de Go."
#: src/error-handling/thiserror-and-anyhow.md
msgid ""
-"`anyhow::Context` is a trait implemented for the standard `Result` and "
-"`Option` types. `use anyhow::Context` is necessary to enable `.context()` "
-"and `.with_context()` on those types."
+"`anyhow::Context` is a trait implemented for the standard `Result` and `Option` "
+"types. `use anyhow::Context` is necessary to enable `.context()` and `."
+"with_context()` on those types."
msgstr ""
-"`anyhow::Context` es un trait implementado para los tipos estándar `Result` "
-"y `Option`. Se necesita `use anyhow::Context` para habilitar `.context()` y "
-"`.with_context()` en esos tipos."
+"`anyhow::Context` es un trait implementado para los tipos estándar `Result` y "
+"`Option`. Se necesita `use anyhow::Context` para habilitar `.context()` y `."
+"with_context()` en esos tipos."
#: src/error-handling/exercise.md
msgid ""
"The following implements a very simple parser for an expression language. "
"However, it handles errors by panicking. Rewrite it to instead use idiomatic "
-"error handling and propagate errors to a return from `main`. Feel free to "
-"use `thiserror` and `anyhow`."
+"error handling and propagate errors to a return from `main`. Feel free to use "
+"`thiserror` and `anyhow`."
msgstr ""
"A continuación, se implementa un analizador muy sencillo para un lenguaje de "
"expresiones. Sin embargo, para gestionar los errores, utiliza pánicos. "
-"Reescribe este texto para utilizar la gestión de errores idiomática y "
-"propagar los errores a un instrucción de retorno desde `main`. No dudes en "
-"usar `thiserror` y `anyhow`."
+"Reescribe este texto para utilizar la gestión de errores idiomática y propagar "
+"los errores a un instrucción de retorno desde `main`. No dudes en usar "
+"`thiserror` y `anyhow`."
#: src/error-handling/exercise.md
msgid ""
"HINT: start by fixing error handling in the `parse` function. Once that is "
-"working correctly, update `Tokenizer` to implement "
-"`Iterator- >` and handle that in the parser."
+"working correctly, update `Tokenizer` to implement `Iterator
- >` and handle that in the parser."
msgstr ""
"CONSEJO: empieza por corregir la gestión de errores en la función `parse`. "
"Cuando funcione correctamente, actualiza `Tokenizer` para implementar "
@@ -11715,22 +11503,20 @@ msgstr "El lenguaje Rust tiene dos partes:"
#: src/unsafe-rust/unsafe.md
msgid "**Safe Rust:** memory safe, no undefined behavior possible."
msgstr ""
-"**_Safe_ Rust:** memoria segura, sin posibilidad de comportamiento "
-"indefinido."
+"**_Safe_ Rust:** memoria segura, sin posibilidad de comportamiento indefinido."
#: src/unsafe-rust/unsafe.md
msgid ""
-"**Unsafe Rust:** can trigger undefined behavior if preconditions are "
-"violated."
+"**Unsafe Rust:** can trigger undefined behavior if preconditions are violated."
msgstr ""
-"**_Unsafe_ Rust:** puede activar un comportamiento no definido si se "
-"infringen las condiciones previas."
+"**_Unsafe_ Rust:** puede activar un comportamiento no definido si se infringen "
+"las condiciones previas."
#: src/unsafe-rust/unsafe.md
#, fuzzy
msgid ""
-"We saw mostly safe Rust in this course, but it's important to know what "
-"Unsafe Rust is."
+"We saw mostly safe Rust in this course, but it's important to know what Unsafe "
+"Rust is."
msgstr ""
"En este curso, casi todo lo que veremos es _Safe_ Rust, aunque es importante "
"saber qué es _Unsafe_ Rust."
@@ -11740,9 +11526,9 @@ msgid ""
"Unsafe code is usually small and isolated, and its correctness should be "
"carefully documented. It is usually wrapped in a safe abstraction layer."
msgstr ""
-"Por lo general, el código inseguro es pequeño y está aislado, y su "
-"corrección debe estar bien documentada. Suele estar envuelto en una capa de "
-"abstracción segura."
+"Por lo general, el código inseguro es pequeño y está aislado, y su corrección "
+"debe estar bien documentada. Suele estar envuelto en una capa de abstracción "
+"segura."
#: src/unsafe-rust/unsafe.md
msgid "Unsafe Rust gives you access to five new capabilities:"
@@ -11771,32 +11557,31 @@ msgstr "Implementar traits `unsafe`."
#: src/unsafe-rust/unsafe.md
msgid ""
"We will briefly cover unsafe capabilities next. For full details, please see "
-"[Chapter 19.1 in the Rust Book](https://doc.rust-lang.org/book/ch19-01-"
-"unsafe-rust.html) and the [Rustonomicon](https://doc.rust-lang.org/nomicon/)."
+"[Chapter 19.1 in the Rust Book](https://doc.rust-lang.org/book/ch19-01-unsafe-"
+"rust.html) and the [Rustonomicon](https://doc.rust-lang.org/nomicon/)."
msgstr ""
-"A continuación, hablaremos brevemente sobre las funciones que no son "
-"seguras. Para obtener más información, consulta el [capítulo 19.1 del Libro "
-"de Rust](https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html) y el "
-"documento [Rustonomicon](https://doc.rust-lang.org/nomicon/)."
+"A continuación, hablaremos brevemente sobre las funciones que no son seguras. "
+"Para obtener más información, consulta el [capítulo 19.1 del Libro de Rust]"
+"(https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html) y el documento "
+"[Rustonomicon](https://doc.rust-lang.org/nomicon/)."
#: src/unsafe-rust/unsafe.md
#, fuzzy
msgid ""
-"Unsafe Rust does not mean the code is incorrect. It means that developers "
-"have turned off some compiler safety features and have to write correct code "
-"by themselves. It means the compiler no longer enforces Rust's memory-safety "
-"rules."
+"Unsafe Rust does not mean the code is incorrect. It means that developers have "
+"turned off some compiler safety features and have to write correct code by "
+"themselves. It means the compiler no longer enforces Rust's memory-safety rules."
msgstr ""
"_Unsafe_ Rust no significa que el código sea incorrecto. Significa que los "
-"desarrolladores han desactivado las funciones de seguridad del compilador y "
-"que tienen que escribir el código correcto por su cuenta. Significa que el "
+"desarrolladores han desactivado las funciones de seguridad del compilador y que "
+"tienen que escribir el código correcto por su cuenta. Significa que el "
"compilador ya no aplica las reglas de seguridad de memoria de Rust."
#: src/unsafe-rust/dereferencing.md
msgid "Creating pointers is safe, but dereferencing them requires `unsafe`:"
msgstr ""
-"La creación de punteros es un proceso seguro, pero para anular las "
-"referencias, es necesario utilizar `unsafe`:"
+"La creación de punteros es un proceso seguro, pero para anular las referencias, "
+"es necesario utilizar `unsafe`:"
#: src/unsafe-rust/dereferencing.md
msgid "\"careful!\""
@@ -11806,19 +11591,17 @@ msgstr "\"¡cuidado!\""
#, fuzzy
msgid ""
"// SAFETY: r1 and r2 were obtained from references and so are guaranteed to\n"
-" // be non-null and properly aligned, the objects underlying the "
-"references\n"
+" // be non-null and properly aligned, the objects underlying the references\n"
" // from which they were obtained are live throughout the whole unsafe\n"
" // block, and they are not accessed either through the references or\n"
" // concurrently through any other pointers.\n"
msgstr ""
-"// Es seguro porque r1 y r2 se han obtenido a partir desde referencias y, "
-"por lo tanto,\n"
-" // se garantiza que no son nulos y que están alineados correctamente. "
-"Los objetos subyacentes\n"
+"// Es seguro porque r1 y r2 se han obtenido a partir desde referencias y, por "
+"lo tanto,\n"
+" // se garantiza que no son nulos y que están alineados correctamente. Los "
+"objetos subyacentes\n"
" // a las referencias de las que se han obtenido están activos\n"
-" // en el bloque inseguro y no se puede acceder a ellos ni a través de "
-"las \n"
+" // en el bloque inseguro y no se puede acceder a ellos ni a través de las \n"
" // referencias ni simultáneamente a través de otros punteros.\n"
#: src/unsafe-rust/dereferencing.md
@@ -11851,14 +11634,13 @@ msgstr ""
#: src/unsafe-rust/dereferencing.md
msgid ""
-"It is good practice (and required by the Android Rust style guide) to write "
-"a comment for each `unsafe` block explaining how the code inside it "
-"satisfies the safety requirements of the unsafe operations it is doing."
+"It is good practice (and required by the Android Rust style guide) to write a "
+"comment for each `unsafe` block explaining how the code inside it satisfies the "
+"safety requirements of the unsafe operations it is doing."
msgstr ""
-"Se recomienda (y es obligatorio en la guía de estilo Rust de Android) "
-"escribir un comentario para cada bloque `unsafe` explicando cómo el código "
-"que contiene cumple los requisitos de seguridad de las operaciones inseguras "
-"que realiza."
+"Se recomienda (y es obligatorio en la guía de estilo Rust de Android) escribir "
+"un comentario para cada bloque `unsafe` explicando cómo el código que contiene "
+"cumple los requisitos de seguridad de las operaciones inseguras que realiza."
#: src/unsafe-rust/dereferencing.md
msgid ""
@@ -11866,8 +11648,8 @@ msgid ""
"[_valid_](https://doc.rust-lang.org/std/ptr/index.html#safety), i.e.:"
msgstr ""
"En el caso de la desreferenciación de punteros, significa que los punteros "
-"deben ser [_válidos_](https://doc.rust-lang.org/std/ptr/index.html#safety), "
-"por ejemplo:"
+"deben ser [_válidos_](https://doc.rust-lang.org/std/ptr/index.html#safety), por "
+"ejemplo:"
#: src/unsafe-rust/dereferencing.md
msgid "The pointer must be non-null."
@@ -11875,8 +11657,8 @@ msgstr "El puntero no puede ser nulo."
#: src/unsafe-rust/dereferencing.md
msgid ""
-"The pointer must be _dereferenceable_ (within the bounds of a single "
-"allocated object)."
+"The pointer must be _dereferenceable_ (within the bounds of a single allocated "
+"object)."
msgstr ""
"El puntero debe ser _desreferenciable_ (dentro de los límites de un único "
"objeto asignado)."
@@ -11891,12 +11673,11 @@ msgstr "No debe haber accesos simultáneos a la misma ubicación."
#: src/unsafe-rust/dereferencing.md
msgid ""
-"If the pointer was obtained by casting a reference, the underlying object "
-"must be live and no reference may be used to access the memory."
+"If the pointer was obtained by casting a reference, the underlying object must "
+"be live and no reference may be used to access the memory."
msgstr ""
-"Si el puntero se ha obtenido enviando una referencia, el objeto subyacente "
-"debe estar activo y no puede utilizarse ninguna referencia para acceder a la "
-"memoria."
+"Si el puntero se ha obtenido enviando una referencia, el objeto subyacente debe "
+"estar activo y no puede utilizarse ninguna referencia para acceder a la memoria."
#: src/unsafe-rust/dereferencing.md
msgid "In most cases the pointer must also be properly aligned."
@@ -11906,15 +11687,15 @@ msgstr ""
#: src/unsafe-rust/dereferencing.md
msgid ""
-"The \"NOT SAFE\" section gives an example of a common kind of UB bug: `*r1` "
-"has the `'static` lifetime, so `r3` has type `&'static String`, and thus "
-"outlives `s`. Creating a reference from a pointer requires _great care_."
+"The \"NOT SAFE\" section gives an example of a common kind of UB bug: `*r1` has "
+"the `'static` lifetime, so `r3` has type `&'static String`, and thus outlives "
+"`s`. Creating a reference from a pointer requires _great care_."
msgstr ""
"En la sección \"INSEGURO\" se muestra un ejemplo de un tipo común de error "
-"comportamiento indefinido: `*r1` tiene el tiempo de vida `'static`, por lo "
-"que `r3` tiene el tipo `&'static String` y, por lo tanto, su duración es "
-"mayor que la de `s`. Para crear una referencia a partir de un puntero hay "
-"que tener _mucho cuidado_."
+"comportamiento indefinido: `*r1` tiene el tiempo de vida `'static`, por lo que "
+"`r3` tiene el tipo `&'static String` y, por lo tanto, su duración es mayor que "
+"la de `s`. Para crear una referencia a partir de un puntero hay que tener "
+"_mucho cuidado_."
#: src/unsafe-rust/mutable-static.md
msgid "It is safe to read an immutable static variable:"
@@ -11933,8 +11714,8 @@ msgid ""
"However, since data races can occur, it is unsafe to read and write mutable "
"static variables:"
msgstr ""
-"Sin embargo, dado que pueden producirse carreras de datos, no es seguro leer "
-"y escribir variables estáticas mutables:"
+"Sin embargo, dado que pueden producirse carreras de datos, no es seguro leer y "
+"escribir variables estáticas mutables:"
#: src/unsafe-rust/mutable-static.md
msgid ""
@@ -11948,20 +11729,20 @@ msgstr "\"CONTADOR: {COUNTER}\""
#: src/unsafe-rust/mutable-static.md
msgid ""
"The program here is safe because it is single-threaded. However, the Rust "
-"compiler is conservative and will assume the worst. Try removing the "
-"`unsafe` and see how the compiler explains that it is undefined behavior to "
-"mutate a static from multiple threads."
+"compiler is conservative and will assume the worst. Try removing the `unsafe` "
+"and see how the compiler explains that it is undefined behavior to mutate a "
+"static from multiple threads."
msgstr ""
-"Este programa es seguro porque tiene un único hilo. Sin embargo, el "
-"compilador de Rust es conservador y asumirá lo peor. Prueba a eliminar "
-"`unsafe` y observa cómo el compilador explica que cambiar un elemento "
-"estático desde varios hilos es un comportamiento indefinido."
+"Este programa es seguro porque tiene un único hilo. Sin embargo, el compilador "
+"de Rust es conservador y asumirá lo peor. Prueba a eliminar `unsafe` y observa "
+"cómo el compilador explica que cambiar un elemento estático desde varios hilos "
+"es un comportamiento indefinido."
#: src/unsafe-rust/mutable-static.md
msgid ""
-"Using a mutable static is generally a bad idea, but there are some cases "
-"where it might make sense in low-level `no_std` code, such as implementing a "
-"heap allocator or working with some C APIs."
+"Using a mutable static is generally a bad idea, but there are some cases where "
+"it might make sense in low-level `no_std` code, such as implementing a heap "
+"allocator or working with some C APIs."
msgstr ""
"No suele ser buena idea usar una variable estática mutable, pero en algunos "
"casos puede encajar en código `no_std` de bajo nivel, como implementar una "
@@ -11970,8 +11751,8 @@ msgstr ""
#: src/unsafe-rust/unions.md
msgid "Unions are like enums, but you need to track the active field yourself:"
msgstr ""
-"Las uniones son como _enums_ (enumeraciones), pero eres tú quien debe hacer "
-"el seguimiento del campo activo:"
+"Las uniones son como _enums_ (enumeraciones), pero eres tú quien debe hacer el "
+"seguimiento del campo activo:"
#: src/unsafe-rust/unions.md
msgid "\"int: {}\""
@@ -11987,8 +11768,8 @@ msgstr "// ¡Comportamiento indefinido!\n"
#: src/unsafe-rust/unions.md
msgid ""
-"Unions are very rarely needed in Rust as you can usually use an enum. They "
-"are occasionally needed for interacting with C library APIs."
+"Unions are very rarely needed in Rust as you can usually use an enum. They are "
+"occasionally needed for interacting with C library APIs."
msgstr ""
"Las uniones raramente son necesarias en Rust, ya que se suele utilizar una "
"_enum_. A veces se necesitan para interactuar con APIs de biblioteca C."
@@ -11996,9 +11777,9 @@ msgstr ""
#: src/unsafe-rust/unions.md
msgid ""
"If you just want to reinterpret bytes as a different type, you probably want "
-"[`std::mem::transmute`](https://doc.rust-lang.org/stable/std/mem/fn."
-"transmute.html) or a safe wrapper such as the [`zerocopy`](https://crates.io/"
-"crates/zerocopy) crate."
+"[`std::mem::transmute`](https://doc.rust-lang.org/stable/std/mem/fn.transmute."
+"html) or a safe wrapper such as the [`zerocopy`](https://crates.io/crates/"
+"zerocopy) crate."
msgstr ""
"Si solo quieres reinterpretar los bytes como otro tipo, probablemente te "
"interese [`std::mem::transmute`](https://doc.rust-lang.org/stable/std/mem/fn."
@@ -12011,12 +11792,11 @@ msgstr "Llamar Funciones Unsafe (Inseguras)"
#: src/unsafe-rust/unsafe-functions.md
msgid ""
-"A function or method can be marked `unsafe` if it has extra preconditions "
-"you must uphold to avoid undefined behaviour:"
+"A function or method can be marked `unsafe` if it has extra preconditions you "
+"must uphold to avoid undefined behaviour:"
msgstr ""
-"Una función o método se puede marcar como `unsafe` si tiene condiciones "
-"previas adicionales que debes mantener para evitar un comportamiento "
-"indefinido:"
+"Una función o método se puede marcar como `unsafe` si tiene condiciones previas "
+"adicionales que debes mantener para evitar un comportamiento indefinido:"
#: src/unsafe-rust/unsafe-functions.md src/unsafe-rust/exercise.md
#: src/unsafe-rust/solution.md src/android/interoperability/with-c.md
@@ -12040,8 +11820,8 @@ msgid ""
msgstr ""
"// Es seguro porque los índices están en el orden correcto, dentro de los "
"límites del\n"
-" // el slice de la cadena, y se encuentran en los límites de la secuencia "
-"de UTF-8.\n"
+" // el slice de la cadena, y se encuentran en los límites de la secuencia de "
+"UTF-8.\n"
#: src/unsafe-rust/unsafe-functions.md
msgid "\"emoji: {}\""
@@ -12113,21 +11893,21 @@ msgstr "\"a = {}, b = {}\""
#, fuzzy
msgid ""
"`get_unchecked`, like most `_unchecked` functions, is unsafe, because it can "
-"create UB if the range is incorrect. `abs` is incorrect for a different "
-"reason: it is an external function (FFI). Calling external functions is "
-"usually only a problem when those functions do things with pointers which "
-"might violate Rust's memory model, but in general any C function might have "
-"undefined behaviour under any arbitrary circumstances."
+"create UB if the range is incorrect. `abs` is incorrect for a different reason: "
+"it is an external function (FFI). Calling external functions is usually only a "
+"problem when those functions do things with pointers which might violate Rust's "
+"memory model, but in general any C function might have undefined behaviour "
+"under any arbitrary circumstances."
msgstr ""
-"Esto solo suele suponer un problema para las funciones externas que hacen "
-"cosas con punteros que pueden infringir el modelo de memoria de Rust pero, "
-"en general, cualquier función C puede tener un comportamiento indefinido "
-"bajo cualquier circunstancia arbitraria."
+"Esto solo suele suponer un problema para las funciones externas que hacen cosas "
+"con punteros que pueden infringir el modelo de memoria de Rust pero, en "
+"general, cualquier función C puede tener un comportamiento indefinido bajo "
+"cualquier circunstancia arbitraria."
#: src/unsafe-rust/unsafe-functions.md
msgid ""
-"The `\"C\"` in this example is the ABI; [other ABIs are available too]"
-"(https://doc.rust-lang.org/reference/items/external-blocks.html)."
+"The `\"C\"` in this example is the ABI; [other ABIs are available too](https://"
+"doc.rust-lang.org/reference/items/external-blocks.html)."
msgstr ""
"En este ejemplo, `\"C\"` es la ABI.; [también hay otras ABI disponibles]"
"(https://doc.rust-lang.org/reference/items/external-blocks.html)."
@@ -12135,8 +11915,8 @@ msgstr ""
#: src/unsafe-rust/unsafe-functions.md
#, fuzzy
msgid ""
-"We wouldn't actually use pointers for a `swap` function - it can be done "
-"safely with references."
+"We wouldn't actually use pointers for a `swap` function - it can be done safely "
+"with references."
msgstr ""
"En realidad, no usaríamos punteros para este caso porque se puede hacer de "
"forma segura con referencias."
@@ -12144,14 +11924,13 @@ msgstr ""
#: src/unsafe-rust/unsafe-functions.md
#, fuzzy
msgid ""
-"Note that unsafe code is allowed within an unsafe function without an "
-"`unsafe` block. We can prohibit this with `#[deny(unsafe_op_in_unsafe_fn)]`. "
-"Try adding it and see what happens. This will likely change in a future Rust "
-"edition."
+"Note that unsafe code is allowed within an unsafe function without an `unsafe` "
+"block. We can prohibit this with `#[deny(unsafe_op_in_unsafe_fn)]`. Try adding "
+"it and see what happens. This will likely change in a future Rust edition."
msgstr ""
-"Ten en cuenta que el código inseguro se admite en una función insegura sin "
-"un bloque `unsafe`. Podemos prohibirlo con "
-"`#[deny(unsafe_op_in_unsafe_fn)]`. Prueba a añadirlo para ver qué ocurre."
+"Ten en cuenta que el código inseguro se admite en una función insegura sin un "
+"bloque `unsafe`. Podemos prohibirlo con `#[deny(unsafe_op_in_unsafe_fn)]`. "
+"Prueba a añadirlo para ver qué ocurre."
#: src/unsafe-rust/unsafe-traits.md
msgid "Implementing Unsafe Traits"
@@ -12171,8 +11950,8 @@ msgid ""
"For example, the `zerocopy` crate has an unsafe trait that looks [something "
"like this](https://docs.rs/zerocopy/latest/zerocopy/trait.AsBytes.html):"
msgstr ""
-"Por ejemplo, el crate `zerocopy` tiene un trait inseguro, [que se parece a "
-"esto](https://docs.rs/zerocopy/latest/zerocopy/trait.AsBytes.html):"
+"Por ejemplo, el crate `zerocopy` tiene un trait inseguro, [que se parece a esto]"
+"(https://docs.rs/zerocopy/latest/zerocopy/trait.AsBytes.html):"
#: src/unsafe-rust/unsafe-traits.md
msgid ""
@@ -12189,24 +11968,22 @@ msgstr ""
#, fuzzy
msgid "// SAFETY: `u32` has a defined representation and no padding.\n"
msgstr ""
-"// Es seguro porque u32 tiene una representación definida y no tiene espacio "
-"de relleno.\n"
+"// Es seguro porque u32 tiene una representación definida y no tiene espacio de "
+"relleno.\n"
#: src/unsafe-rust/unsafe-traits.md
msgid ""
"There should be a `# Safety` section on the Rustdoc for the trait explaining "
"the requirements for the trait to be safely implemented."
msgstr ""
-"Debería haber una sección `# Safety` en el Rustdoc para el trait explicando "
-"los requisitos para que el trait pueda implementarse de forma segura."
+"Debería haber una sección `# Safety` en el Rustdoc para el trait explicando los "
+"requisitos para que el trait pueda implementarse de forma segura."
#: src/unsafe-rust/unsafe-traits.md
msgid ""
-"The actual safety section for `AsBytes` is rather longer and more "
-"complicated."
+"The actual safety section for `AsBytes` is rather longer and more complicated."
msgstr ""
-"La sección de seguridad actual de `AsBytes` es bastante más larga y "
-"complicada."
+"La sección de seguridad actual de `AsBytes` es bastante más larga y complicada."
#: src/unsafe-rust/unsafe-traits.md
msgid "The built-in `Send` and `Sync` traits are unsafe."
@@ -12224,8 +12001,8 @@ msgid ""
msgstr ""
"Rust ofrece una gran asisencia para llamar a funciones a través de una "
"_interfaz de función externa_ (FFI). Usaremos esto para crear un envoltorio "
-"seguro para las funciones `libc` que usarías desde C para leer los nombres "
-"de archivo de un directorio."
+"seguro para las funciones `libc` que usarías desde C para leer los nombres de "
+"archivo de un directorio."
#: src/unsafe-rust/exercise.md
msgid "You will want to consult the manual pages:"
@@ -12249,9 +12026,9 @@ msgid ""
"ffi/) module. There you find a number of string types which you need for the "
"exercise:"
msgstr ""
-"También te recomendamos que consultes el módulo [`std::ffi`](https://doc."
-"rust-lang.org/std/ffi/). Ahí encontrarás una serie de tipos de cadena que "
-"necesitas para el ejercicio:"
+"También te recomendamos que consultes el módulo [`std::ffi`](https://doc.rust-"
+"lang.org/std/ffi/). Ahí encontrarás una serie de tipos de cadena que necesitas "
+"para el ejercicio:"
#: src/unsafe-rust/exercise.md
msgid "Encoding"
@@ -12266,8 +12043,8 @@ msgid ""
"[`str`](https://doc.rust-lang.org/std/primitive.str.html) and [`String`]"
"(https://doc.rust-lang.org/std/string/struct.String.html)"
msgstr ""
-"[`str`](https://doc.rust-lang.org/std/primitive.str.html) y [`String`]"
-"(https://doc.rust-lang.org/std/string/struct.String.html)"
+"[`str`](https://doc.rust-lang.org/std/primitive.str.html) y [`String`](https://"
+"doc.rust-lang.org/std/string/struct.String.html)"
#: src/unsafe-rust/exercise.md
msgid "UTF-8"
@@ -12295,8 +12072,8 @@ msgstr "Comunicarse con funciones C"
#: src/unsafe-rust/exercise.md
msgid ""
-"[`OsStr`](https://doc.rust-lang.org/std/ffi/struct.OsStr.html) and "
-"[`OsString`](https://doc.rust-lang.org/std/ffi/struct.OsString.html)"
+"[`OsStr`](https://doc.rust-lang.org/std/ffi/struct.OsStr.html) and [`OsString`]"
+"(https://doc.rust-lang.org/std/ffi/struct.OsString.html)"
msgstr ""
"[`OsStr`](https://doc.rust-lang.org/std/ffi/struct.OsStr.html) y [`OsString`]"
"(https://doc.rust-lang.org/std/ffi/struct.OsString.html)"
@@ -12315,8 +12092,7 @@ msgstr "Realizarás conversiones entre todos estos tipos:"
#: src/unsafe-rust/exercise.md
msgid ""
-"`&str` to `CString`: you need to allocate space for a trailing `\\0` "
-"character,"
+"`&str` to `CString`: you need to allocate space for a trailing `\\0` character,"
msgstr ""
"De `&str` a `CString`: debes asignar espacio para un carácter final `\\0`,"
@@ -12330,8 +12106,8 @@ msgid ""
"`*const i8` to `&CStr`: you need something which can find the trailing `\\0` "
"character,"
msgstr ""
-"De `*const i8` a `&CStr`: necesitas algo que pueda encontrar el carácter "
-"final `\\0`,"
+"De `*const i8` a `&CStr`: necesitas algo que pueda encontrar el carácter final "
+"`\\0`,"
#: src/unsafe-rust/exercise.md
#, fuzzy
@@ -12339,8 +12115,8 @@ msgid ""
"`&CStr` to `&[u8]`: a slice of bytes is the universal interface for \"some "
"unknown data\","
msgstr ""
-"De `&CStr` a `&[u8]`: un slice de bytes es la interfaz universal para "
-"\"algunos datos desconocidos\"."
+"De `&CStr` a `&[u8]`: un slice de bytes es la interfaz universal para \"algunos "
+"datos desconocidos\"."
#: src/unsafe-rust/exercise.md
msgid ""
@@ -12371,8 +12147,8 @@ msgid ""
"Copy the code below to
and fill in the missing "
"functions and methods:"
msgstr ""
-"Copia el fragmento de código que aparece más abajo en la página y rellena los métodos y funciones que faltan:"
+"Copia el fragmento de código que aparece más abajo en la página y rellena los métodos y funciones que faltan:"
#: src/unsafe-rust/exercise.md src/unsafe-rust/solution.md
msgid "\"macos\""
@@ -12388,8 +12164,7 @@ msgid ""
" // off_t are resolved according to the definitions in\n"
" // /usr/include/x86_64-linux-gnu/{sys/types.h, bits/typesizes.h}.\n"
msgstr ""
-"// Diseño según la página del manual de Linux para readdir(3), donde ino_t "
-"y\n"
+"// Diseño según la página del manual de Linux para readdir(3), donde ino_t y\n"
" // off_t se resuelven de acuerdo con las definiciones de\n"
" // /usr/include/x86_64-linux-gnu/{sys/types.h, bits/typesizes.h}. .\n"
@@ -12408,12 +12183,10 @@ msgid ""
" //\n"
" // \"Platforms that existed before these updates were available\" "
"refers\n"
-" // to macOS (as opposed to iOS / wearOS / etc.) on Intel and "
-"PowerPC.\n"
+" // to macOS (as opposed to iOS / wearOS / etc.) on Intel and PowerPC.\n"
msgstr ""
"// Consulta https://github.com/rust-lang/libc/issues/414 y la sección sobre\n"
-" // _DARWIN_FEATURE_64_BIT_INODE en la página del manual de macOS de "
-"stat(2).\n"
+" // _DARWIN_FEATURE_64_BIT_INODE en la página del manual de macOS de stat(2).\n"
" //\n"
" // \" Las plataformas que existían antes de que estas actualizaciones "
"estuvieran disponibles\" hacen referencia\n"
@@ -12531,30 +12304,30 @@ msgstr "Te Damos la Bienvenida a Rust en Android"
#: src/android.md
#, fuzzy
msgid ""
-"Rust is supported for system software on Android. This means that you can "
-"write new services, libraries, drivers or even firmware in Rust (or improve "
-"existing code as needed)."
+"Rust is supported for system software on Android. This means that you can write "
+"new services, libraries, drivers or even firmware in Rust (or improve existing "
+"code as needed)."
msgstr ""
"Rust es compatible con el desarrollo de plataformas nativas en Android. Esto "
-"significa que puedes escribir nuevos servicios del sistema operativo en "
-"Rust, así como ampliar los que ya existen."
+"significa que puedes escribir nuevos servicios del sistema operativo en Rust, "
+"así como ampliar los que ya existen."
#: src/android.md
msgid ""
"We will attempt to call Rust from one of your own projects today. So try to "
-"find a little corner of your code base where we can move some lines of code "
-"to Rust. The fewer dependencies and \"exotic\" types the better. Something "
-"that parses some raw bytes would be ideal."
+"find a little corner of your code base where we can move some lines of code to "
+"Rust. The fewer dependencies and \"exotic\" types the better. Something that "
+"parses some raw bytes would be ideal."
msgstr ""
"Hoy intentaremos llamar a Rust desde un proyecto personal. Intenta encontrar "
"una pequeña esquina de tu código base donde podamos mover algunas líneas de "
-"código a Rust. Cuantas menos dependencias y tipos \"exóticos\" tenga, mejor. "
-"Lo ideal sería algo que analizara bytes sin procesar."
+"código a Rust. Cuantas menos dependencias y tipos \"exóticos\" tenga, mejor. Lo "
+"ideal sería algo que analizara bytes sin procesar."
#: src/android.md
msgid ""
-"The speaker may mention any of the following given the increased use of Rust "
-"in Android:"
+"The speaker may mention any of the following given the increased use of Rust in "
+"Android:"
msgstr ""
"El orador puede mencionar cualquiera de los siguientes aspectos, debido al "
"aumento del uso de Rust en Android:"
@@ -12577,8 +12350,8 @@ msgstr ""
#: src/android.md
msgid ""
-"Kernel Drivers: [Binder](https://lore.kernel.org/rust-for-linux/20231101-"
-"rust-binder-v1-0-08ba9197f637@google.com/)"
+"Kernel Drivers: [Binder](https://lore.kernel.org/rust-for-linux/20231101-rust-"
+"binder-v1-0-08ba9197f637@google.com/)"
msgstr ""
"Controladores de kernel: [Binder](https://lore.kernel.org/rust-for-"
"linux/20231101-rust-binder-v1-0-08ba9197f637@google.com/)"
@@ -12588,8 +12361,8 @@ msgid ""
"Firmware: [pKVM firmware](https://security.googleblog.com/2023/10/bare-metal-"
"rust-in-android.html)"
msgstr ""
-"Firmware: [firmware de pKVM](https://security.googleblog.com/2023/10/bare-"
-"metal-rust-in-android.html)"
+"Firmware: [firmware de pKVM](https://security.googleblog.com/2023/10/bare-metal-"
+"rust-in-android.html)"
#: src/android/setup.md
#, fuzzy
@@ -12597,8 +12370,8 @@ msgid ""
"We will be using a Cuttlefish Android Virtual Device to test our code. Make "
"sure you have access to one or create a new one with:"
msgstr ""
-"Utilizaremos un dispositivo Android virtual para probar el código. Asegúrate "
-"de que tienes acceso a uno o créalo con:"
+"Utilizaremos un dispositivo Android virtual para probar el código. Asegúrate de "
+"que tienes acceso a uno o créalo con:"
#: src/android/setup.md
msgid ""
@@ -12613,24 +12386,24 @@ msgid ""
"Cuttlefish is a reference Android device designed to work on generic Linux "
"desktops. MacOS support is also planned."
msgstr ""
-"Cuttlefish es un dispositivo Android de referencia diseñado para funcionar "
-"en ordenadores genéricos Linux. También tenemos previsto ofrecer "
-"compatibilidad con MacOS."
+"Cuttlefish es un dispositivo Android de referencia diseñado para funcionar en "
+"ordenadores genéricos Linux. También tenemos previsto ofrecer compatibilidad "
+"con MacOS."
#: src/android/setup.md
msgid ""
-"The Cuttlefish system image maintains high fidelity to real devices, and is "
-"the ideal emulator to run many Rust use cases."
+"The Cuttlefish system image maintains high fidelity to real devices, and is the "
+"ideal emulator to run many Rust use cases."
msgstr ""
"La imagen del sistema de Cuttlefish mantiene una alta fidelidad a los "
-"dispositivos reales y es el emulador ideal para ejecutar muchos casos "
-"prácticos de Rust."
+"dispositivos reales y es el emulador ideal para ejecutar muchos casos prácticos "
+"de Rust."
#: src/android/build-rules.md
msgid "The Android build system (Soong) supports Rust via a number of modules:"
msgstr ""
-"El sistema de compilación de Android (Soong) es compatible con Rust a través "
-"de una serie de módulos:"
+"El sistema de compilación de Android (Soong) es compatible con Rust a través de "
+"una serie de módulos:"
#: src/android/build-rules.md
msgid "Module Type"
@@ -12663,11 +12436,11 @@ msgstr "`rust_ffi`"
#: src/android/build-rules.md
msgid ""
-"Produces a Rust C library usable by `cc` modules, and provides both static "
-"and shared variants."
+"Produces a Rust C library usable by `cc` modules, and provides both static and "
+"shared variants."
msgstr ""
-"Produce una biblioteca de Rust C que pueden usar los módulos `cc` y "
-"proporciona variantes estáticas y compartidas."
+"Produce una biblioteca de Rust C que pueden usar los módulos `cc` y proporciona "
+"variantes estáticas y compartidas."
#: src/android/build-rules.md
msgid "`rust_proc_macro`"
@@ -12675,11 +12448,10 @@ msgstr "`rust_proc_macro`"
#: src/android/build-rules.md
msgid ""
-"Produces a `proc-macro` Rust library. These are analogous to compiler "
-"plugins."
+"Produces a `proc-macro` Rust library. These are analogous to compiler plugins."
msgstr ""
-"Produce una biblioteca de Rust `proc-macro`. Son similares a complementos "
-"del compilador."
+"Produce una biblioteca de Rust `proc-macro`. Son similares a complementos del "
+"compilador."
#: src/android/build-rules.md
msgid "`rust_test`"
@@ -12688,8 +12460,8 @@ msgstr "`rust_test`"
#: src/android/build-rules.md
msgid "Produces a Rust test binary that uses the standard Rust test harness."
msgstr ""
-"Produce un binario de prueba de Rust que utiliza el agente de prueba "
-"estándar de Rust."
+"Produce un binario de prueba de Rust que utiliza el agente de prueba estándar "
+"de Rust."
#: src/android/build-rules.md
msgid "`rust_fuzz`"
@@ -12705,11 +12477,11 @@ msgstr "`rust_protobuf`"
#: src/android/build-rules.md
msgid ""
-"Generates source and produces a Rust library that provides an interface for "
-"a particular protobuf."
+"Generates source and produces a Rust library that provides an interface for a "
+"particular protobuf."
msgstr ""
-"Genera código fuente y produce una biblioteca Rust que proporciona una "
-"interfaz para un protobuf en particular."
+"Genera código fuente y produce una biblioteca Rust que proporciona una interfaz "
+"para un protobuf en particular."
#: src/android/build-rules.md
msgid "`rust_bindgen`"
@@ -12720,8 +12492,8 @@ msgid ""
"Generates source and produces a Rust library containing Rust bindings to C "
"libraries."
msgstr ""
-"Genera código fuente y produce una biblioteca de Rust que contiene enlaces "
-"de Rust a bibliotecas de C."
+"Genera código fuente y produce una biblioteca de Rust que contiene enlaces de "
+"Rust a bibliotecas de C."
#: src/android/build-rules.md
msgid "We will look at `rust_binary` and `rust_library` next."
@@ -12741,32 +12513,32 @@ msgstr ""
#: src/android/build-rules.md
msgid ""
-"For compliance and performance, Android must have crates in-tree. It must "
-"also interop with C/C++/Java code. Soong fills that gap."
+"For compliance and performance, Android must have crates in-tree. It must also "
+"interop with C/C++/Java code. Soong fills that gap."
msgstr ""
"Por razones de cumplimiento y rendimiento, Android debe tener crates en "
-"estructura de árbol. También debe existir interoperabilidad con el código C, "
-"C++ y Java. Soong cumple estos requisitos."
+"estructura de árbol. También debe existir interoperabilidad con el código C, C+"
+"+ y Java. Soong cumple estos requisitos."
#: src/android/build-rules.md
msgid ""
-"Soong has many similarities to Bazel, which is the open-source variant of "
-"Blaze (used in google3)."
+"Soong has many similarities to Bazel, which is the open-source variant of Blaze "
+"(used in google3)."
msgstr ""
-"Soong tiene muchas similitudes con Bazel, que es la variante de código "
-"abierto de Blaze (se utiliza en google3)."
+"Soong tiene muchas similitudes con Bazel, que es la variante de código abierto "
+"de Blaze (se utiliza en google3)."
#: src/android/build-rules.md
msgid ""
-"There is a plan to transition [Android](https://source.android.com/docs/"
-"setup/build/bazel/introduction), [ChromeOS](https://chromium.googlesource."
-"com/chromiumos/bazel/), and [Fuchsia](https://source.android.com/docs/setup/"
-"build/bazel/introduction) to Bazel."
+"There is a plan to transition [Android](https://source.android.com/docs/setup/"
+"build/bazel/introduction), [ChromeOS](https://chromium.googlesource.com/"
+"chromiumos/bazel/), and [Fuchsia](https://source.android.com/docs/setup/build/"
+"bazel/introduction) to Bazel."
msgstr ""
-"Está previsto hacer la transición de [Android](https://source.android.com/"
-"docs/setup/build/bazel/introduction), [ChromeOS](https://chromium."
-"googlesource.com/chromiumos/bazel/) y [Fuchsia](https://source.android.com/"
-"docs/setup/build/bazel/introduction) a Bazel."
+"Está previsto hacer la transición de [Android](https://source.android.com/docs/"
+"setup/build/bazel/introduction), [ChromeOS](https://chromium.googlesource.com/"
+"chromiumos/bazel/) y [Fuchsia](https://source.android.com/docs/setup/build/"
+"bazel/introduction) a Bazel."
#: src/android/build-rules.md
msgid "Learning Bazel-like build rules is useful for all Rust OS developers."
@@ -12784,11 +12556,11 @@ msgstr "Binarios de Rust"
#: src/android/build-rules/binary.md
msgid ""
-"Let us start with a simple application. At the root of an AOSP checkout, "
-"create the following files:"
+"Let us start with a simple application. At the root of an AOSP checkout, create "
+"the following files:"
msgstr ""
-"Empecemos con una sencilla aplicación. Desde la raíz de un AOSP revisado, "
-"crea los siguientes archivos:"
+"Empecemos con una sencilla aplicación. Desde la raíz de un AOSP revisado, crea "
+"los siguientes archivos:"
#: src/android/build-rules/binary.md src/android/build-rules/library.md
msgid "_hello_rust/Android.bp_:"
@@ -12859,9 +12631,8 @@ msgid ""
"(https://cs.android.com/android/platform/superproject/+/master:external/rust/"
"crates/)."
msgstr ""
-"`libtextwrap`, que es un crate ya incluido en [`external/rust/crates/`]"
-"(https://cs.android.com/android/platform/superproject/+/master:external/rust/"
-"crates/)."
+"`libtextwrap`, que es un crate ya incluido en [`external/rust/crates/`](https://"
+"cs.android.com/android/platform/superproject/+/master:external/rust/crates/)."
#: src/android/build-rules/library.md
msgid "\"hello_rust_with_dep\""
@@ -12883,9 +12654,8 @@ msgstr "// Es necesario para evitar errores de enlace dinámico.\n"
msgid "\"greetings\""
msgstr "\"greetings\""
-#: src/android/build-rules/library.md
-#: src/android/aidl/example-service/service.md src/android/testing.md
-#: src/android/interoperability/java.md
+#: src/android/build-rules/library.md src/android/aidl/example-service/service.md
+#: src/android/testing.md src/android/interoperability/java.md
msgid "\"src/lib.rs\""
msgstr "\"src/lib.rs\""
@@ -12935,13 +12705,12 @@ msgid ""
"The [Android Interface Definition Language (AIDL)](https://developer.android."
"com/guide/components/aidl) is supported in Rust:"
msgstr ""
-"El [lenguaje de definición de la interfaz de Android (AIDL)](https://"
-"developer.android.com/guide/components/aidl) es compatible con Rust:"
+"El [lenguaje de definición de la interfaz de Android (AIDL)](https://developer."
+"android.com/guide/components/aidl) es compatible con Rust:"
#: src/android/aidl.md
msgid "Rust code can call existing AIDL servers,"
-msgstr ""
-"El código de Rust puede llamar a servidores AIDL que ya se hayan creado."
+msgstr "El código de Rust puede llamar a servidores AIDL que ya se hayan creado."
#: src/android/aidl.md
msgid "You can create new AIDL servers in Rust."
@@ -12950,8 +12719,8 @@ msgstr "Puedes crear servidores de AIDL en Rust."
#: src/android/aidl/birthday-service.md
msgid ""
"To illustrate how to use Rust with Binder, we're going to walk through the "
-"process of creating a Binder interface. We're then going to both implement "
-"the described service and write client code that talks to that service."
+"process of creating a Binder interface. We're then going to both implement the "
+"described service and write client code that talks to that service."
msgstr ""
#: src/android/aidl/example-service/interface.md
@@ -12964,8 +12733,7 @@ msgstr "La API de tu servicio se declara mediante una interfaz de AIDL:"
#: src/android/aidl/example-service/interface.md
#: src/android/aidl/example-service/service-bindings.md
-msgid ""
-"_birthday_service/aidl/com/example/birthdayservice/IBirthdayService.aidl_:"
+msgid "_birthday_service/aidl/com/example/birthdayservice/IBirthdayService.aidl_:"
msgstr ""
"_birthday_service/aidl/com/example/birthdayservice/IBirthdayService.aidl_:"
@@ -13021,8 +12789,8 @@ msgstr "Rust generado:"
#: src/android/aidl/example-service/service-bindings.md
msgid ""
-"Your service will need to implement this trait, and your client will use "
-"this trait to talk to the service."
+"Your service will need to implement this trait, and your client will use this "
+"trait to talk to the service."
msgstr ""
#: src/android/aidl/example-service/service-bindings.md
@@ -13033,8 +12801,8 @@ msgstr ""
#: src/android/aidl/example-service/service-bindings.md
msgid ""
-"Point out how the generated function signature, specifically the argument "
-"and return types, correspond the interface definition."
+"Point out how the generated function signature, specifically the argument and "
+"return types, correspond the interface definition."
msgstr ""
#: src/android/aidl/example-service/service-bindings.md
@@ -13098,8 +12866,8 @@ msgstr "\"libbinder_rs\""
#: src/android/aidl/example-service/service.md
msgid ""
-"Point out the path to the generated `IBirthdayService` trait, and explain "
-"why each of the segments is necessary."
+"Point out the path to the generated `IBirthdayService` trait, and explain why "
+"each of the segments is necessary."
msgstr ""
#: src/android/aidl/example-service/service.md
@@ -13147,11 +12915,11 @@ msgstr "// Para evitar errores de enlaces dinámicos.\n"
#: src/android/aidl/example-service/server.md
msgid ""
-"The process for taking a user-defined service implementation (in this case "
-"the `BirthdayService` type, which implements the `IBirthdayService`) and "
-"starting it as a Binder service has multiple steps, and may appear more "
-"complicated than students are used to if they've used Binder from C++ or "
-"another language. Explain to students why each step is necessary."
+"The process for taking a user-defined service implementation (in this case the "
+"`BirthdayService` type, which implements the `IBirthdayService`) and starting "
+"it as a Binder service has multiple steps, and may appear more complicated than "
+"students are used to if they've used Binder from C++ or another language. "
+"Explain to students why each step is necessary."
msgstr ""
#: src/android/aidl/example-service/server.md
@@ -13169,14 +12937,14 @@ msgstr ""
#: src/android/aidl/example-service/server.md
msgid ""
-"Call `add_service`, giving it a service identifier and your service object "
-"(the `BnBirthdayService` object in the example)."
+"Call `add_service`, giving it a service identifier and your service object (the "
+"`BnBirthdayService` object in the example)."
msgstr ""
#: src/android/aidl/example-service/server.md
msgid ""
-"Call `join_thread_pool` to add the current thread to Binder's thread pool "
-"and start listening for connections."
+"Call `join_thread_pool` to add the current thread to Binder's thread pool and "
+"start listening for connections."
msgstr ""
#: src/android/aidl/example-service/deploy.md
@@ -13187,16 +12955,14 @@ msgstr "Ahora podemos crear, insertar e iniciar el servicio:"
msgid ""
"```shell\n"
"m birthday_server\n"
-"adb push \"$ANDROID_PRODUCT_OUT/system/bin/birthday_server\" /data/local/"
-"tmp\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/birthday_server\" /data/local/tmp\n"
"adb root\n"
"adb shell /data/local/tmp/birthday_server\n"
"```"
msgstr ""
"```shell\n"
"m birthday_server\n"
-"adb push \"$ANDROID_PRODUCT_OUT/system/bin/birthday_server\" /data/local/"
-"tmp\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/birthday_server\" /data/local/tmp\n"
"adb root\n"
"adb shell /data/local/tmp/birthday_server\n"
"```"
@@ -13215,8 +12981,7 @@ msgstr "Cliente de AIDL"
#: src/android/aidl/example-service/client.md
msgid "Finally, we can create a Rust client for our new service."
-msgstr ""
-"Por último, podemos crear un cliente de Rust para nuestro nuevo servicio."
+msgstr "Por último, podemos crear un cliente de Rust para nuestro nuevo servicio."
#: src/android/aidl/example-service/client.md
#: src/android/aidl/example-service/changing-implementation.md
@@ -13228,8 +12993,7 @@ msgid "/// Call the birthday service.\n"
msgstr "/// Llama al servicio de felicitación cumpleaños.\n"
#: src/android/aidl/example-service/client.md src/android/aidl/types/objects.md
-#: src/android/aidl/types/parcelables.md
-#: src/android/aidl/types/file-descriptor.md
+#: src/android/aidl/types/parcelables.md src/android/aidl/types/file-descriptor.md
msgid "\"Failed to connect to BirthdayService\""
msgstr ""
"\"No se ha podido conectar con el servicio de felicitación de cumpleaños.\""
@@ -13263,15 +13027,13 @@ msgstr "Compila, inserta y ejecuta el cliente en tu dispositivo:"
msgid ""
"```shell\n"
"m birthday_client\n"
-"adb push \"$ANDROID_PRODUCT_OUT/system/bin/birthday_client\" /data/local/"
-"tmp\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/birthday_client\" /data/local/tmp\n"
"adb shell /data/local/tmp/birthday_client Charlie 60\n"
"```"
msgstr ""
"```shell\n"
"m birthday_client\n"
-"adb push \"$ANDROID_PRODUCT_OUT/system/bin/birthday_client\" /data/local/"
-"tmp\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/birthday_client\" /data/local/tmp\n"
"adb shell /data/local/tmp/birthday_client Charlie 60\n"
"```"
@@ -13284,29 +13046,28 @@ msgstr ""
#: src/android/aidl/example-service/client.md
msgid ""
"`Strong` is a custom smart pointer type for Binder. It handles both an in-"
-"process ref count for the service trait object, and the global Binder ref "
-"count that tracks how many processes have a reference to the object."
+"process ref count for the service trait object, and the global Binder ref count "
+"that tracks how many processes have a reference to the object."
msgstr ""
#: src/android/aidl/example-service/client.md
msgid ""
-"Note that the trait object that the client uses to talk to the service uses "
-"the exact same trait that the server implements. For a given Binder "
-"interface, there is a single Rust trait generated that both client and "
-"server use."
+"Note that the trait object that the client uses to talk to the service uses the "
+"exact same trait that the server implements. For a given Binder interface, "
+"there is a single Rust trait generated that both client and server use."
msgstr ""
#: src/android/aidl/example-service/client.md
msgid ""
-"Use the same service identifier used when registering the service. This "
-"should ideally be defined in a common crate that both the client and server "
-"can depend on."
+"Use the same service identifier used when registering the service. This should "
+"ideally be defined in a common crate that both the client and server can depend "
+"on."
msgstr ""
#: src/android/aidl/example-service/changing-definition.md
msgid ""
-"Let us extend the API with more functionality: we want to let clients "
-"specify a list of lines for the birthday card:"
+"Let us extend the API with more functionality: we want to let clients specify a "
+"list of lines for the birthday card:"
msgstr ""
"Ampliemos la API con más funciones. Queremos que los clientes puedan indicar "
"una lista de líneas para la tarjeta de cumpleaños:"
@@ -13317,9 +13078,9 @@ msgstr ""
#: src/android/aidl/example-service/changing-definition.md
msgid ""
-"Note how the `String[]` in the AIDL definition is translated as a "
-"`&[String]` in Rust, i.e. that idiomatic Rust types are used in the "
-"generated bindings wherever possible:"
+"Note how the `String[]` in the AIDL definition is translated as a `&[String]` "
+"in Rust, i.e. that idiomatic Rust types are used in the generated bindings "
+"wherever possible:"
msgstr ""
#: src/android/aidl/example-service/changing-definition.md
@@ -13504,10 +13265,10 @@ msgstr "`Vec`"
#: src/android/aidl/types/arrays.md
msgid ""
-"In Android 13 or higher, fixed-size arrays are supported, i.e. `T[N]` "
-"becomes `[T; N]`. Fixed-size arrays can have multiple dimensions (e.g. "
-"int\\[3\\]\\[4\\]). In the Java backend, fixed-size arrays are represented "
-"as array types."
+"In Android 13 or higher, fixed-size arrays are supported, i.e. `T[N]` becomes "
+"`[T; N]`. Fixed-size arrays can have multiple dimensions (e.g. "
+"int\\[3\\]\\[4\\]). In the Java backend, fixed-size arrays are represented as "
+"array types."
msgstr ""
#: src/android/aidl/types/arrays.md
@@ -13516,8 +13277,8 @@ msgstr ""
#: src/android/aidl/types/objects.md
msgid ""
-"AIDL objects can be sent either as a concrete AIDL type or as the type-"
-"erased `IBinder` interface:"
+"AIDL objects can be sent either as a concrete AIDL type or as the type-erased "
+"`IBinder` interface:"
msgstr ""
#: src/android/aidl/types/objects.md
@@ -13582,8 +13343,7 @@ msgstr ""
#: src/android/aidl/types/parcelables.md
#, fuzzy
-msgid ""
-"**birthday_service/aidl/com/example/birthdayservice/BirthdayInfo.aidl**:"
+msgid "**birthday_service/aidl/com/example/birthdayservice/BirthdayInfo.aidl**:"
msgstr ""
"_birthday_service/aidl/com/example/birthdayservice/IBirthdayService.aidl_:"
@@ -13630,8 +13390,7 @@ msgstr "_birthday_service/src/lib.rs_:"
#: src/android/aidl/types/file-descriptor.md
msgid ""
"// Convert the file descriptor to a `File`. `ParcelFileDescriptor` wraps\n"
-" // an `OwnedFd`, which can be cloned and then used to create a "
-"`File`\n"
+" // an `OwnedFd`, which can be cloned and then used to create a `File`\n"
" // object.\n"
msgstr ""
@@ -13642,9 +13401,9 @@ msgstr "\"Longitud no válida\""
#: src/android/aidl/types/file-descriptor.md
msgid ""
-"`ParcelFileDescriptor` wraps an `OwnedFd`, and so can be created from a "
-"`File` (or any other type that wraps an `OwnedFd`), and can be used to "
-"create a new `File` handle on the other side."
+"`ParcelFileDescriptor` wraps an `OwnedFd`, and so can be created from a `File` "
+"(or any other type that wraps an `OwnedFd`), and can be used to create a new "
+"`File` handle on the other side."
msgstr ""
#: src/android/aidl/types/file-descriptor.md
@@ -13660,8 +13419,8 @@ msgstr "Rust en Android"
#: src/android/testing.md
msgid ""
-"Building on [Testing](../testing.md), we will now look at how unit tests "
-"work in AOSP. Use the `rust_test` module for your unit tests:"
+"Building on [Testing](../testing.md), we will now look at how unit tests work "
+"in AOSP. Use the `rust_test` module for your unit tests:"
msgstr ""
#: src/android/testing.md
@@ -13736,8 +13495,8 @@ msgid ""
"INFO: Elapsed time: 2.666s, Critical Path: 2.40s\n"
"INFO: 3 processes: 2 internal, 1 linux-sandbox.\n"
"INFO: Build completed successfully, 3 total actions\n"
-"//comprehensive-rust-android/testing:libleftpad_test_host PASSED "
-"in 2.3s\n"
+"//comprehensive-rust-android/testing:libleftpad_test_host PASSED in "
+"2.3s\n"
" PASSED libleftpad_test.tests::long_string (0.0s)\n"
" PASSED libleftpad_test.tests::short_string (0.0s)\n"
"Test cases: finished with 2 passing and 0 failing out of 2 test cases\n"
@@ -13772,14 +13531,14 @@ msgid ""
"If we change the last element to `\"!\"`, the test fails with a structured "
"error message pin-pointing the error:"
msgstr ""
-"Si cambiamos el último elemento a `\"!\"`, la prueba dará error y aparecerá "
-"un mensaje de error estructurado que señala cuál es el fallo:"
+"Si cambiamos el último elemento a `\"!\"`, la prueba dará error y aparecerá un "
+"mensaje de error estructurado que señala cuál es el fallo:"
#: src/android/testing/googletest.md
msgid ""
-"GoogleTest is not part of the Rust Playground, so you need to run this "
-"example in a local environment. Use `cargo add googletest` to quickly add it "
-"to an existing Cargo project."
+"GoogleTest is not part of the Rust Playground, so you need to run this example "
+"in a local environment. Use `cargo add googletest` to quickly add it to an "
+"existing Cargo project."
msgstr ""
"GoogleTest no forma parte de Rust Playground, por lo que debes llevar a cabo "
"este ejemplo en un entorno local. Usa `cargo add googletest` para añadirlo "
@@ -13797,21 +13556,21 @@ msgstr ""
#: src/android/testing/googletest.md
msgid ""
"This just scratches the surface, there are many builtin matchers. Consider "
-"going through the first chapter of [\"Advanced testing for Rust "
-"applications\"](https://github.com/mainmatter/rust-advanced-testing-"
-"workshop), a self-guided Rust course: it provides a guided introduction to "
-"the library, with exercises to help you get comfortable with `googletest` "
-"macros, its matchers and its overall philosophy."
+"going through the first chapter of [\"Advanced testing for Rust applications\"]"
+"(https://github.com/mainmatter/rust-advanced-testing-workshop), a self-guided "
+"Rust course: it provides a guided introduction to the library, with exercises "
+"to help you get comfortable with `googletest` macros, its matchers and its "
+"overall philosophy."
msgstr ""
#: src/android/testing/googletest.md
#, fuzzy
msgid ""
-"A particularly nice feature is that mismatches in multi-line strings are "
-"shown as a diff:"
+"A particularly nice feature is that mismatches in multi-line strings are shown "
+"as a diff:"
msgstr ""
-"Una característica muy interesante es que las discrepancias en las cadenas "
-"que contienen varias líneas se muestran como un diff:"
+"Una característica muy interesante es que las discrepancias en las cadenas que "
+"contienen varias líneas se muestran como un diff:"
#: src/android/testing/googletest.md
msgid ""
@@ -13842,76 +13601,74 @@ msgid ""
"The crate is a Rust port of [GoogleTest for C++](https://google.github.io/"
"googletest/)."
msgstr ""
-"El crate es un puerto de Rust de [GoogleTest para C++](https://google.github."
-"io/googletest/)."
+"El crate es un puerto de Rust de [GoogleTest para C++](https://google.github.io/"
+"googletest/)."
#: src/android/testing/mocking.md
msgid ""
-"For mocking, [Mockall](https://docs.rs/mockall/) is a widely used library. "
-"You need to refactor your code to use traits, which you can then quickly "
-"mock:"
+"For mocking, [Mockall](https://docs.rs/mockall/) is a widely used library. You "
+"need to refactor your code to use traits, which you can then quickly mock:"
msgstr ""
"[Mockall](https://docs.rs/mockall/) es una biblioteca que se usa para hacer "
-"simulaciones. Debes refactorizar tu código para usar traits, con los que "
-"podrás hacer simulaciones:"
+"simulaciones. Debes refactorizar tu código para usar traits, con los que podrás "
+"hacer simulaciones:"
#: src/android/testing/mocking.md
#, fuzzy
msgid ""
-"Mockall is the recommended mocking library in Android (AOSP). There are "
-"other [mocking libraries available on crates.io](https://crates.io/keywords/"
-"mock), in particular in the area of mocking HTTP services. The other mocking "
-"libraries work in a similar fashion as Mockall, meaning that they make it "
-"easy to get a mock implementation of a given trait."
+"Mockall is the recommended mocking library in Android (AOSP). There are other "
+"[mocking libraries available on crates.io](https://crates.io/keywords/mock), in "
+"particular in the area of mocking HTTP services. The other mocking libraries "
+"work in a similar fashion as Mockall, meaning that they make it easy to get a "
+"mock implementation of a given trait."
msgstr ""
-"Estos consejos son útiles para Android (AOSP), donde Mockall es la "
-"biblioteca de simulaciones recomendada. Hay otras [bibliotecas de simulación "
-"disponibles en crates.io](https://crates.io/keywords/mock), especialmente en "
-"el área de servicios de simulación de HTTP. Las demás bibliotecas de "
-"simulación funcionan de forma similar a Mockall, lo que significa que "
-"facilitan la obtención de una implementación simulada de un trait "
-"determinado."
+"Estos consejos son útiles para Android (AOSP), donde Mockall es la biblioteca "
+"de simulaciones recomendada. Hay otras [bibliotecas de simulación disponibles "
+"en crates.io](https://crates.io/keywords/mock), especialmente en el área de "
+"servicios de simulación de HTTP. Las demás bibliotecas de simulación funcionan "
+"de forma similar a Mockall, lo que significa que facilitan la obtención de una "
+"implementación simulada de un trait determinado."
#: src/android/testing/mocking.md
msgid ""
"Note that mocking is somewhat _controversial_: mocks allow you to completely "
-"isolate a test from its dependencies. The immediate result is faster and "
-"more stable test execution. On the other hand, the mocks can be configured "
-"wrongly and return output different from what the real dependencies would do."
+"isolate a test from its dependencies. The immediate result is faster and more "
+"stable test execution. On the other hand, the mocks can be configured wrongly "
+"and return output different from what the real dependencies would do."
msgstr ""
"Ten en cuenta que las simulaciones son algo _polémicas_, ya que te permiten "
-"aislar por completo una prueba de sus dependencias. El resultado inmediato "
-"es una ejecución de pruebas más rápida y estable. Por otro lado, las "
-"simulaciones se pueden configurar de forma incorrecta y devuelven un "
-"resultado diferente del que se obtendría con las dependencias reales."
+"aislar por completo una prueba de sus dependencias. El resultado inmediato es "
+"una ejecución de pruebas más rápida y estable. Por otro lado, las simulaciones "
+"se pueden configurar de forma incorrecta y devuelven un resultado diferente del "
+"que se obtendría con las dependencias reales."
#: src/android/testing/mocking.md
msgid ""
-"If at all possible, it is recommended that you use the real dependencies. As "
-"an example, many databases allow you to configure an in-memory backend. This "
-"means that you get the correct behavior in your tests, plus they are fast "
-"and will automatically clean up after themselves."
+"If at all possible, it is recommended that you use the real dependencies. As an "
+"example, many databases allow you to configure an in-memory backend. This means "
+"that you get the correct behavior in your tests, plus they are fast and will "
+"automatically clean up after themselves."
msgstr ""
-"Si es posible, te recomendamos que uses las dependencias reales. Por "
-"ejemplo, muchas bases de datos te permiten configurar un backend en la "
-"memoria. Es decir, en tus pruebas obtendrás el comportamiento correcto y, "
-"además, son rápidas y se limpiarán de forma automática tras las pruebas."
+"Si es posible, te recomendamos que uses las dependencias reales. Por ejemplo, "
+"muchas bases de datos te permiten configurar un backend en la memoria. Es "
+"decir, en tus pruebas obtendrás el comportamiento correcto y, además, son "
+"rápidas y se limpiarán de forma automática tras las pruebas."
#: src/android/testing/mocking.md
msgid ""
"Similarly, many web frameworks allow you to start an in-process server which "
-"binds to a random port on `localhost`. Always prefer this over mocking away "
-"the framework since it helps you test your code in the real environment."
+"binds to a random port on `localhost`. Always prefer this over mocking away the "
+"framework since it helps you test your code in the real environment."
msgstr ""
"Del mismo modo, muchos frameworks web te permiten iniciar un servidor en "
-"proceso que se vincula a un puerto aleatorio en `localhost`. Siempre es "
-"mejor utilizar esta opción en lugar de simular el framework, ya que te ayuda "
-"a hacer pruebas con el código en el entorno real."
+"proceso que se vincula a un puerto aleatorio en `localhost`. Siempre es mejor "
+"utilizar esta opción en lugar de simular el framework, ya que te ayuda a hacer "
+"pruebas con el código en el entorno real."
#: src/android/testing/mocking.md
msgid ""
-"Mockall is not part of the Rust Playground, so you need to run this example "
-"in a local environment. Use `cargo add mockall` to quickly add Mockall to an "
+"Mockall is not part of the Rust Playground, so you need to run this example in "
+"a local environment. Use `cargo add mockall` to quickly add Mockall to an "
"existing Cargo project."
msgstr ""
"Mockall no forma parte de Rust Playground, por lo que debes ejecutar este "
@@ -13921,31 +13678,30 @@ msgstr ""
#: src/android/testing/mocking.md
msgid ""
"Mockall has a lot more functionality. In particular, you can set up "
-"expectations which depend on the arguments passed. Here we use this to mock "
-"a cat which becomes hungry 3 hours after the last time it was fed:"
+"expectations which depend on the arguments passed. Here we use this to mock a "
+"cat which becomes hungry 3 hours after the last time it was fed:"
msgstr ""
-"Mockall tiene muchas más funciones. En concreto, puedes configurar "
-"expectativas en función de los argumentos. Aquí utilizamos el ejemplo para "
-"simular un gato que tiene hambre 3 horas después de que le hayan dado de "
-"comer:"
+"Mockall tiene muchas más funciones. En concreto, puedes configurar expectativas "
+"en función de los argumentos. Aquí utilizamos el ejemplo para simular un gato "
+"que tiene hambre 3 horas después de que le hayan dado de comer:"
#: src/android/testing/mocking.md
msgid ""
"You can use `.times(n)` to limit the number of times a mock method can be "
-"called to `n` --- the mock will automatically panic when dropped if this "
-"isn't satisfied."
+"called to `n` --- the mock will automatically panic when dropped if this isn't "
+"satisfied."
msgstr ""
-"Puedes utilizar `.times(n)` para limitar el número de veces que se puede "
-"llamar a un método de simulación a `n`. Si no se cumple, la simulación "
-"activará un pánico automáticamente cuando se elimine."
+"Puedes utilizar `.times(n)` para limitar el número de veces que se puede llamar "
+"a un método de simulación a `n`. Si no se cumple, la simulación activará un "
+"pánico automáticamente cuando se elimine."
#: src/android/logging.md
msgid ""
-"You should use the `log` crate to automatically log to `logcat` (on-device) "
-"or `stdout` (on-host):"
+"You should use the `log` crate to automatically log to `logcat` (on-device) or "
+"`stdout` (on-host):"
msgstr ""
-"Utiliza el crate `log` para que se registre automáticamente en `logcat` (en "
-"el dispositivo) o `stdout` (en el host):"
+"Utiliza el crate `log` para que se registre automáticamente en `logcat` (en el "
+"dispositivo) o `stdout` (en el host):"
#: src/android/logging.md
msgid "_hello_rust_logs/Android.bp_:"
@@ -14000,15 +13756,13 @@ msgstr "Compila, inserta y ejecuta el binario en tu dispositivo:"
msgid ""
"```shell\n"
"m hello_rust_logs\n"
-"adb push \"$ANDROID_PRODUCT_OUT/system/bin/hello_rust_logs\" /data/local/"
-"tmp\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/hello_rust_logs\" /data/local/tmp\n"
"adb shell /data/local/tmp/hello_rust_logs\n"
"```"
msgstr ""
"```shell\n"
"m hello_rust_logs\n"
-"adb push \"$ANDROID_PRODUCT_OUT/system/bin/hello_rust_logs\" /data/local/"
-"tmp\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/hello_rust_logs\" /data/local/tmp\n"
"adb shell /data/local/tmp/hello_rust_logs\n"
"```"
@@ -14090,12 +13844,11 @@ msgstr "Uso de Bindgen"
#: src/android/interoperability/with-c/bindgen.md
msgid ""
-"The [bindgen](https://rust-lang.github.io/rust-bindgen/introduction.html) "
-"tool can auto-generate bindings from a C header file."
+"The [bindgen](https://rust-lang.github.io/rust-bindgen/introduction.html) tool "
+"can auto-generate bindings from a C header file."
msgstr ""
-"La herramienta [bindgen](https://rust-lang.github.io/rust-bindgen/"
-"introduction.html) puede generar automáticamente enlaces desde un archivo de "
-"encabezado de C."
+"La herramienta [bindgen](https://rust-lang.github.io/rust-bindgen/introduction."
+"html) puede generar automáticamente enlaces desde un archivo de encabezado de C."
#: src/android/interoperability/with-c/bindgen.md
msgid "First create a small C library:"
@@ -14200,10 +13953,8 @@ msgstr "//! Demo de Bindgen.\n"
#: src/android/interoperability/with-c/bindgen.md
msgid ""
"// SAFETY: The pointer we pass is valid because it came from a Rust\n"
-" // reference, and the `name` it contains refers to `name` above which "
-"also\n"
-" // remains valid. `print_card` doesn't store either pointer to use "
-"later\n"
+" // reference, and the `name` it contains refers to `name` above which also\n"
+" // remains valid. `print_card` doesn't store either pointer to use later\n"
" // after it returns.\n"
msgstr ""
@@ -14226,8 +13977,8 @@ msgstr ""
#: src/android/interoperability/with-c/bindgen.md
msgid "Finally, we can run auto-generated tests to ensure the bindings work:"
msgstr ""
-"Por último, podemos ejecutar pruebas generadas automáticamente para "
-"comprobar que los enlaces funcionan:"
+"Por último, podemos ejecutar pruebas generadas automáticamente para comprobar "
+"que los enlaces funcionan:"
#: src/android/interoperability/with-c/bindgen.md
msgid "\"libbirthday_bindgen_test\""
@@ -14322,22 +14073,20 @@ msgstr "\"main.c\""
msgid ""
"```shell\n"
"m analyze_numbers\n"
-"adb push \"$ANDROID_PRODUCT_OUT/system/bin/analyze_numbers\" /data/local/"
-"tmp\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/analyze_numbers\" /data/local/tmp\n"
"adb shell /data/local/tmp/analyze_numbers\n"
"```"
msgstr ""
"```shell\n"
"m analyze_numbers\n"
-"adb push \"$ANDROID_PRODUCT_OUT/system/bin/analyze_numbers\" /data/local/"
-"tmp\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/analyze_numbers\" /data/local/tmp\n"
"adb shell /data/local/tmp/analyze_numbers\n"
"```"
#: src/android/interoperability/with-c/rust.md
msgid ""
-"`#[no_mangle]` disables Rust's usual name mangling, so the exported symbol "
-"will just be the name of the function. You can also use `#[export_name = "
+"`#[no_mangle]` disables Rust's usual name mangling, so the exported symbol will "
+"just be the name of the function. You can also use `#[export_name = "
"\"some_name\"]` to specify whatever name you want."
msgstr ""
"\"#\\[no_mangle\\]\" inhabilita la modificación de nombres habitual de Rust, "
@@ -14347,11 +14096,11 @@ msgstr ""
#: src/android/interoperability/cpp.md
msgid ""
-"The [CXX crate](https://cxx.rs/) makes it possible to do safe "
-"interoperability between Rust and C++."
+"The [CXX crate](https://cxx.rs/) makes it possible to do safe interoperability "
+"between Rust and C++."
msgstr ""
-"El [crate CXX](https://cxx.rs/) permite una interoperabilidad segura entre "
-"Rust y C++."
+"El [crate CXX](https://cxx.rs/) permite una interoperabilidad segura entre Rust "
+"y C++."
#: src/android/interoperability/cpp.md
msgid "The overall approach looks like this:"
@@ -14363,10 +14112,9 @@ msgid ""
"from each language to the other. You provide this description using extern "
"blocks in a Rust module annotated with the `#[cxx::bridge]` attribute macro."
msgstr ""
-"CXX se basa en una descripción de las firmas de la función que se mostrarán "
-"de un lenguaje a otro. Proporcionas esta descripción mediante bloques "
-"externos en un módulo de Rust anotado con la macro de atributo `#[cxx::"
-"bridge]`."
+"CXX se basa en una descripción de las firmas de la función que se mostrarán de "
+"un lenguaje a otro. Proporcionas esta descripción mediante bloques externos en "
+"un módulo de Rust anotado con la macro de atributo `#[cxx::bridge]`."
#: src/android/interoperability/cpp/bridge.md
msgid "\"org::blobstore\""
@@ -14415,8 +14163,8 @@ msgstr "Bridge se declara generalmente en un módulo `ffi` dentro del crate."
#: src/android/interoperability/cpp/bridge.md
msgid ""
"From the declarations made in the bridge module, CXX will generate matching "
-"Rust and C++ type/function definitions in order to expose those items to "
-"both languages."
+"Rust and C++ type/function definitions in order to expose those items to both "
+"languages."
msgstr ""
"A partir de las declaraciones que se han hecho en el módulo bridge, CXX "
"generará definiciones de funciones o tipos de Rust y C++ que coincidan para "
@@ -14424,16 +14172,16 @@ msgstr ""
#: src/android/interoperability/cpp/bridge.md
msgid ""
-"To view the generated Rust code, use [cargo-expand](https://github.com/"
-"dtolnay/cargo-expand) to view the expanded proc macro. For most of the "
-"examples you would use `cargo expand ::ffi` to expand just the `ffi` module "
-"(though this doesn't apply for Android projects)."
+"To view the generated Rust code, use [cargo-expand](https://github.com/dtolnay/"
+"cargo-expand) to view the expanded proc macro. For most of the examples you "
+"would use `cargo expand ::ffi` to expand just the `ffi` module (though this "
+"doesn't apply for Android projects)."
msgstr ""
"Para ver el código de Rust generado, usa [cargo-expand](https://github.com/"
"dtolnay/cargo-expand) para ver la macro de procedimiento desplegada. En la "
"mayoría de los ejemplos, se utilizaría `cargo expand ::ffi` para desplegar "
-"únicamente el módulo `ffi` (aunque esta acción no se aplica a los proyectos "
-"de Android)."
+"únicamente el módulo `ffi` (aunque esta acción no se aplica a los proyectos de "
+"Android)."
#: src/android/interoperability/cpp/bridge.md
msgid "To view the generated C++ code, look in `target/cxxbridge`."
@@ -14461,27 +14209,26 @@ msgid ""
"Items declared in the `extern \"Rust\"` reference items that are in scope in "
"the parent module."
msgstr ""
-"Elementos declarados en los elementos de referencia `extern de \"Rust\" que "
-"se encuentran dentro del ámbito del módulo superior."
+"Elementos declarados en los elementos de referencia `extern de \"Rust\" que se "
+"encuentran dentro del ámbito del módulo superior."
#: src/android/interoperability/cpp/rust-bridge.md
msgid ""
-"The CXX code generator uses your `extern \"Rust\"` section(s) to produce a C+"
-"+ header file containing the corresponding C++ declarations. The generated "
-"header has the same path as the Rust source file containing the bridge, "
-"except with a .rs.h file extension."
+"The CXX code generator uses your `extern \"Rust\"` section(s) to produce a C++ "
+"header file containing the corresponding C++ declarations. The generated header "
+"has the same path as the Rust source file containing the bridge, except with a ."
+"rs.h file extension."
msgstr ""
"El generador de código CXX utiliza las secciones `extern de \"Rust\"` para "
-"generar un archivo de encabezado de C++ que contenga las declaraciones de C+"
-"+ correspondientes. El encabezado generado tiene la misma ruta que el "
-"archivo de origen de Rust que contiene el patrón bridge, excepto con la "
-"extensión de archivo .rs.h."
+"generar un archivo de encabezado de C++ que contenga las declaraciones de C++ "
+"correspondientes. El encabezado generado tiene la misma ruta que el archivo de "
+"origen de Rust que contiene el patrón bridge, excepto con la extensión de "
+"archivo .rs.h."
#: src/android/interoperability/cpp/generated-cpp.md
msgid "Results in (roughly) the following C++:"
msgstr ""
-"Los resultados son (aproximadamente) los que se muestran a continuación en C+"
-"+:"
+"Los resultados son (aproximadamente) los que se muestran a continuación en C++:"
#: src/android/interoperability/cpp/cpp-bridge.md
msgid "C++ Bridge Declarations"
@@ -14490,8 +14237,7 @@ msgstr "Declaraciones Bridge en C++"
#: src/android/interoperability/cpp/cpp-bridge.md
msgid "Results in (roughly) the following Rust:"
msgstr ""
-"Los resultados son (aproximadamente) los que se muestran a continuación en "
-"Rust:"
+"Los resultados son (aproximadamente) los que se muestran a continuación en Rust:"
#: src/android/interoperability/cpp/cpp-bridge.md
msgid "\"org$blobstore$cxxbridge1$new_blobstore_client\""
@@ -14503,8 +14249,8 @@ msgstr "\"org$blobstore$cxxbridge1$BlobstoreClient$put\""
#: src/android/interoperability/cpp/cpp-bridge.md
msgid ""
-"The programmer does not need to promise that the signatures they have typed "
-"in are accurate. CXX performs static assertions that the signatures exactly "
+"The programmer does not need to promise that the signatures they have typed in "
+"are accurate. CXX performs static assertions that the signatures exactly "
"correspond with what is declared in C++."
msgstr ""
"El programador no tiene que asegurar que las firmas que ha introducido son "
@@ -14513,8 +14259,8 @@ msgstr ""
#: src/android/interoperability/cpp/cpp-bridge.md
msgid ""
-"`unsafe extern` blocks allow you to declare C++ functions that are safe to "
-"call from Rust."
+"`unsafe extern` blocks allow you to declare C++ functions that are safe to call "
+"from Rust."
msgstr ""
"Los bloques `unsafe extern` permiten declarar funciones de C++ que se pueden "
"llamar de forma segura desde Rust."
@@ -14535,9 +14281,9 @@ msgid ""
"corresponding C++ type."
msgstr ""
"Un número limitado de traits es compatible con `#[derive()]` en los tipos "
-"compartidos. La función correspondiente también se genera para el código C+"
-"+; por ejemplo, si derivas `Hash`, también genera una implementación de "
-"`std::hash` para el tipo de C++ correspondiente."
+"compartidos. La función correspondiente también se genera para el código C++; "
+"por ejemplo, si derivas `Hash`, también genera una implementación de `std::"
+"hash` para el tipo de C++ correspondiente."
#: src/android/interoperability/cpp/shared-enums.md
msgid "Generated Rust:"
@@ -14550,15 +14296,15 @@ msgstr "C++ generado:"
#: src/android/interoperability/cpp/shared-enums.md
msgid ""
"On the Rust side, the code generated for shared enums is actually a struct "
-"wrapping a numeric value. This is because it is not UB in C++ for an enum "
-"class to hold a value different from all of the listed variants, and our "
-"Rust representation needs to have the same behavior."
+"wrapping a numeric value. This is because it is not UB in C++ for an enum class "
+"to hold a value different from all of the listed variants, and our Rust "
+"representation needs to have the same behavior."
msgstr ""
"En Rust, el código generado para las enums compartidas es en realidad una "
"estructura que envuelve un valor numérico. Esto se debe a que no es un "
-"comportamiento indefinido en C++ para que una clase de enum contenga un "
-"valor distinto de todas las variantes enumeradas y nuestra representación en "
-"Rust debe tener el mismo comportamiento."
+"comportamiento indefinido en C++ para que una clase de enum contenga un valor "
+"distinto de todas las variantes enumeradas y nuestra representación en Rust "
+"debe tener el mismo comportamiento."
#: src/android/interoperability/cpp/rust-result.md
msgid "\"fallible1 requires depth > 0\""
@@ -14573,26 +14319,25 @@ msgid ""
"Rust functions that return `Result` are translated to exceptions on the C++ "
"side."
msgstr ""
-"Las funciones de Rust que devuelven `Result` se convierten en excepciones en "
-"C++."
+"Las funciones de Rust que devuelven `Result` se convierten en excepciones en C+"
+"+."
#: src/android/interoperability/cpp/rust-result.md
msgid ""
"The exception thrown will always be of type `rust::Error`, which primarily "
-"exposes a way to get the error message string. The error message will come "
-"from the error type's `Display` impl."
+"exposes a way to get the error message string. The error message will come from "
+"the error type's `Display` impl."
msgstr ""
"La excepción que se genera siempre será del tipo `rust::Error`, que muestra "
-"principalmente una forma de obtener la cadena del mensaje de error. El "
-"mensaje de error procede de la implementación `Display` del tipo de error."
+"principalmente una forma de obtener la cadena del mensaje de error. El mensaje "
+"de error procede de la implementación `Display` del tipo de error."
#: src/android/interoperability/cpp/rust-result.md
msgid ""
-"A panic unwinding from Rust to C++ will always cause the process to "
-"immediately terminate."
+"A panic unwinding from Rust to C++ will always cause the process to immediately "
+"terminate."
msgstr ""
-"Si un pánico pasa de Rust a C++, el proceso siempre finalizará "
-"inmediatamente."
+"Si un pánico pasa de Rust a C++, el proceso siempre finalizará inmediatamente."
#: src/android/interoperability/cpp/cpp-exception.md
msgid "\"example/include/example.h\""
@@ -14604,24 +14349,24 @@ msgstr "\"Error: {}\""
#: src/android/interoperability/cpp/cpp-exception.md
msgid ""
-"C++ functions declared to return a `Result` will catch any thrown exception "
-"on the C++ side and return it as an `Err` value to the calling Rust function."
+"C++ functions declared to return a `Result` will catch any thrown exception on "
+"the C++ side and return it as an `Err` value to the calling Rust function."
msgstr ""
-"Las funciones de C++ declaradas para devolver un `Result` detectarán "
-"cualquier excepción en C++ y la devolverán como un valor `Err` a la función "
-"de llamada de Rust."
+"Las funciones de C++ declaradas para devolver un `Result` detectarán cualquier "
+"excepción en C++ y la devolverán como un valor `Err` a la función de llamada de "
+"Rust."
#: src/android/interoperability/cpp/cpp-exception.md
msgid ""
-"If an exception is thrown from an extern \"C++\" function that is not "
-"declared by the CXX bridge to return `Result`, the program calls C++'s `std::"
-"terminate`. The behavior is equivalent to the same exception being thrown "
-"through a `noexcept` C++ function."
+"If an exception is thrown from an extern \"C++\" function that is not declared "
+"by the CXX bridge to return `Result`, the program calls C++'s `std::terminate`. "
+"The behavior is equivalent to the same exception being thrown through a "
+"`noexcept` C++ function."
msgstr ""
-"Si se produce una excepción desde una función externa de \"C++\" no "
-"declarada por el bridge de CXX para devolver `Result`, el programa llamará a "
-"`std::terminate` de C++. El comportamiento equivale a la misma excepción que "
-"se genera mediante una función `noexcept`de C++."
+"Si se produce una excepción desde una función externa de \"C++\" no declarada "
+"por el bridge de CXX para devolver `Result`, el programa llamará a `std::"
+"terminate` de C++. El comportamiento equivale a la misma excepción que se "
+"genera mediante una función `noexcept`de C++."
#: src/android/interoperability/cpp/type-mapping.md
#, fuzzy
@@ -14683,30 +14428,28 @@ msgstr "`std::vector`"
#: src/android/interoperability/cpp/type-mapping.md
msgid ""
-"These types can be used in the fields of shared structs and the arguments "
-"and returns of extern functions."
+"These types can be used in the fields of shared structs and the arguments and "
+"returns of extern functions."
msgstr ""
-"Estos tipos se pueden utilizar en los campos de estructura compartidas y en "
-"los argumentos e instrucciones de retorno de las funciones externas."
+"Estos tipos se pueden utilizar en los campos de estructura compartidas y en los "
+"argumentos e instrucciones de retorno de las funciones externas."
#: src/android/interoperability/cpp/type-mapping.md
msgid ""
-"Note that Rust's `String` does not map directly to `std::string`. There are "
-"a few reasons for this:"
+"Note that Rust's `String` does not map directly to `std::string`. There are a "
+"few reasons for this:"
msgstr ""
-"Ten en cuenta que `String` de Rust no se cruza directamente con `std::"
-"string`. Puede haber varios motivos:"
+"Ten en cuenta que `String` de Rust no se cruza directamente con `std::string`. "
+"Puede haber varios motivos:"
#: src/android/interoperability/cpp/type-mapping.md
-msgid ""
-"`std::string` does not uphold the UTF-8 invariant that `String` requires."
-msgstr ""
-"`std::string` no mantiene la invariante de UTF-8 que requiere `String`."
+msgid "`std::string` does not uphold the UTF-8 invariant that `String` requires."
+msgstr "`std::string` no mantiene la invariante de UTF-8 que requiere `String`."
#: src/android/interoperability/cpp/type-mapping.md
msgid ""
-"The two types have different layouts in memory and so can't be passed "
-"directly between languages."
+"The two types have different layouts in memory and so can't be passed directly "
+"between languages."
msgstr ""
"Los dos tipos tienen diseños diferentes en la memoria y, por lo tanto, no se "
"pueden transferir directamente entre lenguajes."
@@ -14761,8 +14504,8 @@ msgstr "\"libcxx_test_bridge_code\""
#: src/android/interoperability/cpp/android-build-cpp.md
msgid ""
"Point out that `libcxx_test_bridge_header` and `libcxx_test_bridge_code` are "
-"the dependencies for the CXX-generated C++ bindings. We'll show how these "
-"are setup on the next slide."
+"the dependencies for the CXX-generated C++ bindings. We'll show how these are "
+"setup on the next slide."
msgstr ""
"Señala que `libcxx_test_bridge_header` y `libcxx_test_bridge_code` son las "
"dependencias de los enlaces de C++ generados por CXX. En la siguiente "
@@ -14770,34 +14513,33 @@ msgstr ""
#: src/android/interoperability/cpp/android-build-cpp.md
msgid ""
-"Note that you also need to depend on the `cxx-bridge-header` library in "
-"order to pull in common CXX definitions."
+"Note that you also need to depend on the `cxx-bridge-header` library in order "
+"to pull in common CXX definitions."
msgstr ""
-"Ten en cuenta que también debes depender de la biblioteca `cxx-bridge-"
-"header` para obtener definiciones de CXX habituales."
+"Ten en cuenta que también debes depender de la biblioteca `cxx-bridge-header` "
+"para obtener definiciones de CXX habituales."
#: src/android/interoperability/cpp/android-build-cpp.md
msgid ""
-"Full docs for using CXX in Android can be found in [the Android docs]"
-"(https://source.android.com/docs/setup/build/rust/building-rust-modules/"
-"android-rust-patterns#rust-cpp-interop-using-cxx). You may want to share "
-"that link with the class so that students know where they can find these "
-"instructions again in the future."
+"Full docs for using CXX in Android can be found in [the Android docs](https://"
+"source.android.com/docs/setup/build/rust/building-rust-modules/android-rust-"
+"patterns#rust-cpp-interop-using-cxx). You may want to share that link with the "
+"class so that students know where they can find these instructions again in the "
+"future."
msgstr ""
-"Los documentos completos sobre el uso de CXX en Android se pueden encontrar "
-"en [los documentos de Android](https://source.android.com/docs/setup/build/"
-"rust/building-rust-modules/android-rust-patterns#rust-cpp-interop-using-"
-"cxx). Puedes compartir ese enlace con la clase para que los participantes "
-"sepan dónde pueden buscar estas instrucciones de ahora en adelante."
+"Los documentos completos sobre el uso de CXX en Android se pueden encontrar en "
+"[los documentos de Android](https://source.android.com/docs/setup/build/rust/"
+"building-rust-modules/android-rust-patterns#rust-cpp-interop-using-cxx). Puedes "
+"compartir ese enlace con la clase para que los participantes sepan dónde pueden "
+"buscar estas instrucciones de ahora en adelante."
#: src/android/interoperability/cpp/android-cpp-genrules.md
msgid ""
"Create two genrules: One to generate the CXX header, and one to generate the "
"CXX source file. These are then used as inputs to the `cc_library_static`."
msgstr ""
-"Crea dos genrule, una para generar el encabezado de CXX y otra para generar "
-"el archivo de origen de CXX. Luego se usarán como entradas a "
-"`cc_library_static`."
+"Crea dos genrule, una para generar el encabezado de CXX y otra para generar el "
+"archivo de origen de CXX. Luego se usarán como entradas a `cc_library_static`."
#: src/android/interoperability/cpp/android-cpp-genrules.md
msgid ""
@@ -14841,8 +14583,8 @@ msgid ""
"The `cxxbridge` tool is a standalone tool that generates the C++ side of the "
"bridge module. It is included in Android and available as a Soong tool."
msgstr ""
-"La herramienta `cxxbridge` es una herramienta independiente que genera el "
-"lado C++ del módulo de bridge. Se incluye en Android y está disponible como "
+"La herramienta `cxxbridge` es una herramienta independiente que genera el lado "
+"C++ del módulo de bridge. Se incluye en Android y está disponible como "
"herramienta de Soong."
#: src/android/interoperability/cpp/android-cpp-genrules.md
@@ -14879,9 +14621,9 @@ msgid ""
"wikipedia.org/wiki/Java_Native_Interface). The [`jni` crate](https://docs.rs/"
"jni/) allows you to create a compatible library."
msgstr ""
-"Java puede cargar objetos compartidos a través de la [interfaz nativa de "
-"Java (JNI)](https://es.wikipedia.org/wiki/Java_Native_Interface). [El crate "
-"`jni`](https://docs.rs/jni/) permite crear una biblioteca compatible."
+"Java puede cargar objetos compartidos a través de la [interfaz nativa de Java "
+"(JNI)](https://es.wikipedia.org/wiki/Java_Native_Interface). [El crate `jni`]"
+"(https://docs.rs/jni/) permite crear una biblioteca compatible."
#: src/android/interoperability/java.md
msgid "First, we create a Rust function to export to Java:"
@@ -14950,11 +14692,11 @@ msgstr "Ahora puedes compilar, sincronizar y ejecutar el binario:"
#: src/exercises/android/morning.md
msgid ""
-"This is a group exercise: We will look at one of the projects you work with "
-"and try to integrate some Rust into it. Some suggestions:"
+"This is a group exercise: We will look at one of the projects you work with and "
+"try to integrate some Rust into it. Some suggestions:"
msgstr ""
-"Este es un ejercicio de grupo: escogeremos uno de los proyectos con los que "
-"se esté trabajando e intentaremos integrar Rust en él. Algunas sugerencias:"
+"Este es un ejercicio de grupo: escogeremos uno de los proyectos con los que se "
+"esté trabajando e intentaremos integrar Rust en él. Algunas sugerencias:"
#: src/exercises/android/morning.md
msgid "Call your AIDL service with a client written in Rust."
@@ -14966,8 +14708,8 @@ msgstr "Mueve una función desde tu proyecto a Rust y llámala."
#: src/exercises/android/morning.md
msgid ""
-"No solution is provided here since this is open-ended: it relies on someone "
-"in the class having a piece of code which you can turn in to Rust on the fly."
+"No solution is provided here since this is open-ended: it relies on someone in "
+"the class having a piece of code which you can turn in to Rust on the fly."
msgstr ""
"Aquí la solución es abierta, ya que depende de que alguno de los asistentes "
"tenga un fragmento de código que se pueda convertir en Rust sobre la marcha."
@@ -14978,53 +14720,52 @@ msgstr "Te Damos la Bienvenida a Rust en Chromium"
#: src/chromium.md
msgid ""
-"Rust is supported for third-party libraries in Chromium, with first-party "
-"glue code to connect between Rust and existing Chromium C++ code."
+"Rust is supported for third-party libraries in Chromium, with first-party glue "
+"code to connect between Rust and existing Chromium C++ code."
msgstr ""
"Rust es compatible con bibliotecas de terceros en Chromium, con código "
-"pegamento propio para conectar Rust y el código de C++ de Chromium ya "
-"existente."
+"pegamento propio para conectar Rust y el código de C++ de Chromium ya existente."
#: src/chromium.md
msgid ""
-"Today, we'll call into Rust to do something silly with strings. If you've "
-"got a corner of the code where you're displaying a UTF8 string to the user, "
-"feel free to follow this recipe in your part of the codebase instead of the "
-"exact part we talk about."
+"Today, we'll call into Rust to do something silly with strings. If you've got a "
+"corner of the code where you're displaying a UTF8 string to the user, feel free "
+"to follow this recipe in your part of the codebase instead of the exact part we "
+"talk about."
msgstr ""
"Hoy vamos a llamar a Rust para que haga algo divertido con las cadenas. Si "
-"tienes una esquina del código donde se muestra una cadena UTF8 al usuario, "
-"no dudes en seguir estas instrucciones en tu parte del código base en lugar "
-"de la parte exacta de la que hablamos."
+"tienes una esquina del código donde se muestra una cadena UTF8 al usuario, no "
+"dudes en seguir estas instrucciones en tu parte del código base en lugar de la "
+"parte exacta de la que hablamos."
#: src/chromium/setup.md
msgid ""
-"Make sure you can build and run Chromium. Any platform and set of build "
-"flags is OK, so long as your code is relatively recent (commit position "
-"1223636 onwards, corresponding to November 2023):"
+"Make sure you can build and run Chromium. Any platform and set of build flags "
+"is OK, so long as your code is relatively recent (commit position 1223636 "
+"onwards, corresponding to November 2023):"
msgstr ""
"Asegúrate de que puedes compilar y ejecutar Chromium. Cualquier plataforma y "
"conjunto de marcas de compilación es apto, siempre que tu código sea "
-"relativamente reciente (posición de commit 1223636 en adelante, "
-"correspondiente a noviembre del 2023):"
+"relativamente reciente (posición de commit 1223636 en adelante, correspondiente "
+"a noviembre del 2023):"
#: src/chromium/setup.md
msgid ""
-"(A component, debug build is recommended for quickest iteration time. This "
-"is the default!)"
+"(A component, debug build is recommended for quickest iteration time. This is "
+"the default!)"
msgstr ""
-"(Se recomienda una versión de depuración de componentes para que el tiempo "
-"de iteración sea más rápido. Esta es la opción predeterminada)."
+"(Se recomienda una versión de depuración de componentes para que el tiempo de "
+"iteración sea más rápido. Esta es la opción predeterminada)."
#: src/chromium/setup.md
msgid ""
-"See [How to build Chromium](https://www.chromium.org/developers/how-tos/get-"
-"the-code/) if you aren't already at that point. Be warned: setting up to "
-"build Chromium takes time."
+"See [How to build Chromium](https://www.chromium.org/developers/how-tos/get-the-"
+"code/) if you aren't already at that point. Be warned: setting up to build "
+"Chromium takes time."
msgstr ""
-"Consulta [cómo compilar Chromium](https://www.chromium.org/developers/how-"
-"tos/get-the-code/) si aún no lo has hecho. Advertencia: el proceso de "
-"configuración para compilar Chromium puede tardar."
+"Consulta [cómo compilar Chromium](https://www.chromium.org/developers/how-tos/"
+"get-the-code/) si aún no lo has hecho. Advertencia: el proceso de configuración "
+"para compilar Chromium puede tardar."
#: src/chromium/setup.md
msgid "It's also recommended that you have Visual Studio code installed."
@@ -15037,13 +14778,13 @@ msgstr "Información sobre los ejercicios"
#: src/chromium/setup.md
msgid ""
"This part of the course has a series of exercises which build on each other. "
-"We'll be doing them spread throughout the course instead of just at the end. "
-"If you don't have time to complete a certain part, don't worry: you can "
-"catch up in the next slot."
+"We'll be doing them spread throughout the course instead of just at the end. If "
+"you don't have time to complete a certain part, don't worry: you can catch up "
+"in the next slot."
msgstr ""
"Esta parte del curso consta de una serie de ejercicios que se complementan "
-"entre sí. Las iremos repartiendo a lo largo del curso en lugar de hacerlos "
-"todo al final. Si no tienes tiempo para completar una parte concreta, no te "
+"entre sí. Las iremos repartiendo a lo largo del curso en lugar de hacerlos todo "
+"al final. Si no tienes tiempo para completar una parte concreta, no te "
"preocupes, podrás ponerte al día en la siguiente clase."
#: src/chromium/cargo.md
@@ -15054,8 +14795,8 @@ msgid ""
"set of dependencies."
msgstr ""
"La comunidad de Rust suele usar `cargo` y bibliotecas de [crates.io](https://"
-"crates.io/). Chromium se compila usando `gn` y `ninja`, además de un "
-"conjunto seleccionado de dependencias."
+"crates.io/). Chromium se compila usando `gn` y `ninja`, además de un conjunto "
+"seleccionado de dependencias."
#: src/chromium/cargo.md
msgid "When writing code in Rust, your choices are:"
@@ -15063,23 +14804,23 @@ msgstr "A la hora de escribir código en Rust, hay disponibles varias opciones:"
#: src/chromium/cargo.md
msgid ""
-"Use `gn` and `ninja` with the help of the templates from `//build/rust/*."
-"gni` (e.g. `rust_static_library` that we'll meet later). This uses "
-"Chromium's audited toolchain and crates."
+"Use `gn` and `ninja` with the help of the templates from `//build/rust/*.gni` "
+"(e.g. `rust_static_library` that we'll meet later). This uses Chromium's "
+"audited toolchain and crates."
msgstr ""
-"Usar `gn` y `ninja` con la ayuda de las plantillas de `//build/rust/*.gni` "
-"(por ejemplo, `rust_static_library`, que veremos más adelante). Se usan la "
-"cadena de herramientas y los crates auditados de Chromium."
+"Usar `gn` y `ninja` con la ayuda de las plantillas de `//build/rust/*.gni` (por "
+"ejemplo, `rust_static_library`, que veremos más adelante). Se usan la cadena de "
+"herramientas y los crates auditados de Chromium."
#: src/chromium/cargo.md
msgid ""
-"Use `cargo`, but [restrict yourself to Chromium's audited toolchain and "
-"crates](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/"
-"docs/rust.md#Using-cargo)"
+"Use `cargo`, but [restrict yourself to Chromium's audited toolchain and crates]"
+"(https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust."
+"md#Using-cargo)"
msgstr ""
"Usar `cargo`, pero [restringiendo el uso de la cadena de herramientas y los "
-"crates auditados de Chromium](https://chromium.googlesource.com/chromium/src/"
-"+/refs/heads/main/docs/rust.md#Using-cargo)."
+"crates auditados de Chromium](https://chromium.googlesource.com/chromium/src/+/"
+"refs/heads/main/docs/rust.md#Using-cargo)."
#: src/chromium/cargo.md
msgid ""
@@ -15097,8 +14838,8 @@ msgid ""
msgstr ""
"A partir de ahora, nos centraremos en `gn` y `ninja`, ya que así es como se "
"puede compilar el código de Rust en el navegador Chromium. De igual forma, "
-"Cargo es una parte importante del ecosistema de Rust y deberías conservarlo "
-"en tu caja de herramientas."
+"Cargo es una parte importante del ecosistema de Rust y deberías conservarlo en "
+"tu caja de herramientas."
#: src/chromium/cargo.md
msgid "Mini exercise"
@@ -15110,8 +14851,8 @@ msgstr "Formad grupos pequeños para:"
#: src/chromium/cargo.md
msgid ""
-"Brainstorm scenarios where `cargo` may offer an advantage and assess the "
-"risk profile of these scenarios."
+"Brainstorm scenarios where `cargo` may offer an advantage and assess the risk "
+"profile of these scenarios."
msgstr ""
"Hacer una lluvia de ideas sobre situaciones en las que `cargo` pueda ofrecer "
"ventajas y evaluar el perfil de riesgo."
@@ -15121,50 +14862,49 @@ msgid ""
"Discuss which tools, libraries, and groups of people need to be trusted when "
"using `gn` and `ninja`, offline `cargo`, etc."
msgstr ""
-"Debatir en qué herramientas, bibliotecas y grupos de personas hay que "
-"confiar al usar `gn` y `ninja`, `cargo` offline, etc."
+"Debatir en qué herramientas, bibliotecas y grupos de personas hay que confiar "
+"al usar `gn` y `ninja`, `cargo` offline, etc."
#: src/chromium/cargo.md
msgid ""
"Ask students to avoid peeking at the speaker notes before completing the "
-"exercise. Assuming folks taking the course are physically together, ask them "
-"to discuss in small groups of 3-4 people."
+"exercise. Assuming folks taking the course are physically together, ask them to "
+"discuss in small groups of 3-4 people."
msgstr ""
"Pide a los participantes que eviten mirar las notas del orador antes de "
"completar el ejercicio. Suponiendo que todas las personas que hacen el curso "
-"están en la misma sala, pídeles que hablen en grupos pequeños de 3 a 4 "
-"personas."
+"están en la misma sala, pídeles que hablen en grupos pequeños de 3 a 4 personas."
#: src/chromium/cargo.md
msgid ""
-"Notes/hints related to the first part of the exercise (\"scenarios where "
-"Cargo may offer an advantage\"):"
+"Notes/hints related to the first part of the exercise (\"scenarios where Cargo "
+"may offer an advantage\"):"
msgstr ""
"Notas y sugerencias relacionadas con la primera parte del ejercicio "
"(\"situaciones en las que Cargo puede ofrecer ventajas\"):"
#: src/chromium/cargo.md
msgid ""
-"It's fantastic that when writing a tool, or prototyping a part of Chromium, "
-"one has access to the rich ecosystem of crates.io libraries. There is a "
-"crate for almost anything and they are usually quite pleasant to use. "
-"(`clap` for command-line parsing, `serde` for serializing/deserializing to/"
-"from various formats, `itertools` for working with iterators, etc.)."
+"It's fantastic that when writing a tool, or prototyping a part of Chromium, one "
+"has access to the rich ecosystem of crates.io libraries. There is a crate for "
+"almost anything and they are usually quite pleasant to use. (`clap` for command-"
+"line parsing, `serde` for serializing/deserializing to/from various formats, "
+"`itertools` for working with iterators, etc.)."
msgstr ""
"Es genial que al escribir una herramienta o crear prototipos de una parte de "
-"Chromium se pueda acceder al extenso ecosistema de bibliotecas crates.io. "
-"Hay un crate para casi cualquier cosa y suelen ser muy fáciles de usar "
-"(`clap` para el análisis de la línea de comandos, `serde` para la "
-"serialización y deserialización a/desde varios formatos, `itertools` para "
-"trabajar con iteradores, etc.)."
+"Chromium se pueda acceder al extenso ecosistema de bibliotecas crates.io. Hay "
+"un crate para casi cualquier cosa y suelen ser muy fáciles de usar (`clap` para "
+"el análisis de la línea de comandos, `serde` para la serialización y "
+"deserialización a/desde varios formatos, `itertools` para trabajar con "
+"iteradores, etc.)."
#: src/chromium/cargo.md
msgid ""
-"`cargo` makes it easy to try a library (just add a single line to `Cargo."
-"toml` and start writing code)"
+"`cargo` makes it easy to try a library (just add a single line to `Cargo.toml` "
+"and start writing code)"
msgstr ""
-"`cargo` permite probar una biblioteca fácilmente (solo hay que añadir una "
-"línea a `Cargo.toml` y empezar a escribir el código)."
+"`cargo` permite probar una biblioteca fácilmente (solo hay que añadir una línea "
+"a `Cargo.toml` y empezar a escribir el código)."
#: src/chromium/cargo.md
msgid ""
@@ -15178,18 +14918,18 @@ msgstr ""
msgid ""
"Development experience is made really nice not only by core Rust tools (e.g. "
"using `rustup` to switch to a different `rustc` version when testing a crate "
-"that needs to work on nightly, current stable, and older stable) but also by "
-"an ecosystem of third-party tools (e.g. Mozilla provides `cargo vet` for "
-"streamlining and sharing security audits; `criterion` crate gives a "
-"streamlined way to run benchmarks)."
+"that needs to work on nightly, current stable, and older stable) but also by an "
+"ecosystem of third-party tools (e.g. Mozilla provides `cargo vet` for "
+"streamlining and sharing security audits; `criterion` crate gives a streamlined "
+"way to run benchmarks)."
msgstr ""
"La experiencia de desarrollo no solo es agradable gracias a las herramientas "
-"principales de Rust (por ejemplo, al usar `rustup` para cambiar a una "
-"versión diferente de `rustc` cuando se prueba un crate que necesita "
-"funcionar en nightly, stable actual y antiguas versiones de stable), sino "
-"también a un ecosistema de herramientas de terceros (por ejemplo, Mozilla "
-"proporciona `cargo vet` para optimizar y compartir auditorías de seguridad; "
-"el crate `criterion` ofrece un método optimizado para ejecutar comparativas)."
+"principales de Rust (por ejemplo, al usar `rustup` para cambiar a una versión "
+"diferente de `rustc` cuando se prueba un crate que necesita funcionar en "
+"nightly, stable actual y antiguas versiones de stable), sino también a un "
+"ecosistema de herramientas de terceros (por ejemplo, Mozilla proporciona `cargo "
+"vet` para optimizar y compartir auditorías de seguridad; el crate `criterion` "
+"ofrece un método optimizado para ejecutar comparativas)."
#: src/chromium/cargo.md
msgid ""
@@ -15204,37 +14944,35 @@ msgstr ""
"Merece la pena compararlo con las extensiones de Chrome o con las de VScode."
#: src/chromium/cargo.md
-msgid ""
-"Broad, generic examples of projects where `cargo` may be the right choice:"
+msgid "Broad, generic examples of projects where `cargo` may be the right choice:"
msgstr ""
"Ejemplos generales y genéricos de proyectos en los que `cargo` puede ser la "
"opción más adecuada:"
#: src/chromium/cargo.md
msgid ""
-"Perhaps surprisingly, Rust is becoming increasingly popular in the industry "
-"for writing command line tools. The breadth and ergonomics of libraries is "
-"comparable to Python, while being more robust (thanks to the rich "
-"typesystem) and running faster (as a compiled, rather than interpreted "
-"language)."
+"Perhaps surprisingly, Rust is becoming increasingly popular in the industry for "
+"writing command line tools. The breadth and ergonomics of libraries is "
+"comparable to Python, while being more robust (thanks to the rich typesystem) "
+"and running faster (as a compiled, rather than interpreted language)."
msgstr ""
-"Sorprendentemente, Rust se está volviendo cada vez más popular en el sector "
-"por su función de escritura de herramientas de línea de comandos. La "
-"amplitud y la ergonomía de las bibliotecas son similares a las de Python, "
-"pero son más sólidas (gracias al sistema de tipos enriquecido) y funcionan "
-"más rápido (como lenguaje compilado en lugar de interpretado)."
+"Sorprendentemente, Rust se está volviendo cada vez más popular en el sector por "
+"su función de escritura de herramientas de línea de comandos. La amplitud y la "
+"ergonomía de las bibliotecas son similares a las de Python, pero son más "
+"sólidas (gracias al sistema de tipos enriquecido) y funcionan más rápido (como "
+"lenguaje compilado en lugar de interpretado)."
#: src/chromium/cargo.md
msgid ""
"Participating in the Rust ecosystem requires using standard Rust tools like "
-"Cargo. Libraries that want to get external contributions, and want to be "
-"used outside of Chromium (e.g. in Bazel or Android/Soong build environments) "
-"should probably use Cargo."
+"Cargo. Libraries that want to get external contributions, and want to be used "
+"outside of Chromium (e.g. in Bazel or Android/Soong build environments) should "
+"probably use Cargo."
msgstr ""
"Para participar en el ecosistema de Rust, es necesario usar herramientas "
"estándar de Rust, como Cargo. Las bibliotecas que quieran recibir "
-"contribuciones externas y actuar fuera de Chromium (por ejemplo, en entornos "
-"de desarrollo de Bazel o Android/Soong) deberían utilizar Cargo."
+"contribuciones externas y actuar fuera de Chromium (por ejemplo, en entornos de "
+"desarrollo de Bazel o Android/Soong) deberían utilizar Cargo."
#: src/chromium/cargo.md
msgid "Examples of Chromium-related projects that are `cargo`\\-based:"
@@ -15243,11 +14981,11 @@ msgstr ""
#: src/chromium/cargo.md
msgid ""
-"`serde_json_lenient` (experimented with in other parts of Google which "
-"resulted in PRs with performance improvements)"
+"`serde_json_lenient` (experimented with in other parts of Google which resulted "
+"in PRs with performance improvements)"
msgstr ""
-"`serde_json_lenient` (experimentado en otras partes de Google que ha dado "
-"lugar a PRs con mejoras de rendimiento)."
+"`serde_json_lenient` (experimentado en otras partes de Google que ha dado lugar "
+"a PRs con mejoras de rendimiento)."
#: src/chromium/cargo.md
msgid "Fontations libraries like `font-types`"
@@ -15255,19 +14993,18 @@ msgstr "Bibliotecas de fuentes, como `font-types`."
#: src/chromium/cargo.md
msgid ""
-"`gnrt` tool (we will meet it later in the course) which depends on `clap` "
-"for command-line parsing and on `toml` for configuration files."
+"`gnrt` tool (we will meet it later in the course) which depends on `clap` for "
+"command-line parsing and on `toml` for configuration files."
msgstr ""
"La herramienta `gnrt` (la veremos más adelante en el curso), que depende de "
-"`clap` para el análisis de la línea de comandos y de `toml` para los "
-"archivos de configuración."
+"`clap` para el análisis de la línea de comandos y de `toml` para los archivos "
+"de configuración."
#: src/chromium/cargo.md
#, fuzzy
msgid ""
-"Disclaimer: a unique reason for using `cargo` was unavailability of `gn` "
-"when building and bootstrapping Rust standard library when building Rust "
-"toolchain."
+"Disclaimer: a unique reason for using `cargo` was unavailability of `gn` when "
+"building and bootstrapping Rust standard library when building Rust toolchain."
msgstr ""
"Aclaración: una razón principal para usar `cargo` es que `gn` no está "
"disponible al compilar e iniciar la biblioteca estándar de Rust cuando se "
@@ -15280,8 +15017,8 @@ msgid ""
"third-party libraries downloaded from the internet, but `run_gnrt.py` asks "
"`cargo` that only `--locked` content is allowed via `Cargo.lock`.)"
msgstr ""
-"`run_gnrt.py` usa la copia de Chromium de `cargo` y `rustc`. `gnrt` depende "
-"de las bibliotecas de terceros descargadas de Internet. `run_gnrt.py` pide a "
+"`run_gnrt.py` usa la copia de Chromium de `cargo` y `rustc`. `gnrt` depende de "
+"las bibliotecas de terceros descargadas de Internet. `run_gnrt.py` pide a "
"`cargo` que solo se permita el contenido `--locked` a través de `Cargo.lock`."
#: src/chromium/cargo.md
@@ -15289,8 +15026,8 @@ msgid ""
"Students may identify the following items as being implicitly or explicitly "
"trusted:"
msgstr ""
-"Los participantes pueden tratar de identificar si los siguientes elementos "
-"son de confianza implícita o explícita:"
+"Los participantes pueden tratar de identificar si los siguientes elementos son "
+"de confianza implícita o explícita:"
#: src/chromium/cargo.md
msgid ""
@@ -15298,10 +15035,10 @@ msgid ""
"Clang compiler, the `rustc` sources (fetched from GitHub, reviewed by Rust "
"compiler team), binary Rust compiler downloaded for bootstrapping"
msgstr ""
-"`rustc` (el compilador de Rust), que a su vez depende de las bibliotecas "
-"LLVM, el compilador Clang, las fuentes `rustc` (obtenidas de GitHub y "
-"revisadas por el equipo de compilación de Rust), y el compilador binario de "
-"Rust descargado para el bootstrapping."
+"`rustc` (el compilador de Rust), que a su vez depende de las bibliotecas LLVM, "
+"el compilador Clang, las fuentes `rustc` (obtenidas de GitHub y revisadas por "
+"el equipo de compilación de Rust), y el compilador binario de Rust descargado "
+"para el bootstrapping."
#: src/chromium/cargo.md
msgid ""
@@ -15330,8 +15067,8 @@ msgstr "Herramientas de Cargo, como `cargo audit`, `cargo vet`, etc."
#: src/chromium/cargo.md
msgid ""
-"Rust libraries vendored into `//third_party/rust` (audited by "
-"security@chromium.org)"
+"Rust libraries vendored into `//third_party/rust` (audited by security@chromium."
+"org)"
msgstr ""
"Bibliotecas de Rust incluidas en `//third_party/rust` (auditoría de "
"security@chromium.org)."
@@ -15339,8 +15076,8 @@ msgstr ""
#: src/chromium/cargo.md
msgid "Other Rust libraries (some niche, some quite popular and commonly used)"
msgstr ""
-"Otras bibliotecas de Rust (algunas de nicho, otras bastante populares y de "
-"uso común)."
+"Otras bibliotecas de Rust (algunas de nicho, otras bastante populares y de uso "
+"común)."
#: src/chromium/policy.md
msgid "Chromium Rust policy"
@@ -15348,36 +15085,34 @@ msgstr "Política de Chromium Rust"
#: src/chromium/policy.md
msgid ""
-"Chromium does not yet allow first-party Rust except in rare cases as "
-"approved by Chromium's [Area Tech Leads](https://source.chromium.org/"
-"chromium/chromium/src/+/main:ATL_OWNERS)."
+"Chromium does not yet allow first-party Rust except in rare cases as approved "
+"by Chromium's [Area Tech Leads](https://source.chromium.org/chromium/chromium/"
+"src/+/main:ATL_OWNERS)."
msgstr ""
-"Chromium aún no permite usar Rust propio, excepto en casos excepcionales, "
-"según lo aprobado por [Area Tech Leads](https://source.chromium.org/chromium/"
-"chromium/src/+/main:ATL_OWNERS)."
+"Chromium aún no permite usar Rust propio, excepto en casos excepcionales, según "
+"lo aprobado por [Area Tech Leads](https://source.chromium.org/chromium/chromium/"
+"src/+/main:ATL_OWNERS)."
#: src/chromium/policy.md
msgid ""
-"Chromium's policy on third party libraries is outlined [here](https://"
-"chromium.googlesource.com/chromium/src/+/main/docs/adding_to_third_party."
-"md#rust) - Rust is allowed for third party libraries under various "
-"circumstances, including if they're the best option for performance or for "
-"security."
+"Chromium's policy on third party libraries is outlined [here](https://chromium."
+"googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#rust) - Rust "
+"is allowed for third party libraries under various circumstances, including if "
+"they're the best option for performance or for security."
msgstr ""
"La política de Chromium sobre bibliotecas de terceros se describe [aquí]"
"(https://chromium.googlesource.com/chromium/src/+/main/docs/"
-"adding_to_third_party.md#rust). Se permite el uso de Rust para bibliotecas "
-"de terceros en algunos casos, incluido si son la mejor opción en cuanto al "
+"adding_to_third_party.md#rust). Se permite el uso de Rust para bibliotecas de "
+"terceros en algunos casos, incluido si son la mejor opción en cuanto al "
"rendimiento o seguridad."
#: src/chromium/policy.md
msgid ""
-"Very few Rust libraries directly expose a C/C++ API, so that means that "
-"nearly all such libraries will require a small amount of first-party glue "
-"code."
+"Very few Rust libraries directly expose a C/C++ API, so that means that nearly "
+"all such libraries will require a small amount of first-party glue code."
msgstr ""
-"Muy pocas bibliotecas de Rust exponen directamente una API de C o C++, por "
-"lo que casi todas estas bibliotecas necesitarán una pequeña parte de código "
+"Muy pocas bibliotecas de Rust exponen directamente una API de C o C++, por lo "
+"que casi todas estas bibliotecas necesitarán una pequeña parte de código "
"pegamento propio."
#: src/chromium/policy.md
@@ -15432,8 +15167,8 @@ msgstr ""
#: src/chromium/policy.md
msgid ""
-"First-party Rust glue code for a particular third-party crate should "
-"normally be kept in `third_party/rust///wrapper`."
+"First-party Rust glue code for a particular third-party crate should normally "
+"be kept in `third_party/rust///wrapper`."
msgstr ""
"El código pegamento propio de Rust para un crate de terceros concreto "
"normalmente debe guardarse en `third_party/rust///wrapper`."
@@ -15448,8 +15183,7 @@ msgstr "Incorporación de bibliotecas Rust de terceros (\"crates\")."
#: src/chromium/policy.md
msgid "Writing glue code to be able to use those crates from Chromium C++."
-msgstr ""
-"Escribir código pegamento para poder usar esos crates desde Chromium C++."
+msgstr "Escribir código pegamento para poder usar esos crates desde Chromium C++."
#: src/chromium/policy.md
msgid "If this policy changes over time, the course will evolve to keep up."
@@ -15463,13 +15197,13 @@ msgstr "Reglas de Compilación (_Build_)"
#: src/chromium/build-rules.md
msgid ""
-"Rust code is usually built using `cargo`. Chromium builds with `gn` and "
-"`ninja` for efficiency --- its static rules allow maximum parallelism. Rust "
-"is no exception."
+"Rust code is usually built using `cargo`. Chromium builds with `gn` and `ninja` "
+"for efficiency --- its static rules allow maximum parallelism. Rust is no "
+"exception."
msgstr ""
-"El código de Rust se suele compilar con `cargo`. Chromium se compila con "
-"`gn` y `ninja` para aumentar la eficiencia. Sus reglas estáticas permiten el "
-"máximo paralelismo. Rust no es una excepción."
+"El código de Rust se suele compilar con `cargo`. Chromium se compila con `gn` y "
+"`ninja` para aumentar la eficiencia. Sus reglas estáticas permiten el máximo "
+"paralelismo. Rust no es una excepción."
#: src/chromium/build-rules.md
msgid "Adding Rust code to Chromium"
@@ -15479,8 +15213,7 @@ msgstr "Añadir código de Rust a Chromium"
msgid ""
"In some existing Chromium `BUILD.gn` file, declare a `rust_static_library`:"
msgstr ""
-"En algunos archivos `BUILD.gn` de Chromium, declara una "
-"`rust_static_library`:"
+"En algunos archivos `BUILD.gn` de Chromium, declara una `rust_static_library`:"
#: src/chromium/build-rules.md
msgid ""
@@ -15504,8 +15237,8 @@ msgstr ""
#: src/chromium/build-rules.md
msgid ""
-"You can also add `deps` on other Rust targets. Later we'll use this to "
-"depend upon third party code."
+"You can also add `deps` on other Rust targets. Later we'll use this to depend "
+"upon third party code."
msgstr ""
"También puedes añadir `deps` en otros segmentos de Rust. Más adelante, lo "
"usaremos en función del código de terceros."
@@ -15513,39 +15246,39 @@ msgstr ""
#: src/chromium/build-rules.md
msgid ""
"You must specify _both_ the crate root, _and_ a full list of sources. The "
-"`crate_root` is the file given to the Rust compiler representing the root "
-"file of the compilation unit --- typically `lib.rs`. `sources` is a complete "
-"list of all source files which `ninja` needs in order to determine when "
-"rebuilds are necessary."
+"`crate_root` is the file given to the Rust compiler representing the root file "
+"of the compilation unit --- typically `lib.rs`. `sources` is a complete list of "
+"all source files which `ninja` needs in order to determine when rebuilds are "
+"necessary."
msgstr ""
"Debes especificar _tanto_ la raíz del crate _como_ una lista completa de "
"recursos. `crate_root` es el archivo proporcionado al compilador de Rust que "
-"representa el archivo raíz de la unidad de compilación, que suele ser `lib."
-"rs`. `sources` es una lista completa de todos los archivos de origen que "
-"necesita `ninja` para determinar cuándo es necesario compilar de nuevo."
+"representa el archivo raíz de la unidad de compilación, que suele ser `lib.rs`. "
+"`sources` es una lista completa de todos los archivos de origen que necesita "
+"`ninja` para determinar cuándo es necesario compilar de nuevo."
#: src/chromium/build-rules.md
msgid ""
-"(There's no such thing as a Rust `source_set`, because in Rust, an entire "
-"crate is a compilation unit. A `static_library` is the smallest unit.)"
+"(There's no such thing as a Rust `source_set`, because in Rust, an entire crate "
+"is a compilation unit. A `static_library` is the smallest unit.)"
msgstr ""
"(No existe `source_set` en Rust porque un crate completo ya es una unidad de "
"compilación. Una `static_library` es la unidad más pequeña)."
#: src/chromium/build-rules.md
msgid ""
-"Students might be wondering why we need a gn template, rather than using "
-"[gn's built-in support for Rust static libraries](https://gn.googlesource."
-"com/gn/+/main/docs/reference.md#func_static_library). The answer is that "
-"this template provides support for CXX interop, Rust features, and unit "
-"tests, some of which we'll use later."
+"Students might be wondering why we need a gn template, rather than using [gn's "
+"built-in support for Rust static libraries](https://gn.googlesource.com/gn/+/"
+"main/docs/reference.md#func_static_library). The answer is that this template "
+"provides support for CXX interop, Rust features, and unit tests, some of which "
+"we'll use later."
msgstr ""
-"Puede que los participantes se pregunten por qué necesitamos una plantilla "
-"gn en vez de usar [la compatibilidad integrada de gn para las bibliotecas "
+"Puede que los participantes se pregunten por qué necesitamos una plantilla gn "
+"en vez de usar [la compatibilidad integrada de gn para las bibliotecas "
"estáticas de Rust](https://gn.googlesource.com/gn/+/main/docs/reference."
-"md#func_static_library). La respuesta es que esta plantilla es compatible "
-"con la interoperabilidad de CXX, las funciones de Rust y las pruebas "
-"unitarias, algunas de las cuales usaremos más adelante."
+"md#func_static_library). La respuesta es que esta plantilla es compatible con "
+"la interoperabilidad de CXX, las funciones de Rust y las pruebas unitarias, "
+"algunas de las cuales usaremos más adelante."
#: src/chromium/build-rules/unsafe.md
msgid "Including `unsafe` Rust Code"
@@ -15553,10 +15286,9 @@ msgstr "Incluir código de Rust `unsafe`"
#: src/chromium/build-rules/unsafe.md
msgid ""
-"Unsafe Rust code is forbidden in `rust_static_library` by default --- it "
-"won't compile. If you need unsafe Rust code, add `allow_unsafe = true` to "
-"the gn target. (Later in the course we'll see circumstances where this is "
-"necessary.)"
+"Unsafe Rust code is forbidden in `rust_static_library` by default --- it won't "
+"compile. If you need unsafe Rust code, add `allow_unsafe = true` to the gn "
+"target. (Later in the course we'll see circumstances where this is necessary.)"
msgstr ""
"El código de Rust inseguro está prohibido en `rust_static_library` de forma "
"predeterminada, por lo que no se podrá compilar. Si necesitas código de Rust "
@@ -15594,8 +15326,8 @@ msgstr ""
#: src/chromium/build-rules/depending.md
msgid "Simply add the above target to the `deps` of some Chromium C++ target."
msgstr ""
-"Solo tienes que añadir el elemento de destino que aparece arriba a los "
-"`deps` de algún elemento de destino de Chromium C++."
+"Solo tienes que añadir el elemento de destino que aparece arriba a los `deps` "
+"de algún elemento de destino de Chromium C++."
#: src/chromium/build-rules/depending.md
msgid ""
@@ -15629,17 +15361,17 @@ msgstr ""
#: src/chromium/build-rules/vscode.md
msgid ""
-"Types are elided in Rust code, which makes a good IDE even more useful than "
-"for C++. Visual Studio code works well for Rust in Chromium. To use it,"
+"Types are elided in Rust code, which makes a good IDE even more useful than for "
+"C++. Visual Studio code works well for Rust in Chromium. To use it,"
msgstr ""
-"Los tipos se omiten en el código de Rust, lo que hace que un buen IDE sea "
-"aún más útil para C++. El código de Visual Studio funciona bien con Rust en "
+"Los tipos se omiten en el código de Rust, lo que hace que un buen IDE sea aún "
+"más útil para C++. El código de Visual Studio funciona bien con Rust en "
"Chromium. Para utilizarlo, haz lo siguiente:"
#: src/chromium/build-rules/vscode.md
msgid ""
-"Ensure your VSCode has the `rust-analyzer` extension, not earlier forms of "
-"Rust support"
+"Ensure your VSCode has the `rust-analyzer` extension, not earlier forms of Rust "
+"support"
msgstr ""
"Asegúrate de que VSCode tenga la extensión `rust-analyzer`, no versiones "
"anteriores de compatibilidad con Rust."
@@ -15649,8 +15381,8 @@ msgid ""
"`gn gen out/Debug --export-rust-project` (or equivalent for your output "
"directory)"
msgstr ""
-"`gn gen out/Debug --export-rust-project` (o el equivalente en tu directorio "
-"de salida)."
+"`gn gen out/Debug --export-rust-project` (o el equivalente en tu directorio de "
+"salida)."
#: src/chromium/build-rules/vscode.md
msgid "`ln -s out/Debug/rust-project.json rust-project.json`"
@@ -15658,20 +15390,20 @@ msgstr "`ln -s out/Debug/rust-project.json rust-project.json`."
#: src/chromium/build-rules/vscode.md
msgid ""
-"A demo of some of the code annotation and exploration features of rust-"
-"analyzer might be beneficial if the audience are naturally skeptical of IDEs."
+"A demo of some of the code annotation and exploration features of rust-analyzer "
+"might be beneficial if the audience are naturally skeptical of IDEs."
msgstr ""
"Una demo de algunas de las funciones de anotación de código y exploración de "
-"rust-analyzer puede ser útil si los asistentes se muestran escépticos por "
-"los IDE."
+"rust-analyzer puede ser útil si los asistentes se muestran escépticos por los "
+"IDE."
#: src/chromium/build-rules/vscode.md
msgid ""
"The following steps may help with the demo (but feel free to instead use a "
"piece of Chromium-related Rust that you are most familiar with):"
msgstr ""
-"Los siguientes pasos pueden servir de ayuda con la demo (aunque puedes usar "
-"un fragmento de Rust relacionado con Chromium que te resulte más familiar):"
+"Los siguientes pasos pueden servir de ayuda con la demo (aunque puedes usar un "
+"fragmento de Rust relacionado con Chromium que te resulte más familiar):"
#: src/chromium/build-rules/vscode.md
msgid "Open `components/qr_code_generator/qr_code_generator_ffi_glue.rs`"
@@ -15687,19 +15419,18 @@ msgstr ""
#: src/chromium/build-rules/vscode.md
msgid ""
-"Demo **show documentation** (typical bindings: vscode = ctrl k i; vim/CoC = "
-"K)."
+"Demo **show documentation** (typical bindings: vscode = ctrl k i; vim/CoC = K)."
msgstr ""
-"Demo **mostrar la documentación** (enlaces típicos: vscode = ctrl ki; vim/"
-"CoC = K)."
+"Demo **mostrar la documentación** (enlaces típicos: vscode = ctrl ki; vim/CoC = "
+"K)."
#: src/chromium/build-rules/vscode.md
msgid ""
"Demo **go to definition** (typical bindings: vscode = F12; vim/CoC = g d). "
"(This will take you to `//third_party/rust/.../qr_code-.../src/lib.rs`.)"
msgstr ""
-"Demo **ir a la definición** (enlaces típicos: vscode = F12; vim/CoC = gd) "
-"(Esta acción te llevará a `//third_party/rust/.../qr_code-.../src/lib.rs`)."
+"Demo **ir a la definición** (enlaces típicos: vscode = F12; vim/CoC = gd) (Esta "
+"acción te llevará a `//third_party/rust/.../qr_code-.../src/lib.rs`)."
#: src/chromium/build-rules/vscode.md
msgid ""
@@ -15707,28 +15438,28 @@ msgid ""
"164; the outline is in the file explorer pane in vscode; typical vim/CoC "
"bindings = space o)"
msgstr ""
-"Demo **esquema** y desplázate hasta el método `QrCode::with_bits` (en la "
-"línea 164. El esquema se encuentra en el panel del explorador de archivos de "
-"vscode. Enlaces típicos de vim/CoC = espacio o)."
+"Demo **esquema** y desplázate hasta el método `QrCode::with_bits` (en la línea "
+"164. El esquema se encuentra en el panel del explorador de archivos de vscode. "
+"Enlaces típicos de vim/CoC = espacio o)."
#: src/chromium/build-rules/vscode.md
#, fuzzy
msgid ""
-"Demo **type annotations** (there are quite a few nice examples in the "
-"`QrCode::with_bits` method)"
+"Demo **type annotations** (there are quite a few nice examples in the `QrCode::"
+"with_bits` method)"
msgstr ""
"Demo **anotaciones de tipos** (hay varios ejemplos en el método `QrCode::"
"with_bits`)."
#: src/chromium/build-rules/vscode.md
msgid ""
-"It may be worth pointing out that `gn gen ... --export-rust-project` will "
-"need to be rerun after editing `BUILD.gn` files (which we will do a few "
-"times throughout the exercises in this session)."
+"It may be worth pointing out that `gn gen ... --export-rust-project` will need "
+"to be rerun after editing `BUILD.gn` files (which we will do a few times "
+"throughout the exercises in this session)."
msgstr ""
-"Es necesario destacar que hay que volver a ejecutar `gn gen ... --export-"
-"rust-project` después de editar los archivos `BUILD.gn` (lo haremos varias "
-"veces a lo largo de los ejercicios de esta sesión)."
+"Es necesario destacar que hay que volver a ejecutar `gn gen ... --export-rust-"
+"project` después de editar los archivos `BUILD.gn` (lo haremos varias veces a "
+"lo largo de los ejercicios de esta sesión)."
#: src/exercises/chromium/build-rules.md
msgid "Build rules exercise"
@@ -15739,37 +15470,35 @@ msgid ""
"In your Chromium build, add a new Rust target to `//ui/base/BUILD.gn` "
"containing:"
msgstr ""
-"En tu compilación de Chromium, añade un nuevo elemento de destino de Rust a "
-"`//ui/base/build.gn` que contenga lo siguiente:"
+"En tu compilación de Chromium, añade un nuevo elemento de destino de Rust a `//"
+"ui/base/build.gn` que contenga lo siguiente:"
#: src/exercises/chromium/build-rules.md
#, fuzzy
msgid ""
-"**Important**: note that `no_mangle` here is considered a type of unsafety "
-"by the Rust compiler, so you'll need to allow unsafe code in your `gn` "
-"target."
+"**Important**: note that `no_mangle` here is considered a type of unsafety by "
+"the Rust compiler, so you'll need to allow unsafe code in your `gn` target."
msgstr ""
-"**Importante:** Ten en cuenta que `no_mangle` en este caso se considera un "
-"tipo de inseguridad según el compilador de Rust, por lo que tendrás que "
-"permitir código inseguro en el elemento de destino `gn`."
+"**Importante:** Ten en cuenta que `no_mangle` en este caso se considera un tipo "
+"de inseguridad según el compilador de Rust, por lo que tendrás que permitir "
+"código inseguro en el elemento de destino `gn`."
#: src/exercises/chromium/build-rules.md
msgid ""
"Add this new Rust target as a dependency of `//ui/base:base`. Declare this "
-"function at the top of `ui/base/resource/resource_bundle.cc` (later, we'll "
-"see how this can be automated by bindings generation tools):"
+"function at the top of `ui/base/resource/resource_bundle.cc` (later, we'll see "
+"how this can be automated by bindings generation tools):"
msgstr ""
-"Añade este nuevo elemento de destino de Rust como una dependencia de `//ui/"
-"base:base`. Declara esta función en la parte superior de `ui/base/resource/"
+"Añade este nuevo elemento de destino de Rust como una dependencia de `//ui/base:"
+"base`. Declara esta función en la parte superior de `ui/base/resource/"
"resource_bundle.cc` (más adelante veremos cómo se puede automatizar mediante "
"herramientas de generación de enlaces):"
#: src/exercises/chromium/build-rules.md
msgid ""
-"Call this function from somewhere in `ui/base/resource/resource_bundle.cc` - "
-"we suggest the top of `ResourceBundle::MaybeMangleLocalizedString`. Build "
-"and run Chromium, and ensure that \"Hello from Rust!\" is printed lots of "
-"times."
+"Call this function from somewhere in `ui/base/resource/resource_bundle.cc` - we "
+"suggest the top of `ResourceBundle::MaybeMangleLocalizedString`. Build and run "
+"Chromium, and ensure that \"Hello from Rust!\" is printed lots of times."
msgstr ""
"Llama a esta función desde algún lugar de `ui/base/resource/resource_bundle."
"cc`. Recomendamos hacerlo en la parte superior de `ResourceBundle::"
@@ -15778,12 +15507,12 @@ msgstr ""
#: src/exercises/chromium/build-rules.md
msgid ""
-"If you use VSCode, now set up Rust to work well in VSCode. It will be useful "
-"in subsequent exercises. If you've succeeded, you will be able to use right-"
-"click \"Go to definition\" on `println!`."
+"If you use VSCode, now set up Rust to work well in VSCode. It will be useful in "
+"subsequent exercises. If you've succeeded, you will be able to use right-click "
+"\"Go to definition\" on `println!`."
msgstr ""
-"Si usas VSCode, ahora debes configurar Rust para que funcione correctamente "
-"en VSCode. Nos será útil en ejercicios posteriores. Si lo has completado "
+"Si usas VSCode, ahora debes configurar Rust para que funcione correctamente en "
+"VSCode. Nos será útil en ejercicios posteriores. Si lo has completado "
"correctamente, podrás hacer clic con el botón derecho y pulsar \"Ir a la "
"definición\" en `println!`."
@@ -15794,34 +15523,34 @@ msgstr "Dónde obtener ayuda"
#: src/exercises/chromium/build-rules.md
msgid ""
-"The options available to the [`rust_static_library` gn template](https://"
-"source.chromium.org/chromium/chromium/src/+/main:build/rust/"
-"rust_static_library.gni;l=16)"
+"The options available to the [`rust_static_library` gn template](https://source."
+"chromium.org/chromium/chromium/src/+/main:build/rust/rust_static_library.gni;"
+"l=16)"
msgstr ""
-"Opciones disponibles de la [plantilla gn `rust_static_library`](https://"
-"source.chromium.org/chromium/chromium/src/+/main:build/rust/"
-"rust_static_library.gni;l=16)"
+"Opciones disponibles de la [plantilla gn `rust_static_library`](https://source."
+"chromium.org/chromium/chromium/src/+/main:build/rust/rust_static_library.gni;"
+"l=16)"
#: src/exercises/chromium/build-rules.md
msgid ""
-"Information about [`#[no_mangle]`](https://doc.rust-lang.org/beta/reference/"
-"abi.html#the-no_mangle-attribute)"
+"Information about [`#[no_mangle]`](https://doc.rust-lang.org/beta/reference/abi."
+"html#the-no_mangle-attribute)"
msgstr ""
-"Información sobre [`#[no_mangle]`](https://doc.rust-lang.org/beta/reference/"
-"abi.html#the-no_mangle-attribute)"
+"Información sobre [`#[no_mangle]`](https://doc.rust-lang.org/beta/reference/abi."
+"html#the-no_mangle-attribute)"
#: src/exercises/chromium/build-rules.md
msgid ""
-"Information about [`extern \"C\"`](https://doc.rust-lang.org/std/keyword."
-"extern.html)"
+"Information about [`extern \"C\"`](https://doc.rust-lang.org/std/keyword.extern."
+"html)"
msgstr ""
-"Información sobre [`extern \"C\"`](https://doc.rust-lang.org/std/keyword."
-"extern.html)"
+"Información sobre [`extern \"C\"`](https://doc.rust-lang.org/std/keyword.extern."
+"html)"
#: src/exercises/chromium/build-rules.md
msgid ""
-"Information about gn's [`--export-rust-project`](https://gn.googlesource.com/"
-"gn/+/main/docs/reference.md#compilation-database) switch"
+"Information about gn's [`--export-rust-project`](https://gn.googlesource.com/gn/"
+"+/main/docs/reference.md#compilation-database) switch"
msgstr ""
"Información sobre el interruptor [`--export-rust-project`](https://gn."
"googlesource.com/gn/+/main/docs/reference.md#compilation-database) de gn"
@@ -15836,25 +15565,24 @@ msgstr ""
#: src/exercises/chromium/build-rules.md
msgid ""
-"This example is unusual because it boils down to the lowest-common-"
-"denominator interop language, C. Both C++ and Rust can natively declare and "
-"call C ABI functions. Later in the course, we'll connect C++ directly to "
-"Rust."
+"This example is unusual because it boils down to the lowest-common-denominator "
+"interop language, C. Both C++ and Rust can natively declare and call C ABI "
+"functions. Later in the course, we'll connect C++ directly to Rust."
msgstr ""
-"Este ejemplo no es habitual porque se reduce al lenguaje de "
-"interoperabilidad con el mínimo común denominador, C. Tanto C++ como Rust "
-"pueden declarar y llamar de forma nativa funciones ABI de C. Más adelante, "
-"conectaremos C++ directamente con Rust."
+"Este ejemplo no es habitual porque se reduce al lenguaje de interoperabilidad "
+"con el mínimo común denominador, C. Tanto C++ como Rust pueden declarar y "
+"llamar de forma nativa funciones ABI de C. Más adelante, conectaremos C++ "
+"directamente con Rust."
#: src/exercises/chromium/build-rules.md
msgid ""
-"`allow_unsafe = true` is required here because `#[no_mangle]` might allow "
-"Rust to generate two functions with the same name, and Rust can no longer "
-"guarantee that the right one is called."
+"`allow_unsafe = true` is required here because `#[no_mangle]` might allow Rust "
+"to generate two functions with the same name, and Rust can no longer guarantee "
+"that the right one is called."
msgstr ""
-"`allow_unsafe = true` es obligatorio porque `#[no_mangle]` podría permitir "
-"que Rust genere dos funciones con el mismo nombre, y Rust ya no puede "
-"asegurar que se llame a la correcta."
+"`allow_unsafe = true` es obligatorio porque `#[no_mangle]` podría permitir que "
+"Rust genere dos funciones con el mismo nombre, y Rust ya no puede asegurar que "
+"se llame a la correcta."
#: src/exercises/chromium/build-rules.md
msgid ""
@@ -15867,12 +15595,12 @@ msgstr ""
#: src/chromium/testing.md
msgid ""
"Rust community typically authors unit tests in a module placed in the same "
-"source file as the code being tested. This was covered [earlier](../testing."
-"md) in the course and looks like this:"
+"source file as the code being tested. This was covered [earlier](../testing.md) "
+"in the course and looks like this:"
msgstr ""
-"La comunidad de Rust suele crear las pruebas unitarias en un módulo situado "
-"en el mismo archivo fuente que el código que se está probando. Este tema ya "
-"se ha tratado [antes](../testing.md) en el curso y tiene este aspecto:"
+"La comunidad de Rust suele crear las pruebas unitarias en un módulo situado en "
+"el mismo archivo fuente que el código que se está probando. Este tema ya se ha "
+"tratado [antes](../testing.md) en el curso y tiene este aspecto:"
#: src/chromium/testing.md
msgid ""
@@ -15881,25 +15609,23 @@ msgid ""
"and helps to avoid rebuilding `.rs` files a second time (in the `test` "
"configuration)."
msgstr ""
-"En Chromium colocamos las pruebas unitarias en un archivo fuente "
-"independiente y continuamos con esta práctica con Rust. De esta forma, las "
-"pruebas se pueden encontrar de forma coherente y se evita volver a crear "
-"archivos `.rs` (en la configuración `test`)."
+"En Chromium colocamos las pruebas unitarias en un archivo fuente independiente "
+"y continuamos con esta práctica con Rust. De esta forma, las pruebas se pueden "
+"encontrar de forma coherente y se evita volver a crear archivos `.rs` (en la "
+"configuración `test`)."
#: src/chromium/testing.md
-msgid ""
-"This results in the following options for testing Rust code in Chromium:"
+msgid "This results in the following options for testing Rust code in Chromium:"
msgstr ""
"Esta acción genera las siguientes opciones para probar el código de Rust en "
"Chromium:"
#: src/chromium/testing.md
msgid ""
-"Native Rust tests (i.e. `#[test]`). Discouraged outside of `//third_party/"
-"rust`."
+"Native Rust tests (i.e. `#[test]`). Discouraged outside of `//third_party/rust`."
msgstr ""
-"Pruebas nativas de Rust (es decir, `#[test]`). No se recomienda hacerlas "
-"fuera de `//third_party/rust`."
+"Pruebas nativas de Rust (es decir, `#[test]`). No se recomienda hacerlas fuera "
+"de `//third_party/rust`."
#: src/chromium/testing.md
msgid ""
@@ -15907,20 +15633,19 @@ msgid ""
"when Rust code is just a thin FFI layer and the existing unit tests provide "
"sufficient coverage for the feature."
msgstr ""
-"Pruebas `gtest` escritas en C++ y ejercicios con Rust mediante llamadas de "
-"FFI. Suficiente cuando el código de Rust es solo una capa fina de FFI y las "
-"pruebas unitarias existentes proporcionan suficiente cobertura para la "
-"función."
+"Pruebas `gtest` escritas en C++ y ejercicios con Rust mediante llamadas de FFI. "
+"Suficiente cuando el código de Rust es solo una capa fina de FFI y las pruebas "
+"unitarias existentes proporcionan suficiente cobertura para la función."
#: src/chromium/testing.md
msgid ""
"`gtest` tests authored in Rust and using the crate under test through its "
-"public API (using `pub mod for_testing { ... }` if needed). This is the "
-"subject of the next few slides."
+"public API (using `pub mod for_testing { ... }` if needed). This is the subject "
+"of the next few slides."
msgstr ""
-"Pruebas `gtest` creadas en Rust y usando el crate en prueba a través de su "
-"API pública (mediante `pub mod for_testing { ... }` si es necesario). Este "
-"es el tema de las siguientes diapositivas."
+"Pruebas `gtest` creadas en Rust y usando el crate en prueba a través de su API "
+"pública (mediante `pub mod for_testing { ... }` si es necesario). Este es el "
+"tema de las siguientes diapositivas."
#: src/chromium/testing.md
msgid ""
@@ -15937,21 +15662,21 @@ msgid ""
"Some examples may help illustrate when C++ `gtest` vs Rust `gtest` should be "
"used:"
msgstr ""
-"Algunos ejemplos pueden ayudarte a ilustrar cuándo se debe usar `gtest` de C+"
-"+ o `gtest` de Rust:"
+"Algunos ejemplos pueden ayudarte a ilustrar cuándo se debe usar `gtest` de C++ "
+"o `gtest` de Rust:"
#: src/chromium/testing.md
msgid ""
"QR has very little functionality in the first-party Rust layer (it's just a "
-"thin FFI glue) and therefore uses the existing C++ unit tests for testing "
-"both the C++ and the Rust implementation (parameterizing the tests so they "
-"enable or disable Rust using a `ScopedFeatureList`)."
+"thin FFI glue) and therefore uses the existing C++ unit tests for testing both "
+"the C++ and the Rust implementation (parameterizing the tests so they enable or "
+"disable Rust using a `ScopedFeatureList`)."
msgstr ""
-"QR cuenta con muy pocas funciones en la capa de Rust propia (solo es un "
-"código pegamento de FFI) y, por lo tanto, utiliza las pruebas unitarias de C+"
-"+ existentes para probar la implementación de C++ y la de Rust "
-"(parametrizando las pruebas de modo que habiliten o inhabiliten Rust "
-"mediante un `ScopedFeatureList`)."
+"QR cuenta con muy pocas funciones en la capa de Rust propia (solo es un código "
+"pegamento de FFI) y, por lo tanto, utiliza las pruebas unitarias de C++ "
+"existentes para probar la implementación de C++ y la de Rust (parametrizando "
+"las pruebas de modo que habiliten o inhabiliten Rust mediante un "
+"`ScopedFeatureList`)."
#: src/chromium/testing.md
msgid ""
@@ -15960,36 +15685,33 @@ msgid ""
"missing in the `png` crate - e.g. RGBA => BGRA, or gamma correction. Such "
"functionality may benefit from separate tests authored in Rust."
msgstr ""
-"La integración hipotética/WIP de PNG puede necesitar una implementación "
-"segura en memoria de las transformaciones de píxeles que proporciona "
-"`libpng` pero que faltan en el crate `png`, como por ejemplo, RGBA => BGRA o "
-"corrección gamma. Dicha función puede beneficiarse de pruebas independientes "
-"creadas en Rust."
+"La integración hipotética/WIP de PNG puede necesitar una implementación segura "
+"en memoria de las transformaciones de píxeles que proporciona `libpng` pero que "
+"faltan en el crate `png`, como por ejemplo, RGBA => BGRA o corrección gamma. "
+"Dicha función puede beneficiarse de pruebas independientes creadas en Rust."
#: src/chromium/testing/rust-gtest-interop.md
msgid ""
"The [`rust_gtest_interop`](https://chromium.googlesource.com/chromium/src/+/"
"main/testing/rust_gtest_interop/README.md) library provides a way to:"
msgstr ""
-"La biblioteca [`rust_gtest_interop`](https://chromium.googlesource.com/"
-"chromium/src/+/main/testing/rust_gtest_interop/README.md) permite hacer lo "
-"siguiente:"
+"La biblioteca [`rust_gtest_interop`](https://chromium.googlesource.com/chromium/"
+"src/+/main/testing/rust_gtest_interop/README.md) permite hacer lo siguiente:"
#: src/chromium/testing/rust-gtest-interop.md
msgid ""
-"Use a Rust function as a `gtest` testcase (using the `#[gtest(...)]` "
-"attribute)"
+"Use a Rust function as a `gtest` testcase (using the `#[gtest(...)]` attribute)"
msgstr ""
"Usar una función de Rust como caso de prueba `gtest` (con el atributo "
"`#[gtest(...)]`)."
#: src/chromium/testing/rust-gtest-interop.md
msgid ""
-"Use `expect_eq!` and similar macros (similar to `assert_eq!` but not "
-"panicking and not terminating the test when the assertion fails)."
+"Use `expect_eq!` and similar macros (similar to `assert_eq!` but not panicking "
+"and not terminating the test when the assertion fails)."
msgstr ""
-"Usar `expect_eq!` y macros similares (similares a `assert_eq!`, pero sin que "
-"se produzcan pánicos o sin finalizar la prueba cuando la aserción falle)."
+"Usar `expect_eq!` y macros similares (similares a `assert_eq!`, pero sin que se "
+"produzcan pánicos o sin finalizar la prueba cuando la aserción falle)."
#: src/chromium/testing/rust-gtest-interop.md
msgid "Example:"
@@ -15997,8 +15719,8 @@ msgstr "Ejemplo:"
#: src/chromium/testing/build-gn.md
msgid ""
-"The simplest way to build Rust `gtest` tests is to add them to an existing "
-"test binary that already contains tests authored in C++. For example:"
+"The simplest way to build Rust `gtest` tests is to add them to an existing test "
+"binary that already contains tests authored in C++. For example:"
msgstr ""
"La forma más sencilla de compilar pruebas `gtest` de Rust es añadirlas a un "
"binario de prueba que ya contenga pruebas creadas en C++. Por ejemplo:"
@@ -16070,20 +15792,19 @@ msgstr ""
#: src/chromium/testing/chromium-import-macro.md
msgid ""
-"After adding `:my_rust_lib` to GN `deps`, we still need to learn how to "
-"import and use `my_rust_lib` from `my_rust_lib_unittest.rs`. We haven't "
-"provided an explicit `crate_name` for `my_rust_lib` so its crate name is "
-"computed based on the full target path and name. Fortunately we can avoid "
-"working with such an unwieldy name by using the `chromium::import!` macro "
-"from the automatically-imported `chromium` crate:"
-msgstr ""
-"Después de añadir `:my_rust_lib` a GN `deps`, tenemos que aprender a "
-"importar y usar `my_rust_lib` desde `my_rust_lib_unittest.rs`. No hemos "
-"proporcionado un `crate_name` explícito para `my_rust_lib`, por lo que el "
-"nombre del crate se calcula en función de la ruta y el nombre de destino "
-"completos. Por suerte, podemos evitar trabajar con un nombre tan poco "
-"práctico usando la macro `chromium::import!` del crate `chromium` importado "
-"automáticamente:"
+"After adding `:my_rust_lib` to GN `deps`, we still need to learn how to import "
+"and use `my_rust_lib` from `my_rust_lib_unittest.rs`. We haven't provided an "
+"explicit `crate_name` for `my_rust_lib` so its crate name is computed based on "
+"the full target path and name. Fortunately we can avoid working with such an "
+"unwieldy name by using the `chromium::import!` macro from the automatically-"
+"imported `chromium` crate:"
+msgstr ""
+"Después de añadir `:my_rust_lib` a GN `deps`, tenemos que aprender a importar y "
+"usar `my_rust_lib` desde `my_rust_lib_unittest.rs`. No hemos proporcionado un "
+"`crate_name` explícito para `my_rust_lib`, por lo que el nombre del crate se "
+"calcula en función de la ruta y el nombre de destino completos. Por suerte, "
+"podemos evitar trabajar con un nombre tan poco práctico usando la macro "
+"`chromium::import!` del crate `chromium` importado automáticamente:"
#: src/chromium/testing/chromium-import-macro.md
msgid "\"//ui/base:my_rust_lib\""
@@ -16091,18 +15812,17 @@ msgstr "\"//ui/base:my_rust_lib\""
#: src/chromium/testing/chromium-import-macro.md
msgid "Under the covers the macro expands to something similar to:"
-msgstr ""
-"En un segundo plano, la macro se expande a algo parecido a lo siguiente:"
+msgstr "En un segundo plano, la macro se expande a algo parecido a lo siguiente:"
#: src/chromium/testing/chromium-import-macro.md
msgid ""
-"More information can be found in [the doc comment](https://source.chromium."
-"org/chromium/chromium/src/+/main:build/rust/chromium_prelude/"
-"chromium_prelude.rs?q=f:chromium_prelude.rs%20pub.use.*%5Cbimport%5Cb;%20-f:"
+"More information can be found in [the doc comment](https://source.chromium.org/"
+"chromium/chromium/src/+/main:build/rust/chromium_prelude/chromium_prelude.rs?"
+"q=f:chromium_prelude.rs%20pub.use.*%5Cbimport%5Cb;%20-f:"
"third_party&ss=chromium%2Fchromium%2Fsrc) of the `chromium::import` macro."
msgstr ""
-"Puedes obtener más información en [el comentario del documento](https://"
-"source.chromium.org/chromium/chromium/src/+/main:build/rust/chromium_prelude/"
+"Puedes obtener más información en [el comentario del documento](https://source."
+"chromium.org/chromium/chromium/src/+/main:build/rust/chromium_prelude/"
"chromium_prelude.rs?q=f:chromium_prelude.rs%20pub.use.*%5Cbimport%5Cb;%20-f:"
"third_party&ss=chromium%2Fchromium%2Fsrc) de la macro `chromium::import`."
@@ -16111,15 +15831,15 @@ msgid ""
"`rust_static_library` supports specifying an explicit name via `crate_name` "
"property, but doing this is discouraged. And it is discouraged because the "
"crate name has to be globally unique. crates.io guarantees uniqueness of its "
-"crate names so `cargo_crate` GN targets (generated by the `gnrt` tool "
-"covered in a later section) use short crate names."
+"crate names so `cargo_crate` GN targets (generated by the `gnrt` tool covered "
+"in a later section) use short crate names."
msgstr ""
"`rust_static_library` permite especificar un nombre explícito mediante la "
-"propiedad `crate_name`, pero no se recomienda hacerlo. El motivo es porque "
-"el nombre del crate debe ser único en todo el mundo. crates.io garantiza la "
-"exclusividad de sus nombres de crate, de modo que los elementos de destino "
-"de GN `cargo_crate` (generados por la herramienta `gnrt` que se explican en "
-"una sección posterior) usan nombres de crate cortos."
+"propiedad `crate_name`, pero no se recomienda hacerlo. El motivo es porque el "
+"nombre del crate debe ser único en todo el mundo. crates.io garantiza la "
+"exclusividad de sus nombres de crate, de modo que los elementos de destino de "
+"GN `cargo_crate` (generados por la herramienta `gnrt` que se explican en una "
+"sección posterior) usan nombres de crate cortos."
#: src/exercises/chromium/testing.md
msgid "Testing exercise"
@@ -16135,9 +15855,9 @@ msgstr "En tu compilación de Chromium:"
#: src/exercises/chromium/testing.md
msgid ""
-"Add a testable function next to `hello_from_rust`. Some suggestions: adding "
-"two integers received as arguments, computing the nth Fibonacci number, "
-"summing integers in a slice, etc."
+"Add a testable function next to `hello_from_rust`. Some suggestions: adding two "
+"integers received as arguments, computing the nth Fibonacci number, summing "
+"integers in a slice, etc."
msgstr ""
"Añade una función que se pueda probar junto a `hello_from_rust`. Aquí tienes "
"algunas sugerencias: añadir dos números enteros recibidos como argumentos, "
@@ -16156,71 +15876,67 @@ msgstr "Añade las nuevas pruebas a `BUILD.gn`."
#: src/exercises/chromium/testing.md
msgid "Build the tests, run them, and verify that the new test works."
-msgstr ""
-"Compila las pruebas, ejecútalas y comprueba que la nueva prueba funciona."
+msgstr "Compila las pruebas, ejecútalas y comprueba que la nueva prueba funciona."
#: src/chromium/interoperability-with-cpp.md
msgid ""
-"The Rust community offers multiple options for C++/Rust interop, with new "
-"tools being developed all the time. At the moment, Chromium uses a tool "
-"called CXX."
+"The Rust community offers multiple options for C++/Rust interop, with new tools "
+"being developed all the time. At the moment, Chromium uses a tool called CXX."
msgstr ""
-"La comunidad de Rust ofrece muchas opciones para la interoperabilidad de C++ "
-"y Rust, y continuamente se están desarrollando nuevas herramientas. "
-"Actualmente, Chromium usa la herramienta CXX."
+"La comunidad de Rust ofrece muchas opciones para la interoperabilidad de C++ y "
+"Rust, y continuamente se están desarrollando nuevas herramientas. Actualmente, "
+"Chromium usa la herramienta CXX."
#: src/chromium/interoperability-with-cpp.md
msgid ""
-"You describe your whole language boundary in an interface definition "
-"language (which looks a lot like Rust) and then CXX tools generate "
-"declarations for functions and types in both Rust and C++."
+"You describe your whole language boundary in an interface definition language "
+"(which looks a lot like Rust) and then CXX tools generate declarations for "
+"functions and types in both Rust and C++."
msgstr ""
"Describe todos los límites de tu lenguaje en un lenguaje de definición de "
-"interfaz (que se parece mucho a Rust) y, a continuación, las herramientas "
-"CXX generarán declaraciones de funciones y tipos tanto en Rust como en C++."
+"interfaz (que se parece mucho a Rust) y, a continuación, las herramientas CXX "
+"generarán declaraciones de funciones y tipos tanto en Rust como en C++."
#: src/chromium/interoperability-with-cpp.md
msgid ""
"See the [CXX tutorial](https://cxx.rs/tutorial.html) for a full example of "
"using this."
msgstr ""
-"Consulta el [tutorial de CXX](https://cxx.rs/tutorial.html) para ver un "
-"ejemplo completo de su uso."
+"Consulta el [tutorial de CXX](https://cxx.rs/tutorial.html) para ver un ejemplo "
+"completo de su uso."
#: src/chromium/interoperability-with-cpp.md
msgid ""
"Talk through the diagram. Explain that behind the scenes, this is doing just "
-"the same as you previously did. Point out that automating the process has "
-"the following benefits:"
+"the same as you previously did. Point out that automating the process has the "
+"following benefits:"
msgstr ""
-"Aclara el diagrama. Explica que, en segundo plano, esto hace lo mismo que "
-"hemos hecho antes. Señala que automatizar el proceso supone las siguientes "
-"ventajas:"
+"Aclara el diagrama. Explica que, en segundo plano, esto hace lo mismo que hemos "
+"hecho antes. Señala que automatizar el proceso supone las siguientes ventajas:"
#: src/chromium/interoperability-with-cpp.md
msgid ""
"The tool guarantees that the C++ and Rust sides match (e.g. you get compile "
"errors if the `#[cxx::bridge]` doesn't match the actual C++ or Rust "
-"definitions, but with out-of-sync manual bindings you'd get Undefined "
-"Behavior)"
+"definitions, but with out-of-sync manual bindings you'd get Undefined Behavior)"
msgstr ""
"La herramienta asegura que C++ y Rust coincidan (por ejemplo, se producen "
-"errores de compilación si `#[cxx::bridge]` no coincide con las definiciones "
-"de C++ o Rust reales, pero con enlaces manuales no sincronizados, se "
-"obtendría un comportamiento no definido)"
+"errores de compilación si `#[cxx::bridge]` no coincide con las definiciones de "
+"C++ o Rust reales, pero con enlaces manuales no sincronizados, se obtendría un "
+"comportamiento no definido)"
#: src/chromium/interoperability-with-cpp.md
msgid ""
"The tool automates generation of FFI thunks (small, C-ABI-compatible, free "
"functions) for non-C features (e.g. enabling FFI calls into Rust or C++ "
-"methods; manual bindings would require authoring such top-level, free "
-"functions manually)"
+"methods; manual bindings would require authoring such top-level, free functions "
+"manually)"
msgstr ""
"La herramienta automatiza la generación de thunks FFI (funciones pequeñas, "
"compatibles con la ABI de C y gratuitas) para funciones que no son de C (por "
"ejemplo, habilitar llamadas de FFI en métodos de Rust o C++. Los enlaces "
-"manuales requerirían la creación manual de estas funciones gratuitas de "
-"nivel superior)."
+"manuales requerirían la creación manual de estas funciones gratuitas de nivel "
+"superior)."
#: src/chromium/interoperability-with-cpp.md
msgid "The tool and the library can handle a set of core types - for example:"
@@ -16230,24 +15946,23 @@ msgstr ""
#: src/chromium/interoperability-with-cpp.md
msgid ""
-"`&[T]` can be passed across the FFI boundary, even though it doesn't "
-"guarantee any particular ABI or memory layout. With manual bindings `std::"
-"span` / `&[T]` have to be manually destructured and rebuilt out of a "
-"pointer and length - this is error-prone given that each language represents "
-"empty slices slightly differently)"
+"`&[T]` can be passed across the FFI boundary, even though it doesn't guarantee "
+"any particular ABI or memory layout. With manual bindings `std::span` / "
+"`&[T]` have to be manually destructured and rebuilt out of a pointer and length "
+"- this is error-prone given that each language represents empty slices slightly "
+"differently)"
msgstr ""
"`&[T]` se puede transferir a través del límite de FFI, aunque no garantiza "
"ningún diseño concreto de ABI o de memoria. Con los enlaces manuales, `std::"
"span` y `&[T]` se tienen que desestructurar manualmente y compilarlos a "
-"partir de un puntero y una longitud. Esto suele acarrear errores, ya que "
-"cada lenguaje representa los slices vacíos de forma ligeramente distinta."
+"partir de un puntero y una longitud. Esto suele acarrear errores, ya que cada "
+"lenguaje representa los slices vacíos de forma ligeramente distinta."
#: src/chromium/interoperability-with-cpp.md
msgid ""
"Smart pointers like `std::unique_ptr`, `std::shared_ptr`, and/or `Box` "
"are natively supported. With manual bindings, one would have to pass C-ABI-"
-"compatible raw pointers, which would increase lifetime and memory-safety "
-"risks."
+"compatible raw pointers, which would increase lifetime and memory-safety risks."
msgstr ""
"Los punteros inteligentes como `std::unique_ptr`, `std::shared_ptr` o "
"`Box` se admiten de forma nativa. Con los enlaces manuales, sería necesario "
@@ -16261,19 +15976,19 @@ msgid ""
"build a Rust string from non-UTF8 input and `rust::String::c_str` can NUL-"
"terminate a string)."
msgstr ""
-"Los tipos `rust::String` y `CxxString` entienden y mantienen las diferencias "
-"en la representación de cadenas en los distintos lenguajes (por ejemplo, "
-"`rust::String::lossy` puede crear una cadena de Rust a partir de una entrada "
-"que no sea UTF8 y `rust::String::: c_str` puede terminar una cadena con un "
-"carácter nulo)."
+"Los tipos `rust::String` y `CxxString` entienden y mantienen las diferencias en "
+"la representación de cadenas en los distintos lenguajes (por ejemplo, `rust::"
+"String::lossy` puede crear una cadena de Rust a partir de una entrada que no "
+"sea UTF8 y `rust::String::: c_str` puede terminar una cadena con un carácter "
+"nulo)."
#: src/chromium/interoperability-with-cpp/example-bindings.md
msgid ""
"CXX requires that the whole C++/Rust boundary is declared in `cxx::bridge` "
"modules inside `.rs` source code."
msgstr ""
-"CXX necesita que se declare todo el límite de C++ o Rust en los módulos "
-"`cxx::bridge` del código fuente `.rs`."
+"CXX necesita que se declare todo el límite de C++ o Rust en los módulos `cxx::"
+"bridge` del código fuente `.rs`."
#: src/chromium/interoperability-with-cpp/example-bindings.md
msgid "\"example/include/blobstore.h\""
@@ -16290,10 +16005,10 @@ msgstr "Señala lo siguiente:"
#: src/chromium/interoperability-with-cpp/example-bindings.md
msgid ""
-"Although this looks like a regular Rust `mod`, the `#[cxx::bridge]` "
-"procedural macro does complex things to it. The generated code is quite a "
-"bit more sophisticated - though this does still result in a `mod` called "
-"`ffi` in your code."
+"Although this looks like a regular Rust `mod`, the `#[cxx::bridge]` procedural "
+"macro does complex things to it. The generated code is quite a bit more "
+"sophisticated - though this does still result in a `mod` called `ffi` in your "
+"code."
msgstr ""
"Aunque parece un `mod` de Rust habitual, la macro de procedimiento `#[cxx::"
"bridge]` es capaz de desempeñar tareas complejas. El código generado es "
@@ -16318,20 +16033,19 @@ msgstr "Llamadas de Rust a C++ y tipos de C++ (en la parte inferior)."
#: src/chromium/interoperability-with-cpp/example-bindings.md
msgid ""
-"**Common misconception**: It _looks_ like a C++ header is being parsed by "
-"Rust, but this is misleading. This header is never interpreted by Rust, but "
-"simply `#include`d in the generated C++ code for the benefit of C++ "
-"compilers."
+"**Common misconception**: It _looks_ like a C++ header is being parsed by Rust, "
+"but this is misleading. This header is never interpreted by Rust, but simply "
+"`#include`d in the generated C++ code for the benefit of C++ compilers."
msgstr ""
-"**Error común**: _Parece_ que Rust está analizando un encabezado de C++, "
-"pero no es así. Rust nunca interpreta este encabezado, sino que simplifica "
+"**Error común**: _Parece_ que Rust está analizando un encabezado de C++, pero "
+"no es así. Rust nunca interpreta este encabezado, sino que simplifica "
"`#include`d en el código C++ generado para ayudar a los compiladores de C++."
#: src/chromium/interoperability-with-cpp/limitations-of-cxx.md
#, fuzzy
msgid ""
-"By far the most useful page when using CXX is the [type reference](https://"
-"cxx.rs/bindings.html)."
+"By far the most useful page when using CXX is the [type reference](https://cxx."
+"rs/bindings.html)."
msgstr ""
"Muestra la correspondencia entre [los tipos de Rust y C++](https://cxx.rs/"
"bindings.html):"
@@ -16342,8 +16056,7 @@ msgstr "CXX se adapta básicamente a los casos en los que:"
#: src/chromium/interoperability-with-cpp/limitations-of-cxx.md
msgid ""
-"Your Rust-C++ interface is sufficiently simple that you can declare all of "
-"it."
+"Your Rust-C++ interface is sufficiently simple that you can declare all of it."
msgstr ""
"La interfaz de Rust-C++ es lo suficientemente sencilla como para se pueda "
"declarar por completo."
@@ -16361,37 +16074,35 @@ msgid ""
"It has many limitations --- for example lack of support for Rust's `Option` "
"type."
msgstr ""
-"Tiene muchas limitaciones, por ejemplo, la falta de compatibilidad con el "
-"tipo `Option` de Rust."
+"Tiene muchas limitaciones, por ejemplo, la falta de compatibilidad con el tipo "
+"`Option` de Rust."
#: src/chromium/interoperability-with-cpp/limitations-of-cxx.md
msgid ""
-"These limitations constrain us to using Rust in Chromium only for well "
-"isolated \"leaf nodes\" rather than for arbitrary Rust-C++ interop. When "
-"considering a use-case for Rust in Chromium, a good starting point is to "
-"draft the CXX bindings for the language boundary to see if it appears simple "
-"enough."
+"These limitations constrain us to using Rust in Chromium only for well isolated "
+"\"leaf nodes\" rather than for arbitrary Rust-C++ interop. When considering a "
+"use-case for Rust in Chromium, a good starting point is to draft the CXX "
+"bindings for the language boundary to see if it appears simple enough."
msgstr ""
"Estas restricciones nos limitan a usar Rust en Chromium solo para \"nodos "
-"hoja\" muy aislados, en lugar de para la interoperabilidad arbitraria de "
-"Rust-C++. Si te planteas un caso práctico de Rust en Chromium, un buen punto "
-"de partida es hacer un borrador de los enlaces de CXX para el límite del "
-"lenguaje para ver si te parece lo suficientemente sencillo."
+"hoja\" muy aislados, en lugar de para la interoperabilidad arbitraria de Rust-C+"
+"+. Si te planteas un caso práctico de Rust en Chromium, un buen punto de "
+"partida es hacer un borrador de los enlaces de CXX para el límite del lenguaje "
+"para ver si te parece lo suficientemente sencillo."
#: src/chromium/interoperability-with-cpp/limitations-of-cxx.md
msgid ""
-"You should also discuss some of the other sticky points with CXX, for "
-"example:"
+"You should also discuss some of the other sticky points with CXX, for example:"
msgstr ""
-"También debes hablar de algunos de los otros aspectos delicados con CXX, "
-"como los siguientes:"
+"También debes hablar de algunos de los otros aspectos delicados con CXX, como "
+"los siguientes:"
#: src/chromium/interoperability-with-cpp/limitations-of-cxx.md
msgid ""
"Its error handling is based around C++ exceptions (given on the next slide)"
msgstr ""
-"Su gestión de errores se basa en las excepciones de C++ (como se muestra en "
-"la siguiente diapositiva)."
+"Su gestión de errores se basa en las excepciones de C++ (como se muestra en la "
+"siguiente diapositiva)."
#: src/chromium/interoperability-with-cpp/limitations-of-cxx.md
msgid "Function pointers are awkward to use."
@@ -16399,8 +16110,8 @@ msgstr "Los punteros de función no son muy fáciles de usar."
#: src/chromium/interoperability-with-cpp/error-handling.md
msgid ""
-"CXX's [support for `Result`](https://cxx.rs/binding/result.html) relies "
-"on C++ exceptions, so we can't use that in Chromium. Alternatives:"
+"CXX's [support for `Result`](https://cxx.rs/binding/result.html) relies on "
+"C++ exceptions, so we can't use that in Chromium. Alternatives:"
msgstr ""
"La [compatibilidad con `Result`](https://cxx.rs/binding/result.html) de "
"CXX se basa en excepciones de C++, por lo que no podemos usarlo en Chromium. "
@@ -16412,8 +16123,8 @@ msgstr "La parte `T` de `Result` puede:"
#: src/chromium/interoperability-with-cpp/error-handling.md
msgid ""
-"Returned via out parameters (e.g. via `&mut T`). This requires that `T` can "
-"be passed across the FFI boundary - for example `T` has to be:"
+"Returned via out parameters (e.g. via `&mut T`). This requires that `T` can be "
+"passed across the FFI boundary - for example `T` has to be:"
msgstr ""
"Devolverse a través de parámetros externos (por ejemplo, mediante `&mut T`). "
"Esto requiere que `T` se pueda transferir a través del límite de FFI. Por "
@@ -16428,19 +16139,19 @@ msgid ""
"A type natively supported by `cxx` (like `UniquePtr`) that has a suitable "
"default value to use in a failure case (_unlike_ `Box`)."
msgstr ""
-"Un tipo compatible de forma nativa con `cxx` (como `UniquePtr`) que tiene "
-"un valor predeterminado adecuado para usarlo en caso de fallo (_a diferencia "
-"de_ `Box`)."
+"Un tipo compatible de forma nativa con `cxx` (como `UniquePtr`) que tiene un "
+"valor predeterminado adecuado para usarlo en caso de fallo (_a diferencia de_ "
+"`Box`)."
#: src/chromium/interoperability-with-cpp/error-handling.md
msgid ""
-"Retained on the Rust side, and exposed via reference. This may be needed "
-"when `T` is a Rust type, which cannot be passed across the FFI boundary, and "
-"cannot be stored in `UniquePtr`."
+"Retained on the Rust side, and exposed via reference. This may be needed when "
+"`T` is a Rust type, which cannot be passed across the FFI boundary, and cannot "
+"be stored in `UniquePtr`."
msgstr ""
-"Mantenerse en el lado de Rust y mostrarse mediante referencia. Esto puede "
-"ser necesario cuando `T` es un tipo de Rust, que no se puede transmitir "
-"mediante el límite de FFI ni se puede almacenar en `UniquePtr`."
+"Mantenerse en el lado de Rust y mostrarse mediante referencia. Esto puede ser "
+"necesario cuando `T` es un tipo de Rust, que no se puede transmitir mediante el "
+"límite de FFI ni se puede almacenar en `UniquePtr`."
#: src/chromium/interoperability-with-cpp/error-handling.md
msgid "The `E` part of `Result` can be:"
@@ -16456,11 +16167,11 @@ msgstr ""
#: src/chromium/interoperability-with-cpp/error-handling.md
msgid ""
-"Preserving error details is in theory possible, but so far hasn't been "
-"needed in practice."
+"Preserving error details is in theory possible, but so far hasn't been needed "
+"in practice."
msgstr ""
-"En teoría, es posible conservar los detalles de los errores, pero hasta "
-"ahora no se ha necesitado en la práctica."
+"En teoría, es posible conservar los detalles de los errores, pero hasta ahora "
+"no se ha necesitado en la práctica."
#: src/chromium/interoperability-with-cpp/error-handling-qr.md
msgid "CXX Error Handling: QR Example"
@@ -16469,17 +16180,16 @@ msgstr "Manejo de Errores en CXX: Ejemplo de QR"
#: src/chromium/interoperability-with-cpp/error-handling-qr.md
msgid ""
"The QR code generator is [an example](https://source.chromium.org/chromium/"
-"chromium/src/+/main:components/qr_code_generator/qr_code_generator_ffi_glue."
-"rs;l=13-18;drc=7bf1b75b910ca430501b9c6a74c1d18a0223ecca) where a boolean is "
-"used to communicate success vs failure, and where the successful result can "
-"be passed across the FFI boundary:"
-msgstr ""
-"El generador de código QR es [un ejemplo](https://source.chromium.org/"
-"chromium/chromium/src/+/main:components/qr_code_generator/"
-"qr_code_generator_ffi_glue.rs;l=13-18;"
-"drc=7bf1b75b910ca430501b9c6a74c1d18a0223ecca) en el que el valor booleano se "
-"utiliza para comunicar que el resultado es correcto o no, y dónde se puede "
-"transmitir el resultado correcto a través del límite de FFI:"
+"chromium/src/+/main:components/qr_code_generator/qr_code_generator_ffi_glue.rs;"
+"l=13-18;drc=7bf1b75b910ca430501b9c6a74c1d18a0223ecca) where a boolean is used "
+"to communicate success vs failure, and where the successful result can be "
+"passed across the FFI boundary:"
+msgstr ""
+"El generador de código QR es [un ejemplo](https://source.chromium.org/chromium/"
+"chromium/src/+/main:components/qr_code_generator/qr_code_generator_ffi_glue.rs;"
+"l=13-18;drc=7bf1b75b910ca430501b9c6a74c1d18a0223ecca) en el que el valor "
+"booleano se utiliza para comunicar que el resultado es correcto o no, y dónde "
+"se puede transmitir el resultado correcto a través del límite de FFI:"
#: src/chromium/interoperability-with-cpp/error-handling-qr.md
msgid "\"qr_code_generator\""
@@ -16487,39 +16197,37 @@ msgstr "\"qr_code_generator\""
#: src/chromium/interoperability-with-cpp/error-handling-qr.md
msgid ""
-"Students may be curious about the semantics of the `out_qr_size` output. "
-"This is not the size of the vector, but the size of the QR code (and "
-"admittedly it is a bit redundant - this is the square root of the size of "
-"the vector)."
+"Students may be curious about the semantics of the `out_qr_size` output. This "
+"is not the size of the vector, but the size of the QR code (and admittedly it "
+"is a bit redundant - this is the square root of the size of the vector)."
msgstr ""
"Puede que los participantes sientan curiosidad acerca de la semántica del "
-"resultado de salida `out_qr_size`. No se trata del tamaño del vector, sino "
-"del tamaño del código QR (y admitimos que es un poco redundante, ya que se "
-"trata de la raíz cuadrada del tamaño del vector)."
+"resultado de salida `out_qr_size`. No se trata del tamaño del vector, sino del "
+"tamaño del código QR (y admitimos que es un poco redundante, ya que se trata de "
+"la raíz cuadrada del tamaño del vector)."
#: src/chromium/interoperability-with-cpp/error-handling-qr.md
msgid ""
"It may be worth pointing out the importance of initializing `out_qr_size` "
-"before calling into the Rust function. Creation of a Rust reference that "
-"points to uninitialized memory results in Undefined Behavior (unlike in C++, "
-"when only the act of dereferencing such memory results in UB)."
+"before calling into the Rust function. Creation of a Rust reference that points "
+"to uninitialized memory results in Undefined Behavior (unlike in C++, when only "
+"the act of dereferencing such memory results in UB)."
msgstr ""
-"Cabe destacar la importancia de inicializar `out_qr_size` antes de llamar a "
-"la función de Rust. La creación de una referencia de Rust que apunte a una "
-"memoria no inicializada tiene como resultado un comportamiento indefinido (a "
-"diferencia de C++, cuando solo el acto de desreferenciar la memoria resulta "
-"en comportamiento indefinido)."
+"Cabe destacar la importancia de inicializar `out_qr_size` antes de llamar a la "
+"función de Rust. La creación de una referencia de Rust que apunte a una memoria "
+"no inicializada tiene como resultado un comportamiento indefinido (a diferencia "
+"de C++, cuando solo el acto de desreferenciar la memoria resulta en "
+"comportamiento indefinido)."
#: src/chromium/interoperability-with-cpp/error-handling-qr.md
msgid ""
"If students ask about `Pin`, then explain why CXX needs it for mutable "
-"references to C++ data: the answer is that C++ data can’t be moved around "
-"like Rust data, because it may contain self-referential pointers."
+"references to C++ data: the answer is that C++ data can’t be moved around like "
+"Rust data, because it may contain self-referential pointers."
msgstr ""
-"Si los participantes preguntan por `Pin`, explica por qué CXX lo necesita "
-"para referencias mutables a datos de C++. Los datos de C++ no se pueden "
-"mover como los datos de Rust, ya que pueden contener punteros de "
-"autorreferencia."
+"Si los participantes preguntan por `Pin`, explica por qué CXX lo necesita para "
+"referencias mutables a datos de C++. Los datos de C++ no se pueden mover como "
+"los datos de Rust, ya que pueden contener punteros de autorreferencia."
#: src/chromium/interoperability-with-cpp/error-handling-png.md
#, fuzzy
@@ -16528,8 +16236,8 @@ msgstr "Manejo de Errores"
#: src/chromium/interoperability-with-cpp/error-handling-png.md
msgid ""
-"A prototype of a PNG decoder illustrates what can be done when the "
-"successful result cannot be passed across the FFI boundary:"
+"A prototype of a PNG decoder illustrates what can be done when the successful "
+"result cannot be passed across the FFI boundary:"
msgstr ""
"Un prototipo de un decodificador PNG ilustra lo que se puede hacer cuando el "
"resultado correcto no se puede transmitir a través del límite de FFI:"
@@ -16556,15 +16264,15 @@ msgstr "/// Enlaces de C++ para el tipo `crate::png::PngReader`.\n"
#: src/chromium/interoperability-with-cpp/error-handling-png.md
msgid ""
-"`PngReader` and `ResultOfPngReader` are Rust types --- objects of these "
-"types cannot cross the FFI boundary without indirection of a `Box`. We "
-"can't have an `out_parameter: &mut PngReader`, because CXX doesn't allow C++ "
-"to store Rust objects by value."
+"`PngReader` and `ResultOfPngReader` are Rust types --- objects of these types "
+"cannot cross the FFI boundary without indirection of a `Box`. We can't have "
+"an `out_parameter: &mut PngReader`, because CXX doesn't allow C++ to store Rust "
+"objects by value."
msgstr ""
-"`PngReader` y `ResultOfPngReader` son tipos de Rust. Los objetos de estos "
-"tipos no pueden cruzar el límite de FFI sin la indirección de un `Box`. "
-"No se puede tener un `out_parameter: &mut PngReader`, ya que CXX no permite "
-"que C++ almacene objetos de Rust por valor."
+"`PngReader` y `ResultOfPngReader` son tipos de Rust. Los objetos de estos tipos "
+"no pueden cruzar el límite de FFI sin la indirección de un `Box`. No se "
+"puede tener un `out_parameter: &mut PngReader`, ya que CXX no permite que C++ "
+"almacene objetos de Rust por valor."
#: src/chromium/interoperability-with-cpp/error-handling-png.md
msgid ""
@@ -16576,11 +16284,11 @@ msgid ""
"`as_mut`)."
msgstr ""
"Este ejemplo ilustra que, aunque CXX no es compatible con plantillas ni "
-"genéricos arbitrarios, podemos transmitirlos a través de los límites de FFI "
-"si los especializamos de forma manual o los monomorfizamos en un tipo no "
-"genérico. En el ejemplo, `ResultOfPngReader` es un tipo no genérico que "
-"redirige los métodos adecuados de `Result` (por ejemplo, a `is_err`, "
-"`unwrap` o `as_mut`)."
+"genéricos arbitrarios, podemos transmitirlos a través de los límites de FFI si "
+"los especializamos de forma manual o los monomorfizamos en un tipo no genérico. "
+"En el ejemplo, `ResultOfPngReader` es un tipo no genérico que redirige los "
+"métodos adecuados de `Result` (por ejemplo, a `is_err`, `unwrap` o "
+"`as_mut`)."
#: src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md
msgid "Using cxx in Chromium"
@@ -16588,8 +16296,8 @@ msgstr "Usar cxx en Chromium"
#: src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md
msgid ""
-"In Chromium, we define an independent `#[cxx::bridge] mod` for each leaf-"
-"node where we want to use Rust. You'd typically have one for each "
+"In Chromium, we define an independent `#[cxx::bridge] mod` for each leaf-node "
+"where we want to use Rust. You'd typically have one for each "
"`rust_static_library`. Just add"
msgstr ""
"En Chromium, definimos un `#[cxx::bridge] mod` independiente para cada nodo "
@@ -16630,15 +16338,14 @@ msgstr "\"ui/base/my_rust_file.rs.h\""
#: src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md
msgid ""
-"You will find some utility functions in `//base` to convert to/from Chromium "
-"C++ types to CXX Rust types --- for example [`SpanToRustSlice`](https://"
-"source.chromium.org/chromium/chromium/src/+/main:base/containers/span_rust.h;"
-"l=21)."
+"You will find some utility functions in `//base` to convert to/from Chromium C+"
+"+ types to CXX Rust types --- for example [`SpanToRustSlice`](https://source."
+"chromium.org/chromium/chromium/src/+/main:base/containers/span_rust.h;l=21)."
msgstr ""
-"Encontrarás algunas funciones de utilidad en `//base` para convertir a y "
-"desde los tipos de Chromium C++ en tipos CXX de Rust y viceversa. Por "
-"ejemplo, [`SpanToRustSlice`](https://source.chromium.org/chromium/chromium/"
-"src/+/main:base/containers/span_rust.h;l=21)."
+"Encontrarás algunas funciones de utilidad en `//base` para convertir a y desde "
+"los tipos de Chromium C++ en tipos CXX de Rust y viceversa. Por ejemplo, "
+"[`SpanToRustSlice`](https://source.chromium.org/chromium/chromium/src/+/main:"
+"base/containers/span_rust.h;l=21)."
#: src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md
msgid "Students may ask --- why do we still need `allow_unsafe = true`?"
@@ -16649,34 +16356,34 @@ msgstr ""
#: src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md
msgid ""
"The broad answer is that no C/C++ code is \"safe\" by the normal Rust "
-"standards. Calling back and forth to C/C++ from Rust may do arbitrary things "
-"to memory, and compromise the safety of Rust's own data layouts. Presence of "
-"_too many_ `unsafe` keywords in C/C++ interop can harm the signal-to-noise "
-"ratio of such a keyword, and is [controversial](https://steveklabnik.com/"
-"writing/the-cxx-debate), but strictly, bringing any foreign code into a Rust "
-"binary can cause unexpected behavior from Rust's perspective."
-msgstr ""
-"La respuesta es que ningún código de C o C++ es \"seguro\" según los "
-"estándares normales de Rust. Si se llama a C o C++ desde Rust, se pueden "
-"llevar a cabo acciones arbitrarias en la memoria y se puede poner en peligro "
-"la seguridad de los propios diseños de datos de Rust. La presencia de "
-"_demasiadas_ palabras clave `unsafe` en la interoperabilidad de C o C++ "
-"puede perjudicar la relación señal-ruido de dicha palabra clave, algo "
-"[polémico](https://steveklabnik.com/writing/the-cxx-debate). No obstante, en "
-"términos estrictos, introducir código externo en un binario de Rust puede "
-"provocar un comportamiento inesperado desde el punto de vista de Rust."
+"standards. Calling back and forth to C/C++ from Rust may do arbitrary things to "
+"memory, and compromise the safety of Rust's own data layouts. Presence of _too "
+"many_ `unsafe` keywords in C/C++ interop can harm the signal-to-noise ratio of "
+"such a keyword, and is [controversial](https://steveklabnik.com/writing/the-cxx-"
+"debate), but strictly, bringing any foreign code into a Rust binary can cause "
+"unexpected behavior from Rust's perspective."
+msgstr ""
+"La respuesta es que ningún código de C o C++ es \"seguro\" según los estándares "
+"normales de Rust. Si se llama a C o C++ desde Rust, se pueden llevar a cabo "
+"acciones arbitrarias en la memoria y se puede poner en peligro la seguridad de "
+"los propios diseños de datos de Rust. La presencia de _demasiadas_ palabras "
+"clave `unsafe` en la interoperabilidad de C o C++ puede perjudicar la relación "
+"señal-ruido de dicha palabra clave, algo [polémico](https://steveklabnik.com/"
+"writing/the-cxx-debate). No obstante, en términos estrictos, introducir código "
+"externo en un binario de Rust puede provocar un comportamiento inesperado desde "
+"el punto de vista de Rust."
#: src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md
msgid ""
"The narrow answer lies in the diagram at the top of [this page](../"
"interoperability-with-cpp.md) --- behind the scenes, CXX generates Rust "
-"`unsafe` and `extern \"C\"` functions just like we did manually in the "
-"previous section."
+"`unsafe` and `extern \"C\"` functions just like we did manually in the previous "
+"section."
msgstr ""
-"La respuesta exacta se encuentra en el diagrama de la parte superior de "
-"[esta página](../Interop-with-cpp.md): en segundo plano, CXX genera "
-"funciones de Rust `unsafe` y `extern \"C\"`, igual que hicimos de forma "
-"manual en la sección anterior."
+"La respuesta exacta se encuentra en el diagrama de la parte superior de [esta "
+"página](../Interop-with-cpp.md): en segundo plano, CXX genera funciones de Rust "
+"`unsafe` y `extern \"C\"`, igual que hicimos de forma manual en la sección "
+"anterior."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid "Exercise: Interoperability with C++"
@@ -16688,21 +16395,21 @@ msgstr "Primera parte"
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
-"In the Rust file you previously created, add a `#[cxx::bridge]` which "
-"specifies a single function, to be called from C++, called "
-"`hello_from_rust`, taking no parameters and returning no value."
+"In the Rust file you previously created, add a `#[cxx::bridge]` which specifies "
+"a single function, to be called from C++, called `hello_from_rust`, taking no "
+"parameters and returning no value."
msgstr ""
-"En el archivo de Rust que has creado anteriormente, añade un `#[cxx::"
-"bridge]`, que especifica una sola función, denominada `hello_from_rust`, a "
-"la que se llamará desde C++, sin parámetros y sin devolver ningún valor."
+"En el archivo de Rust que has creado anteriormente, añade un `#[cxx::bridge]`, "
+"que especifica una sola función, denominada `hello_from_rust`, a la que se "
+"llamará desde C++, sin parámetros y sin devolver ningún valor."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
"Modify your previous `hello_from_rust` function to remove `extern \"C\"` and "
"`#[no_mangle]`. This is now just a standard Rust function."
msgstr ""
-"Modifica la función `hello_from_rust` anterior para eliminar `extern \"C\"` "
-"y `#[no_mangle]`. Ahora es solo una función estándar de Rust."
+"Modifica la función `hello_from_rust` anterior para eliminar `extern \"C\"` y "
+"`#[no_mangle]`. Ahora es solo una función estándar de Rust."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid "Modify your `gn` target to build these bindings."
@@ -16710,8 +16417,8 @@ msgstr "Modifica el elemento de destino de `gn` para compilar estos enlaces."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
-"In your C++ code, remove the forward-declaration of `hello_from_rust`. "
-"Instead, include the generated header file."
+"In your C++ code, remove the forward-declaration of `hello_from_rust`. Instead, "
+"include the generated header file."
msgstr ""
"En el código C++, elimina la declaración de `hello_from_rust`. En su lugar, "
"incluye el archivo de encabezado que se ha generado."
@@ -16746,8 +16453,7 @@ msgid ""
"You'll need to declare your C++ function in that new header file."
msgstr ""
"Un archivo de encabezado adicional que puedes `include!` desde tu `cxx::"
-"bridge`. Deberás declarar la función de C++ en el nuevo archivo de "
-"encabezado."
+"bridge`. Deberás declarar la función de C++ en el nuevo archivo de encabezado."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
@@ -16755,18 +16461,16 @@ msgid ""
"`unsafe` keyword in your `#[cxx::bridge]` [as described here](https://cxx.rs/"
"extern-c++.html#functions-and-member-functions)."
msgstr ""
-"Un bloque `unsafe` para llamar a una función de este tipo, o bien "
-"especificar la palabra clave `unsafe` en el `#[cxx::bridge]`, [como se "
-"describe aquí](https://cxx.rs/extern-c++.html#functions-and-member-"
-"functions)."
+"Un bloque `unsafe` para llamar a una función de este tipo, o bien especificar "
+"la palabra clave `unsafe` en el `#[cxx::bridge]`, [como se describe aquí]"
+"(https://cxx.rs/extern-c++.html#functions-and-member-functions)."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
-"You may also need to `#include \"third_party/rust/cxx/v1/crate/include/cxx."
-"h\"`"
+"You may also need to `#include \"third_party/rust/cxx/v1/crate/include/cxx.h\"`"
msgstr ""
-"Es posible que también tengas que incluir `#include \"third_party/rust/cxx/"
-"v1/crate/include/cxx.h\"`"
+"Es posible que también tengas que incluir `#include \"third_party/rust/cxx/v1/"
+"crate/include/cxx.h\"`"
#: src/exercises/chromium/interoperability-with-cpp.md
msgid "Pass a C++ string from C++ into Rust."
@@ -16789,24 +16493,24 @@ msgid ""
"Intentionally get the C++ function signatures mismatched from the `#[cxx::"
"bridge]`, and get used to the errors you see."
msgstr ""
-"Obtén de forma intencional las firmas de la función de C++ que no coincidan "
-"con el `#[cxx::bridge]` y familiarízate con los errores que veas."
+"Obtén de forma intencional las firmas de la función de C++ que no coincidan con "
+"el `#[cxx::bridge]` y familiarízate con los errores que veas."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
-"Pass a `std::unique_ptr` of some type from C++ into Rust, so that Rust can "
-"own some C++ object."
+"Pass a `std::unique_ptr` of some type from C++ into Rust, so that Rust can own "
+"some C++ object."
msgstr ""
-"Transfiere un `std::unique_ptr` de algún tipo de C++ a Rust, para que a Rust "
-"le pertenezca algún objeto de C++."
+"Transfiere un `std::unique_ptr` de algún tipo de C++ a Rust, para que a Rust le "
+"pertenezca algún objeto de C++."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
-"Create a Rust object and pass it into C++, so that C++ owns it. (Hint: you "
-"need a `Box`)."
+"Create a Rust object and pass it into C++, so that C++ owns it. (Hint: you need "
+"a `Box`)."
msgstr ""
-"Crea un objeto de Rust y transmítelo a C++ para que sea su propietario. "
-"(Nota: necesitas utilizar un `Box`)."
+"Crea un objeto de Rust y transmítelo a C++ para que sea su propietario. (Nota: "
+"necesitas utilizar un `Box`)."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid "Declare some methods on a C++ type. Call them from Rust."
@@ -16826,10 +16530,10 @@ msgid ""
"couple of use-cases for Rust in Chromium where the interface would be "
"sufficiently simple. Sketch how you might define that interface."
msgstr ""
-"Ahora que conoces los puntos fuertes y las limitaciones de la "
-"interoperabilidad de CXX, piensa en un par de casos prácticos de Rust en "
-"Chromium en los que la interfaz sea bastante sencilla. Haz un boceto sobre "
-"cómo definirías esa interfaz."
+"Ahora que conoces los puntos fuertes y las limitaciones de la interoperabilidad "
+"de CXX, piensa en un par de casos prácticos de Rust en Chromium en los que la "
+"interfaz sea bastante sencilla. Haz un boceto sobre cómo definirías esa "
+"interfaz."
#: src/exercises/chromium/interoperability-with-cpp.md
#, fuzzy
@@ -16852,27 +16556,26 @@ msgstr "Estas son algunas de las preguntas que pueden surgir:"
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
-"I'm seeing a problem initializing a variable of type X with type Y, where X "
-"and Y are both function types. This is because your C++ function doesn't "
-"quite match the declaration in your `cxx::bridge`."
+"I'm seeing a problem initializing a variable of type X with type Y, where X and "
+"Y are both function types. This is because your C++ function doesn't quite "
+"match the declaration in your `cxx::bridge`."
msgstr ""
-"Veo un problema al inicializar una variable de tipo X con el tipo Y, donde X "
-"e Y son tipos de funciones. Esto se debe a que la función de C++ no coincide "
+"Veo un problema al inicializar una variable de tipo X con el tipo Y, donde X e "
+"Y son tipos de funciones. Esto se debe a que la función de C++ no coincide "
"exactamente con la declaración de `cxx::bridge`."
#: src/exercises/chromium/interoperability-with-cpp.md
msgid ""
"I seem to be able to freely convert C++ references into Rust references. "
"Doesn't that risk UB? For CXX's _opaque_ types, no, because they are zero-"
-"sized. For CXX trivial types yes, it's _possible_ to cause UB, although "
-"CXX's design makes it quite difficult to craft such an example."
+"sized. For CXX trivial types yes, it's _possible_ to cause UB, although CXX's "
+"design makes it quite difficult to craft such an example."
msgstr ""
"Parece que puedo convertir libremente referencias de C++ en referencias de "
-"Rust. ¿Eso no supone ningún riesgo de comportamiento indefinido? En el caso "
-"de los tipos _opacos_ de CXX, no, porque su tamaño es cero. Sí supondría un "
-"problema de comportamiento indefinido en el caso de los tipos triviales de "
-"CXX, aunque el diseño de CXX hace que sea bastante difícil crear un ejemplo "
-"así."
+"Rust. ¿Eso no supone ningún riesgo de comportamiento indefinido? En el caso de "
+"los tipos _opacos_ de CXX, no, porque su tamaño es cero. Sí supondría un "
+"problema de comportamiento indefinido en el caso de los tipos triviales de CXX, "
+"aunque el diseño de CXX hace que sea bastante difícil crear un ejemplo así."
#: src/chromium/adding-third-party-crates.md
msgid ""
@@ -16881,8 +16584,8 @@ msgid ""
"they do!"
msgstr ""
"Las bibliotecas de Rust se llaman \"crates\" y se encuentran en [crates.io]"
-"(https://crates.io). _Es habitual_ que los crates de Rust dependen los unos "
-"de otros."
+"(https://crates.io). _Es habitual_ que los crates de Rust dependen los unos de "
+"otros."
#: src/chromium/adding-third-party-crates.md
msgid "Property"
@@ -16942,8 +16645,8 @@ msgstr ""
#: src/chromium/adding-third-party-crates.md
msgid ""
-"... but, crates typically have transitive dependencies, so you will likely "
-"have to bring in multiple libraries."
+"... but, crates typically have transitive dependencies, so you will likely have "
+"to bring in multiple libraries."
msgstr ""
"... pero los crates suelen tener dependencias transitivas, por lo que es "
"probable que tengas que introducir varias bibliotecas."
@@ -16970,15 +16673,14 @@ msgstr "Configurar el archivo `Cargo.toml` para añadir crates"
#: src/chromium/adding-third-party-crates/configuring-cargo-toml.md
msgid ""
-"Chromium has a single set of centrally-managed direct crate dependencies. "
-"These are managed through a single [`Cargo.toml`](https://source.chromium."
-"org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/Cargo."
-"toml):"
+"Chromium has a single set of centrally-managed direct crate dependencies. These "
+"are managed through a single [`Cargo.toml`](https://source.chromium.org/"
+"chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/Cargo.toml):"
msgstr ""
-"Chromium tiene un único conjunto de dependencias directas de crate "
-"gestionadas de forma centralizada. Se gestionan mediante un único elemento "
-"[`Cargo.toml`](https://source.chromium.org/chromium/chromium/src/+/main:"
-"third_party/rust/chromium_crates_io/Cargo.toml):"
+"Chromium tiene un único conjunto de dependencias directas de crate gestionadas "
+"de forma centralizada. Se gestionan mediante un único elemento [`Cargo.toml`]"
+"(https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/"
+"chromium_crates_io/Cargo.toml):"
#: src/chromium/adding-third-party-crates/configuring-cargo-toml.md
msgid ""
@@ -17001,23 +16703,23 @@ msgstr ""
#: src/chromium/adding-third-party-crates/configuring-cargo-toml.md
msgid ""
"As with any other `Cargo.toml`, you can specify [more details about the "
-"dependencies](https://doc.rust-lang.org/cargo/reference/specifying-"
-"dependencies.html) --- most commonly, you'll want to specify the `features` "
-"that you wish to enable in the crate."
+"dependencies](https://doc.rust-lang.org/cargo/reference/specifying-dependencies."
+"html) --- most commonly, you'll want to specify the `features` that you wish to "
+"enable in the crate."
msgstr ""
-"Al igual que con cualquier otro archivo `Cargo.toml`, puedes especificar "
-"[más información sobre las dependencias](https://doc.rust-lang.org/cargo/"
-"reference/specifying-dependencies.html). Lo más habitual es que se "
-"especifiquen las funciones `features` que se quieran habilitar en el crate."
+"Al igual que con cualquier otro archivo `Cargo.toml`, puedes especificar [más "
+"información sobre las dependencias](https://doc.rust-lang.org/cargo/reference/"
+"specifying-dependencies.html). Lo más habitual es que se especifiquen las "
+"funciones `features` que se quieran habilitar en el crate."
#: src/chromium/adding-third-party-crates/configuring-cargo-toml.md
msgid ""
"When adding a crate to Chromium, you'll often need to provide some extra "
"information in an additional file, `gnrt_config.toml`, which we'll meet next."
msgstr ""
-"Al añadir un crate a Chromium, a menudo será necesario proporcionar "
-"información adicional en un archivo adicional, `gnrt_config.toml`, que "
-"veremos a continuación."
+"Al añadir un crate a Chromium, a menudo será necesario proporcionar información "
+"adicional en un archivo adicional, `gnrt_config.toml`, que veremos a "
+"continuación."
#: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md
msgid ""
@@ -17025,18 +16727,17 @@ msgid ""
"chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/gnrt_config."
"toml). This contains Chromium-specific extensions to crate handling."
msgstr ""
-"Junto a `Cargo.toml`, se encuentra [`gnrt_config.toml`](https://source."
-"chromium.org/chromium/chromium/src/+/main:third_party/rust/"
-"chromium_crates_io/gnrt_config.toml). Contiene extensiones específicas de "
-"Chromium para la gestión de crates."
+"Junto a `Cargo.toml`, se encuentra [`gnrt_config.toml`](https://source.chromium."
+"org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/"
+"gnrt_config.toml). Contiene extensiones específicas de Chromium para la gestión "
+"de crates."
#: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md
msgid ""
-"If you add a new crate, you should specify at least the `group`. This is one "
-"of:"
+"If you add a new crate, you should specify at least the `group`. This is one of:"
msgstr ""
-"Si añades un nuevo crate, debes especificar al menos el atributo `group`. "
-"Puede ser uno de los siguientes:"
+"Si añades un nuevo crate, debes especificar al menos el atributo `group`. Puede "
+"ser uno de los siguientes:"
#: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md
#: src/chromium/adding-third-party-crates/depending-on-a-crate.md
@@ -17045,8 +16746,8 @@ msgstr "Por ejemplo:"
#: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md
msgid ""
-"Depending on the crate source code layout, you may also need to use this "
-"file to specify where its `LICENSE` file(s) can be found."
+"Depending on the crate source code layout, you may also need to use this file "
+"to specify where its `LICENSE` file(s) can be found."
msgstr ""
"En función del diseño del código fuente del crate, es posible que también "
"tengas que usar este archivo para especificar dónde se pueden encontrar los "
@@ -17054,8 +16755,8 @@ msgstr ""
#: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md
msgid ""
-"Later, we'll see some other things you will need to configure in this file "
-"to resolve problems."
+"Later, we'll see some other things you will need to configure in this file to "
+"resolve problems."
msgstr ""
"Más adelante, veremos otros elementos que tendrás que configurar en este "
"archivo para solucionar los problemas."
@@ -17064,8 +16765,7 @@ msgstr ""
msgid ""
"A tool called `gnrt` knows how to download crates and how to generate `BUILD."
"gn` rules."
-msgstr ""
-"La herramienta `gnrt` puede descargar crates y generar reglas `BUILD.gn`."
+msgstr "La herramienta `gnrt` puede descargar crates y generar reglas `BUILD.gn`."
#: src/chromium/adding-third-party-crates/downloading-crates.md
msgid "To start, download the crate you want like this:"
@@ -17073,15 +16773,14 @@ msgstr "Para empezar, descarga el crate de esta forma:"
#: src/chromium/adding-third-party-crates/downloading-crates.md
msgid ""
-"Although the `gnrt` tool is part of the Chromium source code, by running "
-"this command you will be downloading and running its dependencies from "
-"`crates.io`. See [the earlier section](../cargo.md) discussing this security "
-"decision."
+"Although the `gnrt` tool is part of the Chromium source code, by running this "
+"command you will be downloading and running its dependencies from `crates.io`. "
+"See [the earlier section](../cargo.md) discussing this security decision."
msgstr ""
"Aunque la herramienta `gnrt` forma parte del código fuente de Chromium, al "
"ejecutar este comando, se descargarán y ejecutarán sus dependencias desde "
-"`crates.io`. Consulta [la sección anterior](../cargo.md) sobre la decisión "
-"de seguridad."
+"`crates.io`. Consulta [la sección anterior](../cargo.md) sobre la decisión de "
+"seguridad."
#: src/chromium/adding-third-party-crates/downloading-crates.md
msgid "This `vendor` command may download:"
@@ -17111,15 +16810,14 @@ msgid ""
msgstr ""
"Chromium mantiene parches para algunos crates, que se conservan en `//"
"third_party/rust/chromium_crates_io/patches`. Se volverán a aplicar "
-"automáticamente pero, si no se puede aplicar el parche, es posible que "
-"tengas que realizar una acción manual."
+"automáticamente pero, si no se puede aplicar el parche, es posible que tengas "
+"que realizar una acción manual."
#: src/chromium/adding-third-party-crates/generating-gn-build-rules.md
-msgid ""
-"Once you've downloaded the crate, generate the `BUILD.gn` files like this:"
+msgid "Once you've downloaded the crate, generate the `BUILD.gn` files like this:"
msgstr ""
-"Una vez que hayas descargado el crate, genera los archivos `BUILD.gn` como "
-"se indica a continuación:"
+"Una vez que hayas descargado el crate, genera los archivos `BUILD.gn` como se "
+"indica a continuación:"
#: src/chromium/adding-third-party-crates/generating-gn-build-rules.md
msgid "Now run `git status`. You should find:"
@@ -17138,8 +16836,8 @@ msgid ""
"At least one new `BUILD.gn` in `third_party/rust//v`"
msgstr ""
-"Al menos un nuevo `BUILD.gn` en `third_party/rust//v`."
+"Al menos un nuevo `BUILD.gn` en `third_party/rust//v`."
#: src/chromium/adding-third-party-crates/generating-gn-build-rules.md
msgid "An appropriate `README.chromium`"
@@ -17147,8 +16845,8 @@ msgstr "Un archivo `README.chromium` adecuado."
#: src/chromium/adding-third-party-crates/generating-gn-build-rules.md
msgid ""
-"The \"major semver version\" is a [Rust \"semver\" version number](https://"
-"doc.rust-lang.org/cargo/reference/semver.html)."
+"The \"major semver version\" is a [Rust \"semver\" version number](https://doc."
+"rust-lang.org/cargo/reference/semver.html)."
msgstr ""
"La \"versión semver mayor\" es un [número de versión \"semver\" de Rust]"
"(https://doc.rust-lang.org/cargo/reference/semver.html)."
@@ -17162,27 +16860,26 @@ msgstr ""
#: src/chromium/adding-third-party-crates/generating-gn-build-rules.md
msgid ""
-"Talk a little about semver --- and specifically the way that in Chromium "
-"it's to allow multiple incompatible versions of a crate, which is "
-"discouraged but sometimes necessary in the Cargo ecosystem."
+"Talk a little about semver --- and specifically the way that in Chromium it's "
+"to allow multiple incompatible versions of a crate, which is discouraged but "
+"sometimes necessary in the Cargo ecosystem."
msgstr ""
-"Habla un poco sobre el semver y, concretamente, sobre la forma en que "
-"Chromium permite que existan varias versiones incompatibles de un crate. No "
-"es una situación recomendable, pero a veces es necesaria en el ecosistema de "
-"Cargo."
+"Habla un poco sobre el semver y, concretamente, sobre la forma en que Chromium "
+"permite que existan varias versiones incompatibles de un crate. No es una "
+"situación recomendable, pero a veces es necesaria en el ecosistema de Cargo."
#: src/chromium/adding-third-party-crates/resolving-problems.md
msgid ""
"If your build fails, it may be because of a `build.rs`: programs which do "
-"arbitrary things at build time. This is fundamentally at odds with the "
-"design of `gn` and `ninja` which aim for static, deterministic, build rules "
-"to maximize parallelism and repeatability of builds."
+"arbitrary things at build time. This is fundamentally at odds with the design "
+"of `gn` and `ninja` which aim for static, deterministic, build rules to "
+"maximize parallelism and repeatability of builds."
msgstr ""
-"Si la compilación falla, puede deberse a un `build.rs`, programas que llevan "
-"a cabo acciones arbitrarias durante la compilación. Esto difiere de los "
-"diseños de `gn` y `ninja`, que tienen como objetivo crear reglas de "
-"compilación estáticas y deterministas para maximizar el paralelismo y la "
-"repetibilidad de las compilaciones."
+"Si la compilación falla, puede deberse a un `build.rs`, programas que llevan a "
+"cabo acciones arbitrarias durante la compilación. Esto difiere de los diseños "
+"de `gn` y `ninja`, que tienen como objetivo crear reglas de compilación "
+"estáticas y deterministas para maximizar el paralelismo y la repetibilidad de "
+"las compilaciones."
#: src/chromium/adding-third-party-crates/resolving-problems.md
msgid ""
@@ -17248,8 +16945,8 @@ msgid ""
"Fortunately, most crates don't contain a build script, and fortunately, most "
"build scripts only do the top two actions."
msgstr ""
-"Por suerte, la mayoría de los crates no contienen scripts de compilación y "
-"la mayoría de estos scripts de compilación solo llevan a cabo dos acciones "
+"Por suerte, la mayoría de los crates no contienen scripts de compilación y la "
+"mayoría de estos scripts de compilación solo llevan a cabo dos acciones "
"principales."
#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md
@@ -17262,17 +16959,16 @@ msgstr ""
#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md
msgid ""
-"If so, modify [`gnrt_config.toml`](../configuring-gnrt-config-toml.md) to "
-"add `build-script-outputs` to the crate. If this is a transitive dependency, "
-"that is, one on which Chromium code should not directly depend, also add "
-"`allow-first-party-usage=false`. There are several examples already in that "
-"file:"
+"If so, modify [`gnrt_config.toml`](../configuring-gnrt-config-toml.md) to add "
+"`build-script-outputs` to the crate. If this is a transitive dependency, that "
+"is, one on which Chromium code should not directly depend, also add `allow-"
+"first-party-usage=false`. There are several examples already in that file:"
msgstr ""
"Si es así, modifica [`gnrt_config.toml`](../configuring-gnrt-config-toml.md) "
"para añadir `build-script-outputs` al crate. Si se trata de una dependencia "
-"transitiva, de la que el código Chromium no debería depender de forma "
-"directa, añade también `allow-first-party-usage=false`. En ese archivo ya "
-"hay varios ejemplos:"
+"transitiva, de la que el código Chromium no debería depender de forma directa, "
+"añade también `allow-first-party-usage=false`. En ese archivo ya hay varios "
+"ejemplos:"
#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md
msgid ""
@@ -17291,29 +16987,28 @@ msgstr ""
#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md
msgid ""
"Now rerun [`gnrt.py -- gen`](../generating-gn-build-rules.md) to regenerate "
-"`BUILD.gn` files to inform ninja that this particular output file is input "
-"to subsequent build steps."
+"`BUILD.gn` files to inform ninja that this particular output file is input to "
+"subsequent build steps."
msgstr ""
"A continuación, vuelve a ejecutar [`gnrt.py -- gen`](../generating-gn-build-"
-"rules.md) para generar de nuevo los archivos `build.gn` e informar al ninja "
-"de que este archivo de salida concreto se usa como entrada en los pasos de "
+"rules.md) para generar de nuevo los archivos `build.gn` e informar al ninja de "
+"que este archivo de salida concreto se usa como entrada en los pasos de "
"compilación posteriores."
#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md
msgid ""
-"Some crates use the [`cc`](https://crates.io/crates/cc) crate to build and "
-"link C/C++ libraries. Other crates parse C/C++ using [`bindgen`](https://"
-"crates.io/crates/bindgen) within their build scripts. These actions can't be "
-"supported in a Chromium context --- our gn, ninja and LLVM build system is "
-"very specific in expressing relationships between build actions."
+"Some crates use the [`cc`](https://crates.io/crates/cc) crate to build and link "
+"C/C++ libraries. Other crates parse C/C++ using [`bindgen`](https://crates.io/"
+"crates/bindgen) within their build scripts. These actions can't be supported in "
+"a Chromium context --- our gn, ninja and LLVM build system is very specific in "
+"expressing relationships between build actions."
msgstr ""
-"Algunos crates usan el crate [`cc`](https://crates.io/crates/cc) para "
-"compilar y vincular bibliotecas de C y C++. Otros crates analizan C y C++ "
-"mediante [`bindgen`](https://crates.io/crates/bindgen) en sus scripts de "
-"compilación. Estas acciones no se pueden llevar a cabo en un contexto de "
-"Chromium, ya que nuestro sistema de compilación gn, ninja y LLVM es muy "
-"específico a la hora de expresar las relaciones entre las acciones de "
-"compilación."
+"Algunos crates usan el crate [`cc`](https://crates.io/crates/cc) para compilar "
+"y vincular bibliotecas de C y C++. Otros crates analizan C y C++ mediante "
+"[`bindgen`](https://crates.io/crates/bindgen) en sus scripts de compilación. "
+"Estas acciones no se pueden llevar a cabo en un contexto de Chromium, ya que "
+"nuestro sistema de compilación gn, ninja y LLVM es muy específico a la hora de "
+"expresar las relaciones entre las acciones de compilación."
#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md
msgid "So, your options are:"
@@ -17329,22 +17024,22 @@ msgstr "Aplicar un parche al crate."
#: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md
msgid ""
-"Patches should be kept in `third_party/rust/chromium_crates_io/patches/"
-"` - see for example the [patches against the `cxx` crate](https://"
-"source.chromium.org/chromium/chromium/src/+/main:third_party/rust/"
-"chromium_crates_io/patches/cxx/) - and will be applied automatically by "
-"`gnrt` each time it upgrades the crate."
+"Patches should be kept in `third_party/rust/chromium_crates_io/patches/` "
+"- see for example the [patches against the `cxx` crate](https://source.chromium."
+"org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/patches/"
+"cxx/) - and will be applied automatically by `gnrt` each time it upgrades the "
+"crate."
msgstr ""
"Los parches deben guardarse en `third_party/rust/chromium_crates_io/patches/"
"`, como los [parches para el crate `cxx`](https://source.chromium.org/"
-"chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/patches/"
-"cxx/), y `gnrt` lo aplicará automáticamente cada vez que actualice el crate."
+"chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/patches/cxx/), "
+"y `gnrt` lo aplicará automáticamente cada vez que actualice el crate."
#: src/chromium/adding-third-party-crates/depending-on-a-crate.md
msgid ""
-"Once you've added a third-party crate and generated build rules, depending "
-"on a crate is simple. Find your `rust_static_library` target, and add a "
-"`dep` on the `:lib` target within your crate."
+"Once you've added a third-party crate and generated build rules, depending on a "
+"crate is simple. Find your `rust_static_library` target, and add a `dep` on the "
+"`:lib` target within your crate."
msgstr ""
"Una vez que se ha añadido un crate de terceros y se han generado reglas de "
"compilación, utilizar un crate es sencillo. Busca tu elemento de destino "
@@ -17358,15 +17053,13 @@ msgstr "Específicamente:"
msgid ""
"```bob\n"
" +------------+ +----------------------+\n"
-"\"//third_party/rust\" | crate name | \"/v\" | major semver version | \":"
-"lib\"\n"
+"\"//third_party/rust\" | crate name | \"/v\" | major semver version | \":lib\"\n"
" +------------+ +----------------------+\n"
"```"
msgstr ""
"```bob\n"
" +------------+ +----------------------+\n"
-"\"//third_party/rust\" | crate name | \"/v\" | major semver version | \":"
-"lib\"\n"
+"\"//third_party/rust\" | crate name | \"/v\" | major semver version | \":lib\"\n"
" +------------+ +----------------------+\n"
"```"
@@ -17396,10 +17089,10 @@ msgstr "Auditoría de Crates de Terceros"
msgid ""
"Adding new libraries is subject to Chromium's standard [policies](https://"
"chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust."
-"md#Third_party-review), but of course also subject to security review. As "
-"you may be bringing in not just a single crate but also transitive "
-"dependencies, there may be a lot of code to review. On the other hand, safe "
-"Rust code can have limited negative side effects. How should you review it?"
+"md#Third_party-review), but of course also subject to security review. As you "
+"may be bringing in not just a single crate but also transitive dependencies, "
+"there may be a lot of code to review. On the other hand, safe Rust code can "
+"have limited negative side effects. How should you review it?"
msgstr ""
"Añadir nuevas bibliotecas está sujeto a las [políticas](https://chromium."
"googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#Third_party-"
@@ -17411,28 +17104,27 @@ msgstr ""
#: src/chromium/adding-third-party-crates/reviews-and-audits.md
msgid ""
-"Over time Chromium aims to move to a process based around [cargo vet]"
-"(https://mozilla.github.io/cargo-vet/)."
+"Over time Chromium aims to move to a process based around [cargo vet](https://"
+"mozilla.github.io/cargo-vet/)."
msgstr ""
"Con el tiempo, Chromium intentará adoptar un proceso basado en [cargo vet]"
"(https://mozilla.github.io/cargo-vet/)."
#: src/chromium/adding-third-party-crates/reviews-and-audits.md
-msgid ""
-"Meanwhile, for each new crate addition, we are checking for the following:"
+msgid "Meanwhile, for each new crate addition, we are checking for the following:"
msgstr "Mientras tanto, se debe hacer lo siguiente para cada nuevo crate:"
#: src/chromium/adding-third-party-crates/reviews-and-audits.md
msgid ""
-"Understand why each crate is used. What's the relationship between crates? "
-"If the build system for each crate contains a `build.rs` or procedural "
-"macros, work out what they're for. Are they compatible with the way Chromium "
-"is normally built?"
+"Understand why each crate is used. What's the relationship between crates? If "
+"the build system for each crate contains a `build.rs` or procedural macros, "
+"work out what they're for. Are they compatible with the way Chromium is "
+"normally built?"
msgstr ""
-"Entender por qué se usa cada crate. ¿Cuál es la relación entre los crates? "
-"Si el sistema de compilación de cada crate contiene un archivo `build.rs` o "
-"macros de procedimiento, averigua para qué sirven. ¿Son compatibles con la "
-"forma en la que se compila normalmente Chromium?"
+"Entender por qué se usa cada crate. ¿Cuál es la relación entre los crates? Si "
+"el sistema de compilación de cada crate contiene un archivo `build.rs` o macros "
+"de procedimiento, averigua para qué sirven. ¿Son compatibles con la forma en la "
+"que se compila normalmente Chromium?"
#: src/chromium/adding-third-party-crates/reviews-and-audits.md
msgid "Check each crate seems to be reasonably well maintained"
@@ -17452,13 +17144,13 @@ msgstr ""
#: src/chromium/adding-third-party-crates/reviews-and-audits.md
msgid ""
-"Ensure any `unsafe` code is good enough for the [Rule of Two](https://"
-"chromium.googlesource.com/chromium/src/+/main/docs/security/rule-of-2."
-"md#unsafe-code-in-safe-languages)"
+"Ensure any `unsafe` code is good enough for the [Rule of Two](https://chromium."
+"googlesource.com/chromium/src/+/main/docs/security/rule-of-2.md#unsafe-code-in-"
+"safe-languages)"
msgstr ""
-"Asegúrate de que cualquier código `unsafe` sea adecuado para la [Regla de "
-"dos](https://chromium.googlesource.com/chromium/src/+/main/docs/security/"
-"rule-of-2.md#unsafe-code-in-safe-languages)."
+"Asegúrate de que cualquier código `unsafe` sea adecuado para la [Regla de dos]"
+"(https://chromium.googlesource.com/chromium/src/+/main/docs/security/rule-of-2."
+"md#unsafe-code-in-safe-languages)."
#: src/chromium/adding-third-party-crates/reviews-and-audits.md
msgid "Check for any use of `fs` or `net` APIs"
@@ -17466,22 +17158,21 @@ msgstr "Comprobar si se usan las APIs `fs` o `net`."
#: src/chromium/adding-third-party-crates/reviews-and-audits.md
msgid ""
-"Read all the code at a sufficient level to look for anything out of place "
-"that might have been maliciously inserted. (You can't realistically aim for "
-"100% perfection here: there's often just too much code.)"
+"Read all the code at a sufficient level to look for anything out of place that "
+"might have been maliciously inserted. (You can't realistically aim for 100% "
+"perfection here: there's often just too much code.)"
msgstr ""
-"Leer todo el código con suficiente profundidad para comprobar si hay algo "
-"fuera de lugar que pueda haberse insertado de forma malintencionada. (Es "
-"imposible hacerlo perfecto, ya que, a menudo, hay demasiado código)."
+"Leer todo el código con suficiente profundidad para comprobar si hay algo fuera "
+"de lugar que pueda haberse insertado de forma malintencionada. (Es imposible "
+"hacerlo perfecto, ya que, a menudo, hay demasiado código)."
#: src/chromium/adding-third-party-crates/reviews-and-audits.md
msgid ""
-"These are just guidelines --- work with reviewers from `security@chromium."
-"org` to work out the right way to become confident of the crate."
+"These are just guidelines --- work with reviewers from `security@chromium.org` "
+"to work out the right way to become confident of the crate."
msgstr ""
-"Estas son solo algunas directrices, trabaja con revisores de "
-"`security@chromium.org` para determinar la forma adecuada de utilizar los "
-"crates."
+"Estas son solo algunas directrices, trabaja con revisores de `security@chromium."
+"org` para determinar la forma adecuada de utilizar los crates."
#: src/chromium/adding-third-party-crates/checking-in.md
msgid "Checking Crates into Chromium Source Code"
@@ -17509,11 +17200,11 @@ msgstr "Añade también un archivo `OWNERS` en esta última ubicación."
#: src/chromium/adding-third-party-crates/checking-in.md
msgid ""
-"You should land all this, along with your `Cargo.toml` and `gnrt_config."
-"toml` changes, into the Chromium repo."
+"You should land all this, along with your `Cargo.toml` and `gnrt_config.toml` "
+"changes, into the Chromium repo."
msgstr ""
-"Deberías llevar todo esto, junto con los cambios de `Cargo.toml` y "
-"`gnrt_config.toml`, al repositorio de Chromium."
+"Deberías llevar todo esto, junto con los cambios de `Cargo.toml` y `gnrt_config."
+"toml`, al repositorio de Chromium."
#: src/chromium/adding-third-party-crates/checking-in.md
msgid ""
@@ -17527,58 +17218,57 @@ msgstr ""
msgid ""
"As you do so, you might find presubmit checks fail because of non-inclusive "
"language. This is because Rust crate data tends to include names of git "
-"branches, and many projects still use non-inclusive terminology there. So "
-"you may need to run:"
+"branches, and many projects still use non-inclusive terminology there. So you "
+"may need to run:"
msgstr ""
"Si lo haces, es posible que veas que las comprobaciones presubmit no se han "
-"completado porque incluyen lenguaje no inclusivo. Esto se debe a que los "
-"datos de crate de Rust suelen incluir nombres de ramas en git y muchos "
-"proyectos siguen empleando terminología no inclusiva. Por lo tanto, puede "
-"que debas ejecutar lo siguiente:"
+"completado porque incluyen lenguaje no inclusivo. Esto se debe a que los datos "
+"de crate de Rust suelen incluir nombres de ramas en git y muchos proyectos "
+"siguen empleando terminología no inclusiva. Por lo tanto, puede que debas "
+"ejecutar lo siguiente:"
#: src/chromium/adding-third-party-crates/keeping-up-to-date.md
msgid ""
-"As the OWNER of any third party Chromium dependency, you are [expected to "
-"keep it up to date with any security fixes](https://chromium.googlesource."
-"com/chromium/src/+/main/docs/adding_to_third_party.md#add-owners). It is "
-"hoped that we will soon automate this for Rust crates, but for now, it's "
-"still your responsibility just as it is for any other third party dependency."
+"As the OWNER of any third party Chromium dependency, you are [expected to keep "
+"it up to date with any security fixes](https://chromium.googlesource.com/"
+"chromium/src/+/main/docs/adding_to_third_party.md#add-owners). It is hoped that "
+"we will soon automate this for Rust crates, but for now, it's still your "
+"responsibility just as it is for any other third party dependency."
msgstr ""
-"Como PROPIETARIO de cualquier dependencia de Chromium de terceros, [se "
-"espera que la actualices con las correcciones de seguridad](https://chromium."
-"googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#add-"
-"owners). La idea es que pronto automaticemos esto para los crates de Rust, "
-"pero por ahora sigue siendo tu responsabilidad, igual que cualquier otra "
-"dependencia de terceros."
+"Como PROPIETARIO de cualquier dependencia de Chromium de terceros, [se espera "
+"que la actualices con las correcciones de seguridad](https://chromium."
+"googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#add-owners). "
+"La idea es que pronto automaticemos esto para los crates de Rust, pero por "
+"ahora sigue siendo tu responsabilidad, igual que cualquier otra dependencia de "
+"terceros."
#: src/exercises/chromium/third-party.md
msgid ""
"Add [uwuify](https://crates.io/crates/uwuify) to Chromium, turning off the "
-"crate's [default features](https://doc.rust-lang.org/cargo/reference/"
-"features.html#the-default-feature). Assume that the crate will be used in "
-"shipping Chromium, but won't be used to handle untrustworthy input."
+"crate's [default features](https://doc.rust-lang.org/cargo/reference/features."
+"html#the-default-feature). Assume that the crate will be used in shipping "
+"Chromium, but won't be used to handle untrustworthy input."
msgstr ""
-"Añade [uwuify](https://crates.io/crates/uwuify) a Chromium para desactivar "
-"las [funciones predeterminadas] del crate (https://doc.rust-lang.org/cargo/"
-"reference/features.html#the-default-feature). Supongamos que el crate se "
-"usará en el envío de Chromium, pero no para gestionar entradas no fiables."
+"Añade [uwuify](https://crates.io/crates/uwuify) a Chromium para desactivar las "
+"[funciones predeterminadas] del crate (https://doc.rust-lang.org/cargo/"
+"reference/features.html#the-default-feature). Supongamos que el crate se usará "
+"en el envío de Chromium, pero no para gestionar entradas no fiables."
#: src/exercises/chromium/third-party.md
msgid ""
"(In the next exercise we'll use uwuify from Chromium, but feel free to skip "
"ahead and do that now if you like. Or, you could create a new "
-"[`rust_executable` target](https://source.chromium.org/chromium/chromium/src/"
-"+/main:build/rust/rust_executable.gni) which uses `uwuify`)."
+"[`rust_executable` target](https://source.chromium.org/chromium/chromium/src/+/"
+"main:build/rust/rust_executable.gni) which uses `uwuify`)."
msgstr ""
-"(En el siguiente ejercicio, usaremos uwuify de Chromium, pero puedes "
-"saltarte este paso y hacerlo ahora si quieres. También puedes crear un nuevo "
-"[destino `rust_executable`](https://source.chromium.org/chromium/chromium/"
-"src/+/main:build/rust/rust_executable.gni) que utilice `uwuify`)."
+"(En el siguiente ejercicio, usaremos uwuify de Chromium, pero puedes saltarte "
+"este paso y hacerlo ahora si quieres. También puedes crear un nuevo [destino "
+"`rust_executable`](https://source.chromium.org/chromium/chromium/src/+/main:"
+"build/rust/rust_executable.gni) que utilice `uwuify`)."
#: src/exercises/chromium/third-party.md
msgid "Students will need to download lots of transitive dependencies."
-msgstr ""
-"Los participantes tendrán que descargar muchas dependencias transitivas."
+msgstr "Los participantes tendrán que descargar muchas dependencias transitivas."
#: src/exercises/chromium/third-party.md
msgid "The total crates needed are:"
@@ -17619,11 +17309,11 @@ msgstr "`uwuify`"
#: src/exercises/chromium/third-party.md
msgid ""
-"If students are downloading even more than that, they probably forgot to "
-"turn off the default features."
+"If students are downloading even more than that, they probably forgot to turn "
+"off the default features."
msgstr ""
-"Si los alumnos se descargan más datos, seguramente habrán olvidado "
-"desactivar las funciones predeterminadas."
+"Si los alumnos se descargan más datos, seguramente habrán olvidado desactivar "
+"las funciones predeterminadas."
#: src/exercises/chromium/third-party.md
msgid ""
@@ -17640,8 +17330,8 @@ msgid ""
"In this exercise, you're going to add a whole new Chromium feature, bringing "
"together everything you already learned."
msgstr ""
-"En este ejercicio, vas a añadir una función de Chromium completamente nueva "
-"que pondrá en práctica todo lo que hemos aprendido."
+"En este ejercicio, vas a añadir una función de Chromium completamente nueva que "
+"pondrá en práctica todo lo que hemos aprendido."
#: src/exercises/chromium/bringing-it-together.md
msgid "The Brief from Product Management"
@@ -17649,18 +17339,16 @@ msgstr "Resumen de la gestión de productos"
#: src/exercises/chromium/bringing-it-together.md
msgid ""
-"A community of pixies has been discovered living in a remote rainforest. "
-"It's important that we get Chromium for Pixies delivered to them as soon as "
-"possible."
+"A community of pixies has been discovered living in a remote rainforest. It's "
+"important that we get Chromium for Pixies delivered to them as soon as possible."
msgstr ""
"Se ha descubierto una comunidad de hadas que habita en una selva tropical "
-"remota. Es importante que les enviemos la versión Chromium para hadas lo "
-"antes posible."
+"remota. Es importante que les enviemos la versión Chromium para hadas lo antes "
+"posible."
#: src/exercises/chromium/bringing-it-together.md
msgid ""
-"The requirement is to translate all Chromium's UI strings into Pixie "
-"language."
+"The requirement is to translate all Chromium's UI strings into Pixie language."
msgstr ""
"El requisito es traducir todas las cadenas de la IU de Chromium al idioma de "
"las hadas."
@@ -17668,25 +17356,25 @@ msgstr ""
#: src/exercises/chromium/bringing-it-together.md
msgid ""
"There's not time to wait for proper translations, but fortunately pixie "
-"language is very close to English, and it turns out there's a Rust crate "
-"which does the translation."
+"language is very close to English, and it turns out there's a Rust crate which "
+"does the translation."
msgstr ""
"No hay tiempo para obtener las traducciones adecuadas pero, por suerte, el "
-"lenguaje de las hadas se parece mucho al inglés y hay un crate de Rust que "
-"hace las traducciones."
+"lenguaje de las hadas se parece mucho al inglés y hay un crate de Rust que hace "
+"las traducciones."
#: src/exercises/chromium/bringing-it-together.md
msgid ""
"In fact, you already [imported that crate in the previous exercise](https://"
"crates.io/crates/uwuify)."
msgstr ""
-"De hecho, ya [importamos ese crate en el ejercicio anterior](https://crates."
-"io/crates/uwuify)."
+"De hecho, ya [importamos ese crate en el ejercicio anterior](https://crates.io/"
+"crates/uwuify)."
#: src/exercises/chromium/bringing-it-together.md
msgid ""
-"(Obviously, real translations of Chrome require incredible care and "
-"diligence. Don't ship this!)"
+"(Obviously, real translations of Chrome require incredible care and diligence. "
+"Don't ship this!)"
msgstr ""
"(Obviamente, las traducciones reales de Chrome requieren mucha atención y "
"diligencia. No envíes nada de esto)."
@@ -17698,13 +17386,13 @@ msgstr "Pasos"
#: src/exercises/chromium/bringing-it-together.md
msgid ""
"Modify `ResourceBundle::MaybeMangleLocalizedString` so that it uwuifies all "
-"strings before display. In this special build of Chromium, it should always "
-"do this irrespective of the setting of `mangle_localized_strings_`."
+"strings before display. In this special build of Chromium, it should always do "
+"this irrespective of the setting of `mangle_localized_strings_`."
msgstr ""
-"Modifica `ResourceBundle::RSMangleLocalizedString` para que traduzca todas "
-"las cadenas antes de que se muestren. En esta compilación especial de "
-"Chromium, siempre se debe hacer esto independientemente de la configuración "
-"de `mangle_localized_strings_`."
+"Modifica `ResourceBundle::RSMangleLocalizedString` para que traduzca todas las "
+"cadenas antes de que se muestren. En esta compilación especial de Chromium, "
+"siempre se debe hacer esto independientemente de la configuración de "
+"`mangle_localized_strings_`."
#: src/exercises/chromium/bringing-it-together.md
msgid ""
@@ -17715,52 +17403,52 @@ msgstr ""
#: src/exercises/chromium/bringing-it-together.md
msgid ""
-"UTF16 vs UTF8. Students should be aware that Rust strings are always UTF8, "
-"and will probably decide that it's better to do the conversion on the C++ "
-"side using `base::UTF16ToUTF8` and back again."
+"UTF16 vs UTF8. Students should be aware that Rust strings are always UTF8, and "
+"will probably decide that it's better to do the conversion on the C++ side "
+"using `base::UTF16ToUTF8` and back again."
msgstr ""
-"UTF16 y UTF8. Los alumnos deben tener en cuenta que las cadenas de Rust "
-"siempre son UTF8. Probablemente decidirán que es mejor hacer la conversión "
-"en C++ usando `base::UTF16ToUTF8` y viceversa."
+"UTF16 y UTF8. Los alumnos deben tener en cuenta que las cadenas de Rust siempre "
+"son UTF8. Probablemente decidirán que es mejor hacer la conversión en C++ "
+"usando `base::UTF16ToUTF8` y viceversa."
#: src/exercises/chromium/bringing-it-together.md
msgid ""
"If students decide to do the conversion on the Rust side, they'll need to "
"consider [`String::from_utf16`](https://doc.rust-lang.org/std/string/struct."
"String.html#method.from_utf16), consider error handling, and consider which "
-"[CXX supported types can transfer a lot of u16s](https://cxx.rs/binding/"
-"slice.html)."
+"[CXX supported types can transfer a lot of u16s](https://cxx.rs/binding/slice."
+"html)."
msgstr ""
"Si los participantes deciden hacer la conversión en Rust, deberán tener en "
"cuenta [`String::from_utf16`](https://doc.rust-lang.org/std/string/struct."
-"String.html#method.from_utf16), la gestión de errores y los [tipos "
-"compatibles con CXX que pueden transferir un gran número de u16s](https://"
-"cxx.rs/binding/slice.html)."
+"String.html#method.from_utf16), la gestión de errores y los [tipos compatibles "
+"con CXX que pueden transferir un gran número de u16s](https://cxx.rs/binding/"
+"slice.html)."
#: src/exercises/chromium/bringing-it-together.md
msgid ""
"Students may design the C++/Rust boundary in several different ways, e.g. "
"taking and returning strings by value, or taking a mutable reference to a "
-"string. If a mutable reference is used, CXX will likely tell the student "
-"that they need to use [`Pin`](https://doc.rust-lang.org/std/pin/). You may "
-"need to explain what `Pin` does, and then explain why CXX needs it for "
-"mutable references to C++ data: the answer is that C++ data can't be moved "
-"around like Rust data, because it may contain self-referential pointers."
-msgstr ""
-"Los alumnos pueden diseñar el límite de C++ o Rust de varias formas "
-"diferentes, por ejemplo, tomando y devolviendo cadenas por valor o colocando "
-"una referencia mutable en una cadena. Si se utiliza una referencia mutable, "
-"es probable que CXX indique que se debe usar [`Pin`](https://doc.rust-lang."
-"org/std/pin/). Puede que debas explicar qué hace `Pin` y, a continuación, "
-"explicar por qué CXX lo necesita para referencias mutables a datos de C++. "
-"La respuesta es que los datos de C++ no se pueden mover como los datos de "
-"Rust, ya que pueden contener punteros de autorreferencia."
+"string. If a mutable reference is used, CXX will likely tell the student that "
+"they need to use [`Pin`](https://doc.rust-lang.org/std/pin/). You may need to "
+"explain what `Pin` does, and then explain why CXX needs it for mutable "
+"references to C++ data: the answer is that C++ data can't be moved around like "
+"Rust data, because it may contain self-referential pointers."
+msgstr ""
+"Los alumnos pueden diseñar el límite de C++ o Rust de varias formas diferentes, "
+"por ejemplo, tomando y devolviendo cadenas por valor o colocando una referencia "
+"mutable en una cadena. Si se utiliza una referencia mutable, es probable que "
+"CXX indique que se debe usar [`Pin`](https://doc.rust-lang.org/std/pin/). Puede "
+"que debas explicar qué hace `Pin` y, a continuación, explicar por qué CXX lo "
+"necesita para referencias mutables a datos de C++. La respuesta es que los "
+"datos de C++ no se pueden mover como los datos de Rust, ya que pueden contener "
+"punteros de autorreferencia."
#: src/exercises/chromium/bringing-it-together.md
msgid ""
"The C++ target containing `ResourceBundle::MaybeMangleLocalizedString` will "
-"need to depend on a `rust_static_library` target. The student probably "
-"already did this."
+"need to depend on a `rust_static_library` target. The student probably already "
+"did this."
msgstr ""
"El elemento de destino de C++ que contiene `ResourceBundle::"
"MaybeMangleLocalizedString` deberá depender de un elemento "
@@ -17771,17 +17459,15 @@ msgid ""
"The `rust_static_library` target will need to depend on `//third_party/rust/"
"uwuify/v0_2:lib`."
msgstr ""
-"`rust_static_library` deberá depender de `//third_party/rust/uwuify/v0_2:"
-"lib`."
+"`rust_static_library` deberá depender de `//third_party/rust/uwuify/v0_2:lib`."
#: src/exercises/chromium/solutions.md
msgid ""
"Solutions to the Chromium exercises can be found in [this series of CLs]"
"(https://chromium-review.googlesource.com/c/chromium/src/+/5096560)."
msgstr ""
-"Las soluciones a los ejercicios de Chromium están en [esta serie de listas "
-"de cambios](https://chromium-review.googlesource.com/c/chromium/src/"
-"+/5096560)."
+"Las soluciones a los ejercicios de Chromium están en [esta serie de listas de "
+"cambios](https://chromium-review.googlesource.com/c/chromium/src/+/5096560)."
#: src/bare-metal.md
msgid "Welcome to Bare Metal Rust"
@@ -17789,16 +17475,15 @@ msgstr "Te damos la bienvenida a Bare Metal Rust"
#: src/bare-metal.md
msgid ""
-"This is a standalone one-day course about bare-metal Rust, aimed at people "
-"who are familiar with the basics of Rust (perhaps from completing the "
-"Comprehensive Rust course), and ideally also have some experience with bare-"
-"metal programming in some other language such as C."
+"This is a standalone one-day course about bare-metal Rust, aimed at people who "
+"are familiar with the basics of Rust (perhaps from completing the Comprehensive "
+"Rust course), and ideally also have some experience with bare-metal programming "
+"in some other language such as C."
msgstr ""
"Este es un curso independiente de un día sobre Rust bare-metal, dirigido a "
"personas que están familiarizadas con los conceptos básicos de Rust (tal vez "
-"después de completar el curso Comprehensive Rust). Lo ideal sería que "
-"también tuvieran experiencia con la programación bare-metal en otros "
-"lenguajes, como C."
+"después de completar el curso Comprehensive Rust). Lo ideal sería que también "
+"tuvieran experiencia con la programación bare-metal en otros lenguajes, como C."
#: src/bare-metal.md
msgid ""
@@ -17829,26 +17514,24 @@ msgstr "Algunos crates útiles para el desarrollo de Rust bare-metal."
msgid ""
"For the microcontroller part of the course we will use the [BBC micro:bit]"
"(https://microbit.org/) v2 as an example. It's a [development board](https://"
-"tech.microbit.org/hardware/) based on the Nordic nRF52833 microcontroller "
-"with some LEDs and buttons, an I2C-connected accelerometer and compass, and "
-"an on-board SWD debugger."
+"tech.microbit.org/hardware/) based on the Nordic nRF52833 microcontroller with "
+"some LEDs and buttons, an I2C-connected accelerometer and compass, and an on-"
+"board SWD debugger."
msgstr ""
"En la parte del curso dedicada a los microcontroladores, utilizaremos la "
-"versión 2 de [BBC micro:bit](https://microbit.org/) como ejemplo. Es una "
-"[placa de desarrollo](https://tech.microbit.org/hardware/) basada en el "
-"microcontrolador Nordic nRF51822 con algunos LED y botones, un acelerómetro "
-"y una brújula conectados mediante I2C y un depurador SWD integrado."
+"versión 2 de [BBC micro:bit](https://microbit.org/) como ejemplo. Es una [placa "
+"de desarrollo](https://tech.microbit.org/hardware/) basada en el "
+"microcontrolador Nordic nRF51822 con algunos LED y botones, un acelerómetro y "
+"una brújula conectados mediante I2C y un depurador SWD integrado."
#: src/bare-metal.md
-msgid ""
-"To get started, install some tools we'll need later. On gLinux or Debian:"
+msgid "To get started, install some tools we'll need later. On gLinux or Debian:"
msgstr ""
-"Para empezar, instala algunas de las herramientas que necesitarás más "
-"adelante. En gLinux o Debian:"
+"Para empezar, instala algunas de las herramientas que necesitarás más adelante. "
+"En gLinux o Debian:"
#: src/bare-metal.md
-msgid ""
-"And give users in the `plugdev` group access to the micro:bit programmer:"
+msgid "And give users in the `plugdev` group access to the micro:bit programmer:"
msgstr ""
"Permite a los usuarios del grupo `plugdev` acceder al programador micro:bit:"
@@ -17967,8 +17650,8 @@ msgstr "Se compilará en un binario vacío."
#: src/bare-metal/minimal.md
msgid "`std` provides a panic handler; without it we must provide our own."
msgstr ""
-"`std` proporciona un controlador de _panic_; sin no hay, debemos "
-"proporcionar uno nuestro."
+"`std` proporciona un controlador de _panic_; sin no hay, debemos proporcionar "
+"uno nuestro."
#: src/bare-metal/minimal.md
msgid "It can also be provided by another crate, such as `panic-halt`."
@@ -17984,19 +17667,19 @@ msgstr ""
#: src/bare-metal/minimal.md
msgid ""
-"Note that there is no `main` or any other entry point; it's up to you to "
-"define your own entry point. This will typically involve a linker script and "
-"some assembly code to set things up ready for Rust code to run."
+"Note that there is no `main` or any other entry point; it's up to you to define "
+"your own entry point. This will typically involve a linker script and some "
+"assembly code to set things up ready for Rust code to run."
msgstr ""
-"Ten en cuenta que no hay `main` ni ningún otro punto de entrada; depende de "
-"ti definir un punto de entrada propio. Esto suele implicar una secuencia de "
+"Ten en cuenta que no hay `main` ni ningún otro punto de entrada; depende de ti "
+"definir un punto de entrada propio. Esto suele implicar una secuencia de "
"comandos de enlazador y algún código de ensamblado de forma que todo esté "
"preparado para que se ejecute el código de Rust."
#: src/bare-metal/alloc.md
msgid ""
-"To use `alloc` you must implement a [global (heap) allocator](https://doc."
-"rust-lang.org/stable/std/alloc/trait.GlobalAlloc.html)."
+"To use `alloc` you must implement a [global (heap) allocator](https://doc.rust-"
+"lang.org/stable/std/alloc/trait.GlobalAlloc.html)."
msgstr ""
"Para utilizar `alloc`, debes implementar un [asignador global (de _heap_)]"
"(https://doc.rust-lang.org/stable/std/alloc/trait.GlobalAlloc.html)."
@@ -18005,8 +17688,7 @@ msgstr ""
#, fuzzy
msgid "// SAFETY: `HEAP` is only used here and `entry` is only called once.\n"
msgstr ""
-"// Es seguro porque `HEAP` solo se usa aquí y solo se llama una vez a "
-"`entry`.\n"
+"// Es seguro porque `HEAP` solo se usa aquí y solo se llama una vez a `entry`.\n"
#: src/bare-metal/alloc.md
msgid "// Give the allocator some memory to allocate.\n"
@@ -18026,21 +17708,21 @@ msgstr "String"
#: src/bare-metal/alloc.md
msgid ""
"`buddy_system_allocator` is a third-party crate implementing a basic buddy "
-"system allocator. Other crates are available, or you can write your own or "
-"hook into your existing allocator."
+"system allocator. Other crates are available, or you can write your own or hook "
+"into your existing allocator."
msgstr ""
"`buddy_system_allocator` es un crate de terceros que implementa un _buddy "
"system allocator_ (una técnica de asignación de memoria) básico. Hay otros "
-"crates disponibles, pero también puedes escribir el tuyo propio o conectarte "
-"a tu asignador."
+"crates disponibles, pero también puedes escribir el tuyo propio o conectarte a "
+"tu asignador."
#: src/bare-metal/alloc.md
msgid ""
-"The const parameter of `LockedHeap` is the max order of the allocator; i.e. "
-"in this case it can allocate regions of up to 2\\*\\*32 bytes."
+"The const parameter of `LockedHeap` is the max order of the allocator; i.e. in "
+"this case it can allocate regions of up to 2\\*\\*32 bytes."
msgstr ""
-"El parámetro const de `LockedHeap` es el orden máximo del asignador. Es "
-"decir, en este caso, puede asignar regiones de hasta 2\\*\\*32 bytes."
+"El parámetro const de `LockedHeap` es el orden máximo del asignador. Es decir, "
+"en este caso, puede asignar regiones de hasta 2\\*\\*32 bytes."
#: src/bare-metal/alloc.md
msgid ""
@@ -18049,8 +17731,8 @@ msgid ""
"the top-level binary crate."
msgstr ""
"Si algún crate del árbol de dependencias depende de `alloc`, debes tener "
-"exactamente un asignador global definido en el binario. Esto se suele hacer "
-"en el crate binario de nivel superior."
+"exactamente un asignador global definido en el binario. Esto se suele hacer en "
+"el crate binario de nivel superior."
#: src/bare-metal/alloc.md
msgid ""
@@ -18063,8 +17745,8 @@ msgstr ""
#: src/bare-metal/alloc.md
msgid "This example will build but not run, as it doesn't have an entry point."
msgstr ""
-"Este ejemplo se compilará pero no se ejecutará, ya que no cuenta con un "
-"punto de entrada."
+"Este ejemplo se compilará pero no se ejecutará, ya que no cuenta con un punto "
+"de entrada."
#: src/bare-metal/microcontrollers.md
msgid ""
@@ -18084,11 +17766,11 @@ msgstr ""
#: src/bare-metal/microcontrollers.md
msgid ""
-"The `cortex_m_rt::entry` macro requires that the function have type `fn() -"
-"> !`, because returning to the reset handler doesn't make sense."
+"The `cortex_m_rt::entry` macro requires that the function have type `fn() -> !"
+"`, because returning to the reset handler doesn't make sense."
msgstr ""
-"La macro `cortex_m_rt::entry` requiere que la función tenga el tipo `fn() -"
-"> !`, ya que no tiene sentido devolver resultados al controlador de reinicio."
+"La macro `cortex_m_rt::entry` requiere que la función tenga el tipo `fn() -> !"
+"`, ya que no tiene sentido devolver resultados al controlador de reinicio."
#: src/bare-metal/microcontrollers.md
msgid "Run the example with `cargo embed --bin minimal`"
@@ -18099,9 +17781,8 @@ msgid ""
"Most microcontrollers access peripherals via memory-mapped IO. Let's try "
"turning on an LED on our micro:bit:"
msgstr ""
-"La mayoría de los microcontroladores acceden a los periféricos a través de E/"
-"S asignada a la memoria. Vamos a probar a encender un LED en nuestro micro:"
-"bit:"
+"La mayoría de los microcontroladores acceden a los periféricos a través de E/S "
+"asignada a la memoria. Vamos a probar a encender un LED en nuestro micro:bit:"
#: src/bare-metal/microcontrollers/mmio.md
msgid "/// GPIO port 0 peripheral address\n"
@@ -18115,8 +17796,7 @@ msgstr "// Offset de periféricos GPIO\n"
msgid "// PIN_CNF fields\n"
msgstr "// Campos PIN_CNF\n"
-#: src/bare-metal/microcontrollers/mmio.md
-#: src/bare-metal/microcontrollers/pacs.md
+#: src/bare-metal/microcontrollers/mmio.md src/bare-metal/microcontrollers/pacs.md
#: src/bare-metal/microcontrollers/hals.md
msgid "// Configure GPIO 0 pins 21 and 28 as push-pull outputs.\n"
msgstr "// Configura los pines 21 y 28 de GPIO 0 como salidas push-pull.\n"
@@ -18127,26 +17807,24 @@ msgid ""
"// SAFETY: The pointers are to valid peripheral control registers, and no\n"
" // aliases exist.\n"
msgstr ""
-"// Es seguro porque los punteros dirigen a registros de control de "
-"periféricos válidos y\n"
+"// Es seguro porque los punteros dirigen a registros de control de periféricos "
+"válidos y\n"
" // no existe ningún alias.\n"
-#: src/bare-metal/microcontrollers/mmio.md
-#: src/bare-metal/microcontrollers/pacs.md
+#: src/bare-metal/microcontrollers/mmio.md src/bare-metal/microcontrollers/pacs.md
#: src/bare-metal/microcontrollers/hals.md
msgid "// Set pin 28 low and pin 21 high to turn the LED on.\n"
msgstr "// Define el pin 28 bajo y 21 alto para encender el LED.\n"
#: src/bare-metal/microcontrollers/mmio.md
msgid ""
-"GPIO 0 pin 21 is connected to the first column of the LED matrix, and pin 28 "
-"to the first row."
+"GPIO 0 pin 21 is connected to the first column of the LED matrix, and pin 28 to "
+"the first row."
msgstr ""
-"El pin 21 de GPIO 0 está conectado a la primera columna de la matriz de LED "
-"y el pin 28 a la primera fila."
+"El pin 21 de GPIO 0 está conectado a la primera columna de la matriz de LED y "
+"el pin 28 a la primera fila."
-#: src/bare-metal/microcontrollers/mmio.md
-#: src/bare-metal/microcontrollers/pacs.md
+#: src/bare-metal/microcontrollers/mmio.md src/bare-metal/microcontrollers/pacs.md
#: src/bare-metal/microcontrollers/hals.md
#: src/bare-metal/microcontrollers/board-support.md
msgid "Run the example with:"
@@ -18163,18 +17841,17 @@ msgid ""
"pack/doc/CMSIS/SVD/html/index.html) files."
msgstr ""
"[`svd2rust`](https://crates.io/crates/svd2rust) genera, en su gran mayoría, "
-"envoltorios seguros de Rust para periféricos asignados a la memoria a partir "
-"de archivos [CMSIS-SVD](https://www.keil.com/pack/doc/CMSIS/SVD/html/index."
-"html)."
+"envoltorios seguros de Rust para periféricos asignados a la memoria a partir de "
+"archivos [CMSIS-SVD](https://www.keil.com/pack/doc/CMSIS/SVD/html/index.html)."
#: src/bare-metal/microcontrollers/pacs.md
msgid ""
-"SVD (System View Description) files are XML files typically provided by "
-"silicon vendors which describe the memory map of the device."
+"SVD (System View Description) files are XML files typically provided by silicon "
+"vendors which describe the memory map of the device."
msgstr ""
"Los archivos SVD (System View Description) son archivos XML que suelen "
-"proporcionar los proveedores de silicio y que describen el mapa de memoria "
-"del dispositivo."
+"proporcionar los proveedores de silicio y que describen el mapa de memoria del "
+"dispositivo."
#: src/bare-metal/microcontrollers/pacs.md
msgid ""
@@ -18186,13 +17863,12 @@ msgstr ""
#: src/bare-metal/microcontrollers/pacs.md
msgid ""
-"SVD files are often buggy and incomplete, so there are various projects "
-"which patch the mistakes, add missing details, and publish the generated "
-"crates."
+"SVD files are often buggy and incomplete, so there are various projects which "
+"patch the mistakes, add missing details, and publish the generated crates."
msgstr ""
-"Los archivos SVD suelen tener errores y estar incompletos, por lo que "
-"existen varios proyectos que aplican parches a los errores, añaden detalles "
-"que faltan y publican los crates generados."
+"Los archivos SVD suelen tener errores y estar incompletos, por lo que existen "
+"varios proyectos que aplican parches a los errores, añaden detalles que faltan "
+"y publican los crates generados."
#: src/bare-metal/microcontrollers/pacs.md
msgid "`cortex-m-rt` provides the vector table, among other things."
@@ -18200,11 +17876,11 @@ msgstr "`cortex-m-rt` proporciona la tabla de vectores, entre otras cosas."
#: src/bare-metal/microcontrollers/pacs.md
msgid ""
-"If you `cargo install cargo-binutils` then you can run `cargo objdump --bin "
-"pac -- -d --no-show-raw-insn` to see the resulting binary."
+"If you `cargo install cargo-binutils` then you can run `cargo objdump --bin pac "
+"-- -d --no-show-raw-insn` to see the resulting binary."
msgstr ""
-"Si instalas `cargo install cargo-binutils` puedes ejecutar `cargo objdump --"
-"bin pac -- -d --no-show-raw-insn` para ver el binario resultante."
+"Si instalas `cargo install cargo-binutils` puedes ejecutar `cargo objdump --bin "
+"pac -- -d --no-show-raw-insn` para ver el binario resultante."
#: src/bare-metal/microcontrollers/hals.md
msgid "HAL crates"
@@ -18234,8 +17910,8 @@ msgstr ""
#: src/bare-metal/microcontrollers/hals.md
msgid ""
-"HAL crates exist for many Cortex-M and RISC-V devices, including various "
-"STM32, GD32, nRF, NXP, MSP430, AVR and PIC microcontrollers."
+"HAL crates exist for many Cortex-M and RISC-V devices, including various STM32, "
+"GD32, nRF, NXP, MSP430, AVR and PIC microcontrollers."
msgstr ""
"Hay crates HAL para muchos dispositivos Cortex-M y RISC-V, incluidos varios "
"microcontroladores STM32, GD32, nRF, NXP, MSP430, AVR y PIC."
@@ -18246,19 +17922,19 @@ msgstr "Crates de compatibilidad de placa"
#: src/bare-metal/microcontrollers/board-support.md
msgid ""
-"Board support crates provide a further level of wrapping for a specific "
-"board for convenience."
+"Board support crates provide a further level of wrapping for a specific board "
+"for convenience."
msgstr ""
"Los crates de compatibilidad de placa proporcionan un nivel adicional de "
"envoltorio a una placa específica para mayor comodidad."
#: src/bare-metal/microcontrollers/board-support.md
msgid ""
-"In this case the board support crate is just providing more useful names, "
-"and a bit of initialisation."
+"In this case the board support crate is just providing more useful names, and a "
+"bit of initialisation."
msgstr ""
-"En este caso, el crate de compatibilidad de placa proporciona solo nombres "
-"más útiles y un poco de inicialización."
+"En este caso, el crate de compatibilidad de placa proporciona solo nombres más "
+"útiles y un poco de inicialización."
#: src/bare-metal/microcontrollers/board-support.md
msgid ""
@@ -18286,8 +17962,8 @@ msgstr "// pin_input.is_high(); // Error, se ha movido.\n"
#: src/bare-metal/microcontrollers/type-state.md
msgid ""
-"Pins don't implement `Copy` or `Clone`, so only one instance of each can "
-"exist. Once a pin is moved out of the port struct nobody else can take it."
+"Pins don't implement `Copy` or `Clone`, so only one instance of each can exist. "
+"Once a pin is moved out of the port struct nobody else can take it."
msgstr ""
"Los pines no implementan `Copy` ni `Clone`, por lo que solo puede haber una "
"instancia de cada uno. Cuando se quita un pin de la estructura del puerto, "
@@ -18295,30 +17971,30 @@ msgstr ""
#: src/bare-metal/microcontrollers/type-state.md
msgid ""
-"Changing the configuration of a pin consumes the old pin instance, so you "
-"can’t keep use the old instance afterwards."
+"Changing the configuration of a pin consumes the old pin instance, so you can’t "
+"keep use the old instance afterwards."
msgstr ""
"Si cambias la configuración de un pin, se consumirá la instancia del pin "
"anterior y no podrás seguir usando la instancia previa."
#: src/bare-metal/microcontrollers/type-state.md
msgid ""
-"The type of a value indicates the state that it is in: e.g. in this case, "
-"the configuration state of a GPIO pin. This encodes the state machine into "
-"the type system, and ensures that you don't try to use a pin in a certain "
-"way without properly configuring it first. Illegal state transitions are "
-"caught at compile time."
+"The type of a value indicates the state that it is in: e.g. in this case, the "
+"configuration state of a GPIO pin. This encodes the state machine into the type "
+"system, and ensures that you don't try to use a pin in a certain way without "
+"properly configuring it first. Illegal state transitions are caught at compile "
+"time."
msgstr ""
"El tipo de un valor indica el estado en el que se encuentra: por ejemplo, en "
"este caso, el estado de configuración de un pin de GPIO. De esta manera, se "
-"codifica la máquina de estados en el sistema de tipos, asegurando así que no "
-"se use un pin de cierta forma sin antes configurarlo correctamente. Las "
+"codifica la máquina de estados en el sistema de tipos, asegurando así que no se "
+"use un pin de cierta forma sin antes configurarlo correctamente. Las "
"transiciones de estado ilegales se detectan durante el tiempo de compilación."
#: src/bare-metal/microcontrollers/type-state.md
msgid ""
-"You can call `is_high` on an input pin and `set_high` on an output pin, but "
-"not vice-versa."
+"You can call `is_high` on an input pin and `set_high` on an output pin, but not "
+"vice-versa."
msgstr ""
"Puedes llamar a `is_high` en un pin de entrada y a `set_high` en un pin de "
"salida, pero no al revés."
@@ -18355,38 +18031,37 @@ msgstr ""
#: src/bare-metal/microcontrollers/embedded-hal.md
msgid ""
-"Similar traits for byte streams (e.g. UARTs), CAN buses and RNGs and broken "
-"out into [`embedded-io`](https://crates.io/crates/embedded-io), [`embedded-"
-"can`](https://crates.io/crates/embedded-can) and [`rand_core`](https://"
-"crates.io/crates/rand_core) respectively."
+"Similar traits for byte streams (e.g. UARTs), CAN buses and RNGs and broken out "
+"into [`embedded-io`](https://crates.io/crates/embedded-io), [`embedded-can`]"
+"(https://crates.io/crates/embedded-can) and [`rand_core`](https://crates.io/"
+"crates/rand_core) respectively."
msgstr ""
#: src/bare-metal/microcontrollers/embedded-hal.md
#, fuzzy
msgid ""
-"Other crates then implement [drivers](https://github.com/rust-embedded/"
-"awesome-embedded-rust#driver-crates) in terms of these traits, e.g. an "
-"accelerometer driver might need an I2C or SPI device instance."
+"Other crates then implement [drivers](https://github.com/rust-embedded/awesome-"
+"embedded-rust#driver-crates) in terms of these traits, e.g. an accelerometer "
+"driver might need an I2C or SPI device instance."
msgstr ""
-"Es entonces cuando otros crates implementan [controladores](https://github."
-"com/rust-embedded/awesome-embedded-rust#driver-crates) en función de estos "
-"traits. Por ejemplo, un controlador de acelerómetro podría necesitar una "
-"implementación de bus I2C o SPI."
+"Es entonces cuando otros crates implementan [controladores](https://github.com/"
+"rust-embedded/awesome-embedded-rust#driver-crates) en función de estos traits. "
+"Por ejemplo, un controlador de acelerómetro podría necesitar una implementación "
+"de bus I2C o SPI."
#: src/bare-metal/microcontrollers/embedded-hal.md
msgid ""
"The traits cover using the peripherals but not initialising or configuring "
-"them, as initialisation and configuration is usually highly platform-"
-"specific."
+"them, as initialisation and configuration is usually highly platform-specific."
msgstr ""
#: src/bare-metal/microcontrollers/embedded-hal.md
msgid ""
-"There are implementations for many microcontrollers, as well as other "
-"platforms such as Linux on Raspberry Pi."
+"There are implementations for many microcontrollers, as well as other platforms "
+"such as Linux on Raspberry Pi."
msgstr ""
-"Hay implementaciones para muchos microcontroladores, así como otras "
-"plataformas como Linux en Raspberry Pi."
+"Hay implementaciones para muchos microcontroladores, así como otras plataformas "
+"como Linux en Raspberry Pi."
#: src/bare-metal/microcontrollers/embedded-hal.md
#, fuzzy
@@ -18401,9 +18076,9 @@ msgstr ""
#: src/bare-metal/microcontrollers/embedded-hal.md
#, fuzzy
msgid ""
-"[`embedded-hal-nb`](https://crates.io/crates/embedded-hal-nb) provides "
-"another approach to non-blocking I/O, based on the [`nb`](https://crates.io/"
-"crates/nb) crate."
+"[`embedded-hal-nb`](https://crates.io/crates/embedded-hal-nb) provides another "
+"approach to non-blocking I/O, based on the [`nb`](https://crates.io/crates/nb) "
+"crate."
msgstr ""
"El crate [`embedded-hal`](https://crates.io/crates/embedded-hal) proporciona "
"una serie de traits que cubren los periféricos habituales de los "
@@ -18411,23 +18086,21 @@ msgstr ""
#: src/bare-metal/microcontrollers/probe-rs.md
msgid ""
-"[probe-rs](https://probe.rs/) is a handy toolset for embedded debugging, "
-"like OpenOCD but better integrated."
+"[probe-rs](https://probe.rs/) is a handy toolset for embedded debugging, like "
+"OpenOCD but better integrated."
msgstr ""
"[probe-rs](https://probe.rs/) es un conjunto de herramientas de depuración "
"integradas muy útil, como OpenOCD, pero mejor integrado."
#: src/bare-metal/microcontrollers/probe-rs.md
#, fuzzy
-msgid ""
-"SWD (Serial Wire Debug) and JTAG via CMSIS-DAP, ST-Link and J-Link probes"
+msgid "SWD (Serial Wire Debug) and JTAG via CMSIS-DAP, ST-Link and J-Link probes"
msgstr " y JTAG a través de comprobaciones CMSIS-DAP, ST-Link y J-Link"
#: src/bare-metal/microcontrollers/probe-rs.md
msgid "GDB stub and Microsoft DAP (Debug Adapter Protocol) server"
msgstr ""
-"Stub de GDB y servidor de Microsoft DAP (protocolo de adaptador de "
-"depuración)"
+"Stub de GDB y servidor de Microsoft DAP (protocolo de adaptador de depuración)"
#: src/bare-metal/microcontrollers/probe-rs.md
msgid "Cargo integration"
@@ -18436,46 +18109,45 @@ msgstr "Integración de Cargo"
#: src/bare-metal/microcontrollers/probe-rs.md
#, fuzzy
msgid ""
-"`cargo-embed` is a cargo subcommand to build and flash binaries, log RTT "
-"(Real Time Transfers) output and connect GDB. It's configured by an `Embed."
-"toml` file in your project directory."
+"`cargo-embed` is a cargo subcommand to build and flash binaries, log RTT (Real "
+"Time Transfers) output and connect GDB. It's configured by an `Embed.toml` file "
+"in your project directory."
msgstr ""
-" y conectar GDB. Se configura mediante un archivo `Embed.toml` en el "
-"directorio del proyecto."
+" y conectar GDB. Se configura mediante un archivo `Embed.toml` en el directorio "
+"del proyecto."
#: src/bare-metal/microcontrollers/probe-rs.md
msgid ""
-"[CMSIS-DAP](https://arm-software.github.io/CMSIS_5/DAP/html/index.html) is "
-"an Arm standard protocol over USB for an in-circuit debugger to access the "
-"CoreSight Debug Access Port of various Arm Cortex processors. It's what the "
-"on-board debugger on the BBC micro:bit uses."
+"[CMSIS-DAP](https://arm-software.github.io/CMSIS_5/DAP/html/index.html) is an "
+"Arm standard protocol over USB for an in-circuit debugger to access the "
+"CoreSight Debug Access Port of various Arm Cortex processors. It's what the on-"
+"board debugger on the BBC micro:bit uses."
msgstr ""
-"[CMSIS-DAP](https://arm-software.github.io/CMSIS_5/DAP/html/index.html) es "
-"un protocolo estándar de Arm mediante USB que permite que un depurador en "
-"circuito acceda al puerto de acceso de depuración CoreSight de varios "
-"procesadores Cortex de Arm. Es lo que utiliza el depurador integrado en el "
-"BBC micro:bit"
+"[CMSIS-DAP](https://arm-software.github.io/CMSIS_5/DAP/html/index.html) es un "
+"protocolo estándar de Arm mediante USB que permite que un depurador en circuito "
+"acceda al puerto de acceso de depuración CoreSight de varios procesadores "
+"Cortex de Arm. Es lo que utiliza el depurador integrado en el BBC micro:bit"
#: src/bare-metal/microcontrollers/probe-rs.md
msgid ""
-"ST-Link is a range of in-circuit debuggers from ST Microelectronics, J-Link "
-"is a range from SEGGER."
+"ST-Link is a range of in-circuit debuggers from ST Microelectronics, J-Link is "
+"a range from SEGGER."
msgstr ""
-"ST-Link es una gama de depuradores en circuito de ST Microelectronics. J-"
-"Link es una gama de SEGGER."
+"ST-Link es una gama de depuradores en circuito de ST Microelectronics. J-Link "
+"es una gama de SEGGER."
#: src/bare-metal/microcontrollers/probe-rs.md
msgid ""
-"The Debug Access Port is usually either a 5-pin JTAG interface or 2-pin "
-"Serial Wire Debug."
+"The Debug Access Port is usually either a 5-pin JTAG interface or 2-pin Serial "
+"Wire Debug."
msgstr ""
-"El puerto de acceso de depuración suele ser una interfaz JTAG de 5 pines o "
-"una SWD de 2 pines."
+"El puerto de acceso de depuración suele ser una interfaz JTAG de 5 pines o una "
+"SWD de 2 pines."
#: src/bare-metal/microcontrollers/probe-rs.md
msgid ""
-"probe-rs is a library which you can integrate into your own tools if you "
-"want to."
+"probe-rs is a library which you can integrate into your own tools if you want "
+"to."
msgstr ""
"probe-rs es una biblioteca que puedes integrar en tus propias herramientas."
@@ -18485,9 +18157,9 @@ msgid ""
"adapter-protocol/) lets VSCode and other IDEs debug code running on any "
"supported microcontroller."
msgstr ""
-"[El protocolo de adaptador de depuración de Microsoft](https://microsoft."
-"github.io/debug-adapter-protocol/) permite que VSCode y otros IDEs depuren "
-"el código que se ejecuta en cualquier microcontrolador compatible."
+"[El protocolo de adaptador de depuración de Microsoft](https://microsoft.github."
+"io/debug-adapter-protocol/) permite que VSCode y otros IDEs depuren el código "
+"que se ejecuta en cualquier microcontrolador compatible."
#: src/bare-metal/microcontrollers/probe-rs.md
msgid "cargo-embed is a binary built using the probe-rs library."
@@ -18498,9 +18170,8 @@ msgid ""
"RTT (Real Time Transfers) is a mechanism to transfer data between the debug "
"host and the target through a number of ringbuffers."
msgstr ""
-"TTR (transferencias en tiempo real) es un mecanismo para transferir datos "
-"entre el host de depuración y el objetivo a través de una serie de búferes "
-"circulares."
+"TTR (transferencias en tiempo real) es un mecanismo para transferir datos entre "
+"el host de depuración y el objetivo a través de una serie de búferes circulares."
#: src/bare-metal/microcontrollers/debugging.md
#, fuzzy
@@ -18537,8 +18208,7 @@ msgid "\"Real-Time Interrupt-driven Concurrency\""
msgstr "\"Concurrencia en tiempo real basada en interrupciones\""
#: src/bare-metal/microcontrollers/other-projects.md
-msgid ""
-"Shared resource management, message passing, task scheduling, timer queue"
+msgid "Shared resource management, message passing, task scheduling, timer queue"
msgstr ""
"Gestión de recursos compartidos, envío de mensajes, programación de tareas, "
"cola del temporizador, etc."
@@ -18560,8 +18230,8 @@ msgid ""
"Security-focused RTOS with preemptive scheduling and Memory Protection Unit "
"support"
msgstr ""
-"RTOS centrado en la seguridad con programación interrumpible y "
-"compatibilidad con la unidad de protección de memoria."
+"RTOS centrado en la seguridad con programación interrumpible y compatibilidad "
+"con la unidad de protección de memoria."
#: src/bare-metal/microcontrollers/other-projects.md
msgid "[Hubris](https://hubris.oxide.computer/)"
@@ -18581,11 +18251,11 @@ msgstr "[Enlaces para FreeRTOS](https://github.com/lobaro/FreeRTOS-rust)"
#: src/bare-metal/microcontrollers/other-projects.md
msgid ""
-"Some platforms have `std` implementations, e.g. [esp-idf](https://esp-rs."
-"github.io/book/overview/using-the-standard-library.html)."
+"Some platforms have `std` implementations, e.g. [esp-idf](https://esp-rs.github."
+"io/book/overview/using-the-standard-library.html)."
msgstr ""
-"Algunas plataformas tienen implementaciones `std`, como [esp-idf](https://"
-"esp-rs.github.io/book/overview/using-the-standard-library.html)."
+"Algunas plataformas tienen implementaciones `std`, como [esp-idf](https://esp-"
+"rs.github.io/book/overview/using-the-standard-library.html)."
#: src/bare-metal/microcontrollers/other-projects.md
msgid "RTIC can be considered either an RTOS or a concurrency framework."
@@ -18597,8 +18267,8 @@ msgstr "No incluye ningún HAL."
#: src/bare-metal/microcontrollers/other-projects.md
msgid ""
-"It uses the Cortex-M NVIC (Nested Virtual Interrupt Controller) for "
-"scheduling rather than a proper kernel."
+"It uses the Cortex-M NVIC (Nested Virtual Interrupt Controller) for scheduling "
+"rather than a proper kernel."
msgstr ""
"Usa el NVIC (controlador de interrupción virtual anidado) Cortex‐M para la "
"programación en lugar de un kernel propio."
@@ -18608,11 +18278,10 @@ msgid "Cortex-M only."
msgstr "Solo Cortex-M."
#: src/bare-metal/microcontrollers/other-projects.md
-msgid ""
-"Google uses TockOS on the Haven microcontroller for Titan security keys."
+msgid "Google uses TockOS on the Haven microcontroller for Titan security keys."
msgstr ""
-"Google utiliza TockOS en el microcontrolador Haven para las llaves de "
-"seguridad Titan."
+"Google utiliza TockOS en el microcontrolador Haven para las llaves de seguridad "
+"Titan."
#: src/bare-metal/microcontrollers/other-projects.md
msgid ""
@@ -18627,16 +18296,16 @@ msgid ""
"We will read the direction from an I2C compass, and log the readings to a "
"serial port."
msgstr ""
-"Leeremos la dirección desde una brújula I2C, y registraremos las lecturas en "
-"un puerto serie."
+"Leeremos la dirección desde una brújula I2C, y registraremos las lecturas en un "
+"puerto serie."
#: src/exercises/bare-metal/morning.md
msgid ""
"After looking at the exercises, you can look at the [solutions](solutions-"
"morning.md) provided."
msgstr ""
-"Después de realizar los ejercicios, puedes consultar las [soluciones]"
-"(solutions-morning.md) correspondientes."
+"Después de realizar los ejercicios, puedes consultar las [soluciones](solutions-"
+"morning.md) correspondientes."
#: src/exercises/bare-metal/compass.md
msgid ""
@@ -18644,9 +18313,9 @@ msgid ""
"serial port. If you have time, try displaying it on the LEDs somehow too, or "
"use the buttons somehow."
msgstr ""
-"Leeremos la dirección desde una brújula I2C, y registraremos las lecturas en "
-"un puerto serie. Si tienes tiempo, prueba a mostrarlo también en los LED o "
-"usa los botones de alguna forma."
+"Leeremos la dirección desde una brújula I2C, y registraremos las lecturas en un "
+"puerto serie. Si tienes tiempo, prueba a mostrarlo también en los LED o usa los "
+"botones de alguna forma."
#: src/exercises/bare-metal/compass.md
msgid "Hints:"
@@ -18654,10 +18323,10 @@ msgstr "Sugerencias:"
#: src/exercises/bare-metal/compass.md
msgid ""
-"Check the documentation for the [`lsm303agr`](https://docs.rs/lsm303agr/"
-"latest/lsm303agr/) and [`microbit-v2`](https://docs.rs/microbit-v2/latest/"
-"microbit/) crates, as well as the [micro:bit hardware](https://tech.microbit."
-"org/hardware/)."
+"Check the documentation for the [`lsm303agr`](https://docs.rs/lsm303agr/latest/"
+"lsm303agr/) and [`microbit-v2`](https://docs.rs/microbit-v2/latest/microbit/) "
+"crates, as well as the [micro:bit hardware](https://tech.microbit.org/"
+"hardware/)."
msgstr ""
"Consulta la documentación sobre los crates [`lsm303agr`](https://docs.rs/"
"lsm303agr/latest/lsm303agr/) y [`microbit-v2`](https://docs.rs/microbit-v2/"
@@ -18671,23 +18340,20 @@ msgstr ""
"La unidad de medición inercial LSM303AGR está conectada al bus I2C interno."
#: src/exercises/bare-metal/compass.md
-msgid ""
-"TWI is another name for I2C, so the I2C master peripheral is called TWIM."
+msgid "TWI is another name for I2C, so the I2C master peripheral is called TWIM."
msgstr ""
-"TWI es otro nombre para I2C, por lo que el periférico I2C maestro se llama "
-"TWIM."
+"TWI es otro nombre para I2C, por lo que el periférico I2C maestro se llama TWIM."
#: src/exercises/bare-metal/compass.md
#, fuzzy
msgid ""
-"The LSM303AGR driver needs something implementing the `embedded_hal::i2c::"
-"I2c` trait. The [`microbit::hal::Twim`](https://docs.rs/microbit-v2/latest/"
-"microbit/hal/struct.Twim.html) struct implements this."
+"The LSM303AGR driver needs something implementing the `embedded_hal::i2c::I2c` "
+"trait. The [`microbit::hal::Twim`](https://docs.rs/microbit-v2/latest/microbit/"
+"hal/struct.Twim.html) struct implements this."
msgstr ""
-"El controlador LSM303AGR necesita algo que implemente el trait "
-"`embedded_hal::blocking::i2c::WriteRead`. La estructura [`microbit::hal::"
-"Twim`](https://docs.rs/microbit-v2/latest/microbit/hal/struct.Twim.html) "
-"implementa esto."
+"El controlador LSM303AGR necesita algo que implemente el trait `embedded_hal::"
+"blocking::i2c::WriteRead`. La estructura [`microbit::hal::Twim`](https://docs."
+"rs/microbit-v2/latest/microbit/hal/struct.Twim.html) implementa esto."
#: src/exercises/bare-metal/compass.md
msgid ""
@@ -18695,26 +18361,25 @@ msgid ""
"struct.Board.html) struct with fields for the various pins and peripherals."
msgstr ""
"Tienes una estructura [`microbit::Board`](https://docs.rs/microbit-v2/latest/"
-"microbit/struct.Board.html) con campos para los distintos pines y "
-"periféricos."
+"microbit/struct.Board.html) con campos para los distintos pines y periféricos."
#: src/exercises/bare-metal/compass.md
msgid ""
-"You can also look at the [nRF52833 datasheet](https://infocenter.nordicsemi."
-"com/pdf/nRF52833_PS_v1.5.pdf) if you want, but it shouldn't be necessary for "
-"this exercise."
+"You can also look at the [nRF52833 datasheet](https://infocenter.nordicsemi.com/"
+"pdf/nRF52833_PS_v1.5.pdf) if you want, but it shouldn't be necessary for this "
+"exercise."
msgstr ""
"También puedes consultar la \\[hoja de datos nRF52833\\][nRF52833 datasheet]"
-"(https://infocenter.nordicsemi.com/pdf/nRF52833_PS_v1.5.pdf) si quieres, "
-"pero no debería ser necesario para este ejercicio."
+"(https://infocenter.nordicsemi.com/pdf/nRF52833_PS_v1.5.pdf) si quieres, pero "
+"no debería ser necesario para este ejercicio."
#: src/exercises/bare-metal/compass.md
msgid ""
"Download the [exercise template](../../comprehensive-rust-exercises.zip) and "
"look in the `compass` directory for the following files."
msgstr ""
-"Descarga la [plantilla de ejercicio](../../comprehensive-rust-exercises.zip) "
-"y busca los siguientes archivos en el directorio `compass`."
+"Descarga la [plantilla de ejercicio](../../comprehensive-rust-exercises.zip) y "
+"busca los siguientes archivos en el directorio `compass`."
#: src/exercises/bare-metal/compass.md src/exercises/bare-metal/rtc.md
#, fuzzy
@@ -18741,11 +18406,10 @@ msgid "See the serial output on Linux with:"
msgstr "Consulta la salida de serie en Linux con:"
#: src/exercises/bare-metal/compass.md
-msgid ""
-"Or on Mac OS something like (the device name may be slightly different):"
+msgid "Or on Mac OS something like (the device name may be slightly different):"
msgstr ""
-"En Mac OS debería ser algo como lo siguiente (el nombre del dispositivo "
-"puede ser algo diferente):"
+"En Mac OS debería ser algo como lo siguiente (el nombre del dispositivo puede "
+"ser algo diferente):"
#: src/exercises/bare-metal/compass.md
msgid "Use Ctrl+A Ctrl+Q to quit picocom."
@@ -18793,8 +18457,7 @@ msgstr "\"{},{},{}\\t{},{},{}\""
#: src/exercises/bare-metal/solutions-morning.md
msgid ""
-"// If button A is pressed, switch to the next mode and briefly blink all "
-"LEDs\n"
+"// If button A is pressed, switch to the next mode and briefly blink all LEDs\n"
" // on.\n"
msgstr ""
"// Si se pulsa el botón A, cambia al siguiente modo y haz que parpadeen "
@@ -18812,10 +18475,10 @@ msgid ""
"with QEMU's aarch64 ['virt'](https://qemu-project.gitlab.io/qemu/system/arm/"
"virt.html) board."
msgstr ""
-"Hasta ahora hemos hablado de microcontroladores, como la serie Cortex‐M de "
-"Arm. Ahora vamos a probar a escribir algo para Cortex-A. Para simplificar, "
-"solo trabajaremos con la placa ['virt'](https://qemu-project.gitlab.io/qemu/"
-"system/arm/virt.html) aarch64 de QEMU."
+"Hasta ahora hemos hablado de microcontroladores, como la serie Cortex‐M de Arm. "
+"Ahora vamos a probar a escribir algo para Cortex-A. Para simplificar, solo "
+"trabajaremos con la placa ['virt'](https://qemu-project.gitlab.io/qemu/system/"
+"arm/virt.html) aarch64 de QEMU."
#: src/bare-metal/aps.md
msgid ""
@@ -18824,8 +18487,8 @@ msgid ""
"processors do."
msgstr ""
"En términos generales, los microcontroladores no tienen un MMU ni varios "
-"niveles de privilegio (niveles de excepción en las CPU de Arm, anillos en "
-"x86), mientras que los procesadores de aplicaciones sí los tienen."
+"niveles de privilegio (niveles de excepción en las CPU de Arm, anillos en x86), "
+"mientras que los procesadores de aplicaciones sí los tienen."
#: src/bare-metal/aps.md
msgid ""
@@ -18838,8 +18501,7 @@ msgstr ""
"concreto, pero está diseñada exclusivamente para máquinas virtuales."
#: src/bare-metal/aps/entry-point.md
-msgid ""
-"Before we can start running Rust code, we need to do some initialisation."
+msgid "Before we can start running Rust code, we need to do some initialisation."
msgstr ""
"Antes de que podamos empezar a ejecutar código de Rust, tenemos que hacer "
"alguna inicialización."
@@ -18851,8 +18513,8 @@ msgid ""
".global entry\n"
"entry:\n"
" /*\n"
-" * Load and apply the memory management configuration, ready to enable "
-"MMU and\n"
+" * Load and apply the memory management configuration, ready to enable MMU "
+"and\n"
" * caches.\n"
" */\n"
" adrp x30, idmap\n"
@@ -18871,8 +18533,7 @@ msgid ""
" mov_i x30, .Lsctlrval\n"
"\n"
" /*\n"
-" * Ensure everything before this point has completed, then invalidate "
-"any\n"
+" * Ensure everything before this point has completed, then invalidate any\n"
" * potentially stale local TLB entries before they start being used.\n"
" */\n"
" isb\n"
@@ -18924,8 +18585,8 @@ msgstr ""
".global entry\n"
"entry:\n"
" /*\n"
-" * Load and apply the memory management configuration, ready to enable "
-"MMU and\n"
+" * Load and apply the memory management configuration, ready to enable MMU "
+"and\n"
" * caches.\n"
" */\n"
" adrp x30, idmap\n"
@@ -18944,8 +18605,7 @@ msgstr ""
" mov_i x30, .Lsctlrval\n"
"\n"
" /*\n"
-" * Ensure everything before this point has completed, then invalidate "
-"any\n"
+" * Ensure everything before this point has completed, then invalidate any\n"
" * potentially stale local TLB entries before they start being used.\n"
" */\n"
" isb\n"
@@ -18997,50 +18657,49 @@ msgid ""
"This is the same as it would be for C: initialising the processor state, "
"zeroing the BSS, and setting up the stack pointer."
msgstr ""
-"Es lo mismo que en C: inicializar el estado del procesador, poner a cero el "
-"BSS y configurar el puntero de la _stack_."
+"Es lo mismo que en C: inicializar el estado del procesador, poner a cero el BSS "
+"y configurar el puntero de la _stack_."
#: src/bare-metal/aps/entry-point.md
msgid ""
"The BSS (block starting symbol, for historical reasons) is the part of the "
"object file which containing statically allocated variables which are "
-"initialised to zero. They are omitted from the image, to avoid wasting space "
-"on zeroes. The compiler assumes that the loader will take care of zeroing "
-"them."
+"initialised to zero. They are omitted from the image, to avoid wasting space on "
+"zeroes. The compiler assumes that the loader will take care of zeroing them."
msgstr ""
-"El BSS (símbolo de inicio del bloque, por motivos históricos) es la parte "
-"del objeto que contiene variables asignadas de forma estática que se "
-"inicializan a cero. Se omiten en la imagen para evitar malgastar espacio con "
-"ceros. El compilador asume que el cargador se encargará de ponerlos a cero."
+"El BSS (símbolo de inicio del bloque, por motivos históricos) es la parte del "
+"objeto que contiene variables asignadas de forma estática que se inicializan a "
+"cero. Se omiten en la imagen para evitar malgastar espacio con ceros. El "
+"compilador asume que el cargador se encargará de ponerlos a cero."
#: src/bare-metal/aps/entry-point.md
msgid ""
-"The BSS may already be zeroed, depending on how memory is initialised and "
-"the image is loaded, but we zero it to be sure."
+"The BSS may already be zeroed, depending on how memory is initialised and the "
+"image is loaded, but we zero it to be sure."
msgstr ""
"Es posible que el BSS ya esté a cero, dependiendo de cómo se inicialice la "
-"memoria y cómo se cargue la imagen, aunque se pone igualmente a cero para "
-"estar seguros."
+"memoria y cómo se cargue la imagen, aunque se pone igualmente a cero para estar "
+"seguros."
#: src/bare-metal/aps/entry-point.md
msgid ""
-"We need to enable the MMU and cache before reading or writing any memory. If "
-"we don't:"
+"We need to enable the MMU and cache before reading or writing any memory. If we "
+"don't:"
msgstr ""
-"Necesitamos habilitar la MMU y la caché antes de leer o escribir memoria. Si "
-"no lo hacemos, sucederá lo siguiente:"
+"Necesitamos habilitar la MMU y la caché antes de leer o escribir memoria. Si no "
+"lo hacemos, sucederá lo siguiente:"
#: src/bare-metal/aps/entry-point.md
msgid ""
-"Unaligned accesses will fault. We build the Rust code for the `aarch64-"
-"unknown-none` target which sets `+strict-align` to prevent the compiler "
-"generating unaligned accesses, so it should be fine in this case, but this "
-"is not necessarily the case in general."
+"Unaligned accesses will fault. We build the Rust code for the `aarch64-unknown-"
+"none` target which sets `+strict-align` to prevent the compiler generating "
+"unaligned accesses, so it should be fine in this case, but this is not "
+"necessarily the case in general."
msgstr ""
-"Los accesos no alineados fallarán. Compilamos el código Rust para el "
-"objetivo `aarch64-unknown-none`, que define `+strict-align` para evitar que "
-"el compilador genere accesos no alineados. En este caso debería estar bien, "
-"pero no tiene por qué ser así en general."
+"Los accesos no alineados fallarán. Compilamos el código Rust para el objetivo "
+"`aarch64-unknown-none`, que define `+strict-align` para evitar que el "
+"compilador genere accesos no alineados. En este caso debería estar bien, pero "
+"no tiene por qué ser así en general."
#: src/bare-metal/aps/entry-point.md
msgid ""
@@ -19048,44 +18707,44 @@ msgid ""
"problem is that the VM is accessing memory directly with the cache disabled, "
"while the host has cacheable aliases to the same memory. Even if the host "
"doesn't explicitly access the memory, speculative accesses can lead to cache "
-"fills, and then changes from one or the other will get lost when the cache "
-"is cleaned or the VM enables the cache. (Cache is keyed by physical address, "
-"not VA or IPA.)"
-msgstr ""
-"Si se estuviera ejecutando en una máquina virtual, podría provocar problemas "
-"de coherencia en la caché. El problema es que la máquina virtual accede a la "
-"memoria directamente con la caché inhabilitada, mientras que el host cuenta "
-"con alias que se pueden almacenar en caché en la misma memoria. Incluso si "
-"el host no accede explícitamente a la memoria, los accesos especulativos "
-"pueden provocar que se llene la caché, haciendo que los cambios de uno u "
-"otro se pierdan cuando se borre la caché o cuando la máquina virtual la "
-"habilite. (La caché está codificada por dirección física, no por VA ni IPA)."
+"fills, and then changes from one or the other will get lost when the cache is "
+"cleaned or the VM enables the cache. (Cache is keyed by physical address, not "
+"VA or IPA.)"
+msgstr ""
+"Si se estuviera ejecutando en una máquina virtual, podría provocar problemas de "
+"coherencia en la caché. El problema es que la máquina virtual accede a la "
+"memoria directamente con la caché inhabilitada, mientras que el host cuenta con "
+"alias que se pueden almacenar en caché en la misma memoria. Incluso si el host "
+"no accede explícitamente a la memoria, los accesos especulativos pueden "
+"provocar que se llene la caché, haciendo que los cambios de uno u otro se "
+"pierdan cuando se borre la caché o cuando la máquina virtual la habilite. (La "
+"caché está codificada por dirección física, no por VA ni IPA)."
#: src/bare-metal/aps/entry-point.md
msgid ""
"For simplicity, we just use a hardcoded pagetable (see `idmap.S`) which "
-"identity maps the first 1 GiB of address space for devices, the next 1 GiB "
-"for DRAM, and another 1 GiB higher up for more devices. This matches the "
-"memory layout that QEMU uses."
+"identity maps the first 1 GiB of address space for devices, the next 1 GiB for "
+"DRAM, and another 1 GiB higher up for more devices. This matches the memory "
+"layout that QEMU uses."
msgstr ""
"Para simplificar, solo se utiliza una tabla de páginas codificada (consulta "
-"`idmap.S`) que mapea la identidad del primer GiB de espacio de direcciones "
-"para dispositivos, el siguiente GiB para DRAM y otro GiB más para más "
-"dispositivos. Esto coincide con la disposición de memoria que utiliza QEMU."
+"`idmap.S`) que mapea la identidad del primer GiB de espacio de direcciones para "
+"dispositivos, el siguiente GiB para DRAM y otro GiB más para más dispositivos. "
+"Esto coincide con la disposición de memoria que utiliza QEMU."
#: src/bare-metal/aps/entry-point.md
msgid ""
"We also set up the exception vector (`vbar_el1`), which we'll see more about "
"later."
msgstr ""
-"También configuramos el vector de excepción (`vbar_el1`), del que veremos "
-"más contenido en próximas dipositivas."
+"También configuramos el vector de excepción (`vbar_el1`), del que veremos más "
+"contenido en próximas dipositivas."
#: src/bare-metal/aps/entry-point.md
msgid ""
"All examples this afternoon assume we will be running at exception level 1 "
-"(EL1). If you need to run at a different exception level you'll need to "
-"modify `entry.S` accordingly."
+"(EL1). If you need to run at a different exception level you'll need to modify "
+"`entry.S` accordingly."
msgstr ""
"Todos los ejemplos de esta tarde se ejecutarán en el nivel de excepción 1 "
"(EL1). Si necesitas ejecutar en un nivel de excepción diferente, deberás "
@@ -19098,9 +18757,9 @@ msgstr "Ensamblaje integrado"
#: src/bare-metal/aps/inline-assembly.md
#, fuzzy
msgid ""
-"Sometimes we need to use assembly to do things that aren't possible with "
-"Rust code. For example, to make an HVC (hypervisor call) to tell the "
-"firmware to power off the system:"
+"Sometimes we need to use assembly to do things that aren't possible with Rust "
+"code. For example, to make an HVC (hypervisor call) to tell the firmware to "
+"power off the system:"
msgstr ""
"A veces necesitamos usar el ensamblador para hacer cosas que no son posibles "
"con código Rust. Por ejemplo, hacer un "
@@ -19155,19 +18814,19 @@ msgid ""
"(If you actually want to do this, use the [`smccc`](https://crates.io/crates/"
"smccc) crate which has wrappers for all these functions.)"
msgstr ""
-"(Si realmente quieres hacer esto, utiliza el crate [`smccc`](https://crates."
-"io/crates/smccc) que tiene envoltorios para todas estas funciones)."
+"(Si realmente quieres hacer esto, utiliza el crate [`smccc`](https://crates.io/"
+"crates/smccc) que tiene envoltorios para todas estas funciones)."
#: src/bare-metal/aps/inline-assembly.md
msgid ""
-"PSCI is the Arm Power State Coordination Interface, a standard set of "
-"functions to manage system and CPU power states, among other things. It is "
-"implemented by EL3 firmware and hypervisors on many systems."
+"PSCI is the Arm Power State Coordination Interface, a standard set of functions "
+"to manage system and CPU power states, among other things. It is implemented by "
+"EL3 firmware and hypervisors on many systems."
msgstr ""
"PSCI es la interfaz de coordinación de estado de alimentación de Arm, un "
-"conjunto estándar de funciones para gestionar los estados de alimentación "
-"del sistema y de la CPU, entre otras cosas. Lo implementan el firmware EL3 y "
-"los hipervisores en muchos sistemas."
+"conjunto estándar de funciones para gestionar los estados de alimentación del "
+"sistema y de la CPU, entre otras cosas. Lo implementan el firmware EL3 y los "
+"hipervisores en muchos sistemas."
#: src/bare-metal/aps/inline-assembly.md
msgid ""
@@ -19176,18 +18835,18 @@ msgid ""
"`inout` rather than `in` because the call could potentially clobber the "
"contents of the registers."
msgstr ""
-"La sintaxis `0 => _` significa inicializar el registro a 0 antes de ejecutar "
-"el código de ensamblaje integrado e ignorar su contenido después. "
-"Necesitamos utilizar `inout` en lugar de `in` porque la llamada podría "
-"alterar el contenido de los registros."
+"La sintaxis `0 => _` significa inicializar el registro a 0 antes de ejecutar el "
+"código de ensamblaje integrado e ignorar su contenido después. Necesitamos "
+"utilizar `inout` en lugar de `in` porque la llamada podría alterar el contenido "
+"de los registros."
#: src/bare-metal/aps/inline-assembly.md
msgid ""
-"This `main` function needs to be `#[no_mangle]` and `extern \"C\"` because "
-"it is called from our entry point in `entry.S`."
+"This `main` function needs to be `#[no_mangle]` and `extern \"C\"` because it "
+"is called from our entry point in `entry.S`."
msgstr ""
-"Esta función `main` debe ser `#[no_mangle]` y `extern \"C\"`, ya que se "
-"llama desde nuestro punto de entrada en `entry.S`."
+"Esta función `main` debe ser `#[no_mangle]` y `extern \"C\"`, ya que se llama "
+"desde nuestro punto de entrada en `entry.S`."
#: src/bare-metal/aps/inline-assembly.md
msgid ""
@@ -19200,10 +18859,10 @@ msgid ""
msgstr ""
"`_x0`–`_x3` son los valores de los registros `x0`–`x3`, que el bootloader "
"utiliza habitualmente para pasar elementos al árbol de dispositivos, como un "
-"puntero. De acuerdo con la convención de llamadas estándar de aarch64 (que "
-"es lo que `extern \"C\"` usa), los registros `x0`–`x7` se utilizan para los "
-"primeros ocho argumentos que se pasan a una función, de modo que `entry.S` "
-"no tiene que hacer nada especial, salvo asegurarse de que no cambia estos "
+"puntero. De acuerdo con la convención de llamadas estándar de aarch64 (que es "
+"lo que `extern \"C\"` usa), los registros `x0`–`x7` se utilizan para los "
+"primeros ocho argumentos que se pasan a una función, de modo que `entry.S` no "
+"tiene que hacer nada especial, salvo asegurarse de que no cambia estos "
"registros."
#: src/bare-metal/aps/inline-assembly.md
@@ -19236,8 +18895,8 @@ msgstr ""
#: src/bare-metal/aps/mmio.md
msgid ""
-"Volatile access: read or write operations may have side-effects, so prevent "
-"the compiler or hardware from reordering, duplicating or eliding them."
+"Volatile access: read or write operations may have side-effects, so prevent the "
+"compiler or hardware from reordering, duplicating or eliding them."
msgstr ""
"Acceso volátil: las operaciones de lectura o escritura pueden tener efectos "
"secundarios, por lo que se debe evitar que el compilador o el hardware las "
@@ -19245,14 +18904,13 @@ msgstr ""
#: src/bare-metal/aps/mmio.md
msgid ""
-"Usually if you write and then read, e.g. via a mutable reference, the "
-"compiler may assume that the value read is the same as the value just "
-"written, and not bother actually reading memory."
+"Usually if you write and then read, e.g. via a mutable reference, the compiler "
+"may assume that the value read is the same as the value just written, and not "
+"bother actually reading memory."
msgstr ""
-"Normalmente, si escribes y luego lees (por ejemplo, a través de una "
-"referencia mutable), el compilador puede suponer que el valor leído es el "
-"mismo que el que se acaba de escribir, sin molestarse si quiera en leer "
-"realmente la memoria."
+"Normalmente, si escribes y luego lees (por ejemplo, a través de una referencia "
+"mutable), el compilador puede suponer que el valor leído es el mismo que el que "
+"se acaba de escribir, sin molestarse si quiera en leer realmente la memoria."
#: src/bare-metal/aps/mmio.md
msgid ""
@@ -19278,8 +18936,8 @@ msgstr "Vamos a escribir un controlador de UART"
#: src/bare-metal/aps/uart.md
msgid ""
-"The QEMU 'virt' machine has a [PL011](https://developer.arm.com/"
-"documentation/ddi0183/g) UART, so let's write a driver for that."
+"The QEMU 'virt' machine has a [PL011](https://developer.arm.com/documentation/"
+"ddi0183/g) UART, so let's write a driver for that."
msgstr ""
"La máquina \"virt\" de QEMU tiene una UART [PL011]https://developer.arm.com/"
"documentation/ddi0183/g), así que vamos a escribir un controlador para ella."
@@ -19295,14 +18953,13 @@ msgid ""
" ///\n"
" /// # Safety\n"
" ///\n"
-" /// The given base address must point to the 8 MMIO control registers of "
-"a\n"
+" /// The given base address must point to the 8 MMIO control registers of a\n"
" /// PL011 device, which must be mapped into the address space of the "
"process\n"
" /// as device memory and not have any other aliases.\n"
msgstr ""
-"/// Construye una instancia nueva del controlador de UART para un "
-"dispositivo PL011 en la\n"
+"/// Construye una instancia nueva del controlador de UART para un dispositivo "
+"PL011 en la\n"
" /// dirección base proporcionada.\n"
" ///\n"
" /// # Seguridad\n"
@@ -19328,8 +18985,7 @@ msgid ""
" // registers of a PL011 device which is appropriately mapped.\n"
msgstr ""
"// Es seguro porque sabemos que la dirección base apunta a los registros\n"
-" // de control de un dispositivo PL011 que está asignado "
-"correctamente.\n"
+" // de control de un dispositivo PL011 que está asignado correctamente.\n"
#: src/bare-metal/aps/uart.md src/bare-metal/aps/better-uart/driver.md
msgid "// Write to the TX buffer.\n"
@@ -19343,24 +18999,23 @@ msgstr "// Espera hasta que el UART esté libre.\n"
msgid ""
"Note that `Uart::new` is unsafe while the other methods are safe. This is "
"because as long as the caller of `Uart::new` guarantees that its safety "
-"requirements are met (i.e. that there is only ever one instance of the "
-"driver for a given UART, and nothing else aliasing its address space), then "
-"it is always safe to call `write_byte` later because we can assume the "
-"necessary preconditions."
-msgstr ""
-"Ten en cuenta que `Uart::new` no es seguro, mientras que los otros métodos "
-"sí lo son. Esto se debe a que mientras que el llamador de `Uart::new` "
-"asegure que se cumplan sus requisitos de seguridad (es decir, que solo haya "
-"una instancia del controlador para una UART determinada y que nada más "
-"asigne alias a su espacio de direcciones), siempre es más seguro llamar a "
-"`write_byte` más adelante, ya que podemos asumir\\ las condiciones previas "
-"necesarias."
+"requirements are met (i.e. that there is only ever one instance of the driver "
+"for a given UART, and nothing else aliasing its address space), then it is "
+"always safe to call `write_byte` later because we can assume the necessary "
+"preconditions."
+msgstr ""
+"Ten en cuenta que `Uart::new` no es seguro, mientras que los otros métodos sí "
+"lo son. Esto se debe a que mientras que el llamador de `Uart::new` asegure que "
+"se cumplan sus requisitos de seguridad (es decir, que solo haya una instancia "
+"del controlador para una UART determinada y que nada más asigne alias a su "
+"espacio de direcciones), siempre es más seguro llamar a `write_byte` más "
+"adelante, ya que podemos asumir\\ las condiciones previas necesarias."
#: src/bare-metal/aps/uart.md
msgid ""
-"We could have done it the other way around (making `new` safe but "
-"`write_byte` unsafe), but that would be much less convenient to use as every "
-"place that calls `write_byte` would need to reason about the safety"
+"We could have done it the other way around (making `new` safe but `write_byte` "
+"unsafe), but that would be much less convenient to use as every place that "
+"calls `write_byte` would need to reason about the safety"
msgstr ""
"Podríamos haberlo hecho al revés (haciendo que `new` fuese seguro y "
"`write_byte` no seguro), pero\\sería mucho menos cómodo de usar, ya que cada "
@@ -19368,13 +19023,13 @@ msgstr ""
#: src/bare-metal/aps/uart.md
msgid ""
-"This is a common pattern for writing safe wrappers of unsafe code: moving "
-"the burden of proof for soundness from a large number of places to a smaller "
-"number of places."
+"This is a common pattern for writing safe wrappers of unsafe code: moving the "
+"burden of proof for soundness from a large number of places to a smaller number "
+"of places."
msgstr ""
-"Este es un patrón común para escribir envoltorios seguros de código "
-"inseguro: mover la carga de la prueba de seguridad de un gran número de "
-"lugares a otro más pequeño."
+"Este es un patrón común para escribir envoltorios seguros de código inseguro: "
+"mover la carga de la prueba de seguridad de un gran número de lugares a otro "
+"más pequeño."
#: src/bare-metal/aps/uart/traits.md
msgid "More traits"
@@ -19382,11 +19037,11 @@ msgstr "Más traits"
#: src/bare-metal/aps/uart/traits.md
msgid ""
-"We derived the `Debug` trait. It would be useful to implement a few more "
-"traits too."
+"We derived the `Debug` trait. It would be useful to implement a few more traits "
+"too."
msgstr ""
-"Hemos derivado el trait `Debug`. También sería útil implementar algunos "
-"traits más."
+"Hemos derivado el trait `Debug`. También sería útil implementar algunos traits "
+"más."
#: src/bare-metal/aps/uart/traits.md
#, fuzzy
@@ -19402,8 +19057,8 @@ msgid ""
"Implementing `Write` lets us use the `write!` and `writeln!` macros with our "
"`Uart` type."
msgstr ""
-"Implementar `Write` nos permite utilizar las macros `write!` y `writeln!` "
-"con nuestro tipo `Uart`."
+"Implementar `Write` nos permite utilizar las macros `write!` y `writeln!` con "
+"nuestro tipo `Uart`."
#: src/bare-metal/aps/uart/traits.md
msgid ""
@@ -19421,15 +19076,15 @@ msgstr "Un controlador UART mejor"
msgid ""
"The PL011 actually has [a bunch more registers](https://developer.arm.com/"
"documentation/ddi0183/g/programmers-model/summary-of-registers), and adding "
-"offsets to construct pointers to access them is error-prone and hard to "
-"read. Plus, some of them are bit fields which would be nice to access in a "
-"structured way."
+"offsets to construct pointers to access them is error-prone and hard to read. "
+"Plus, some of them are bit fields which would be nice to access in a structured "
+"way."
msgstr ""
"En realidad, PL011 tiene [muchos registros más](https://developer.arm.com/"
"documentation/ddi0183/g/programmers-model/summary-of-registers), por lo que "
-"añadir desplazamientos para crear punteros que les permita acceder a ellos "
-"da lugar a errores y dificulta la lectura. Además, algunos de ellos son "
-"campos de bits a los que estaría bien acceder de forma estructurada."
+"añadir desplazamientos para crear punteros que les permita acceder a ellos da "
+"lugar a errores y dificulta la lectura. Además, algunos de ellos son campos de "
+"bits a los que estaría bien acceder de forma estructurada."
#: src/bare-metal/aps/better-uart.md
msgid "Offset"
@@ -19593,8 +19248,8 @@ msgstr "También hay algunos registros de ID que se han omitido para abreviar."
#: src/bare-metal/aps/better-uart/bitflags.md
msgid ""
-"The [`bitflags`](https://crates.io/crates/bitflags) crate is useful for "
-"working with bitflags."
+"The [`bitflags`](https://crates.io/crates/bitflags) crate is useful for working "
+"with bitflags."
msgstr ""
"El crate [`bitflags`](https://crates.io/crates/bitflags) resulta útil para "
"trabajar con bitflags."
@@ -19641,11 +19296,11 @@ msgstr "/// Indicador de anillo.\n"
#: src/bare-metal/aps/better-uart/bitflags.md
msgid ""
-"The `bitflags!` macro creates a newtype something like `Flags(u16)`, along "
-"with a bunch of method implementations to get and set flags."
+"The `bitflags!` macro creates a newtype something like `Flags(u16)`, along with "
+"a bunch of method implementations to get and set flags."
msgstr ""
-"La macro `bitflags!` crea un newtype, como `Flags(u16)`, junto con un montón "
-"de implementaciones de métodos para obtener y definir _flags_ (banderas)."
+"La macro `bitflags!` crea un newtype, como `Flags(u16)`, junto con un montón de "
+"implementaciones de métodos para obtener y definir _flags_ (banderas)."
#: src/bare-metal/aps/better-uart/registers.md
msgid "Multiple registers"
@@ -19655,8 +19310,8 @@ msgstr "Varios registros"
msgid ""
"We can use a struct to represent the memory layout of the UART's registers."
msgstr ""
-"Podemos utilizar una estructura para representar la disposición de la "
-"memoria de los registros de UART."
+"Podemos utilizar una estructura para representar la disposición de la memoria "
+"de los registros de UART."
#: src/bare-metal/aps/better-uart/registers.md
msgid ""
@@ -19669,9 +19324,9 @@ msgstr ""
"[`#[repr(C)]`](https://doc.rust-lang.org/reference/type-layout.html#the-c-"
"representation) indica al compilador que ordene los campos de la estructura "
"siguiendo las mismas reglas que en C. Esto es necesario para que nuestra "
-"estructura tenga un diseño predecible, ya que la representación "
-"predeterminada de Rust permite que el compilador (entre otras cosas) "
-"reordene los campos como crea conveniente."
+"estructura tenga un diseño predecible, ya que la representación predeterminada "
+"de Rust permite que el compilador (entre otras cosas) reordene los campos como "
+"crea conveniente."
#: src/bare-metal/aps/better-uart/driver.md
msgid "Now let's use the new `Registers` struct in our driver."
@@ -19690,8 +19345,8 @@ msgid ""
" // of a PL011 device which is appropriately mapped.\n"
msgstr ""
"// Es seguro porque sabemos que self.registers apunta\n"
-" // a los registros de control de un dispositivo PL011 que está "
-"asignado correctamente.\n"
+" // a los registros de control de un dispositivo PL011 que está asignado "
+"correctamente.\n"
#: src/bare-metal/aps/better-uart/driver.md
msgid ""
@@ -19708,8 +19363,8 @@ msgid ""
" // registers of a PL011 device which is appropriately mapped.\n"
msgstr ""
"// Es seguro porque sabemos que self.registers apunta\n"
-" // a los registros de control de un dispositivo PL011 que está "
-"asignado correctamente.\n"
+" // a los registros de control de un dispositivo PL011 que está asignado "
+"correctamente.\n"
#: src/bare-metal/aps/better-uart/driver.md
msgid "// TODO: Check for error conditions in bits 8-11.\n"
@@ -19720,9 +19375,8 @@ msgid ""
"Note the use of `addr_of!` / `addr_of_mut!` to get pointers to individual "
"fields without creating an intermediate reference, which would be unsound."
msgstr ""
-"Fíjate en el uso de `addr_of!` y `addr_of_mut!` para llevar punteros a "
-"campos individuales sin crear una referencia intermedia. Sería una acción "
-"insegura."
+"Fíjate en el uso de `addr_of!` y `addr_of_mut!` para llevar punteros a campos "
+"individuales sin crear una referencia intermedia. Sería una acción insegura."
#: src/bare-metal/aps/better-uart/using.md src/bare-metal/aps/logging/using.md
msgid "Using it"
@@ -19733,8 +19387,8 @@ msgid ""
"Let's write a small program using our driver to write to the serial console, "
"and echo incoming bytes."
msgstr ""
-"Vamos a crear un pequeño programa con nuestro controlador para escribir en "
-"la consola serie y compartir los bytes entrantes."
+"Vamos a crear un pequeño programa con nuestro controlador para escribir en la "
+"consola serie y compartir los bytes entrantes."
#: src/bare-metal/aps/better-uart/using.md src/bare-metal/aps/logging/using.md
#: src/exercises/bare-metal/solutions-afternoon.md
@@ -19748,8 +19402,8 @@ msgid ""
"// SAFETY: `PL011_BASE_ADDRESS` is the base address of a PL011 device, and\n"
" // nothing else accesses that address range.\n"
msgstr ""
-"// Es seguro porque `PL011_BASE_ADDRESS` es la dirección base de un "
-"dispositivo PL011\n"
+"// Es seguro porque `PL011_BASE_ADDRESS` es la dirección base de un dispositivo "
+"PL011\n"
" // y ninguna más accede a ese intervalo de direcciones.\n"
#: src/bare-metal/aps/better-uart/using.md src/bare-metal/aps/logging/using.md
@@ -19780,8 +19434,8 @@ msgid ""
"notes there for details."
msgstr ""
"Al igual que en el ejemplo de [ensamblaje integrado](../inline-assembly.md), "
-"esta función `main` se llama desde nuestro código de punto de entrada en "
-"`entry.S`. Consulta las notas del orador para obtener más información."
+"esta función `main` se llama desde nuestro código de punto de entrada en `entry."
+"S`. Consulta las notas del orador para obtener más información."
#: src/bare-metal/aps/better-uart/using.md
msgid ""
@@ -19791,9 +19445,8 @@ msgstr ""
#: src/bare-metal/aps/logging.md
msgid ""
-"It would be nice to be able to use the logging macros from the [`log`]"
-"(https://crates.io/crates/log) crate. We can do this by implementing the "
-"`Log` trait."
+"It would be nice to be able to use the logging macros from the [`log`](https://"
+"crates.io/crates/log) crate. We can do this by implementing the `Log` trait."
msgstr ""
"Estaría bien poder utilizar las macros de registro del crate [`log`](https://"
"crates.io/crates/log). Podemos hacerlo implementando el trait `Log`."
@@ -19840,16 +19493,16 @@ msgstr ""
#: src/bare-metal/aps/exceptions.md
msgid ""
"AArch64 defines an exception vector table with 16 entries, for 4 types of "
-"exceptions (synchronous, IRQ, FIQ, SError) from 4 states (current EL with "
-"SP0, current EL with SPx, lower EL using AArch64, lower EL using AArch32). "
-"We implement this in assembly to save volatile registers to the stack before "
+"exceptions (synchronous, IRQ, FIQ, SError) from 4 states (current EL with SP0, "
+"current EL with SPx, lower EL using AArch64, lower EL using AArch32). We "
+"implement this in assembly to save volatile registers to the stack before "
"calling into Rust code:"
msgstr ""
-"AArch64 define una tabla de vectores de excepción con 16 entradas, para 4 "
-"tipos de excepciones (synchronous, IRQ, FIQ, SError) desde 4 estados (EL "
-"actual con SP0, EL actual con SPx, EL inferior con AArch64 y EL inferior con "
-"AArch32). Implementamos esto en el ensamblaje para guardar los registros "
-"volátiles en la _stack_ antes de llamar al código de Rust:"
+"AArch64 define una tabla de vectores de excepción con 16 entradas, para 4 tipos "
+"de excepciones (synchronous, IRQ, FIQ, SError) desde 4 estados (EL actual con "
+"SP0, EL actual con SPx, EL inferior con AArch64 y EL inferior con AArch32). "
+"Implementamos esto en el ensamblaje para guardar los registros volátiles en la "
+"_stack_ antes de llamar al código de Rust:"
#: src/bare-metal/aps/exceptions.md
msgid "EL is exception level; all our examples this afternoon run in EL1."
@@ -19859,36 +19512,36 @@ msgstr ""
#: src/bare-metal/aps/exceptions.md
msgid ""
-"For simplicity we aren't distinguishing between SP0 and SPx for the current "
-"EL exceptions, or between AArch32 and AArch64 for the lower EL exceptions."
+"For simplicity we aren't distinguishing between SP0 and SPx for the current EL "
+"exceptions, or between AArch32 and AArch64 for the lower EL exceptions."
msgstr ""
-"Para simplificar, no distinguimos entre SP0 y SPx para las excepciones del "
-"EL actual, ni entre AArch32 y AArch64 para las excepciones de EL inferiores."
+"Para simplificar, no distinguimos entre SP0 y SPx para las excepciones del EL "
+"actual, ni entre AArch32 y AArch64 para las excepciones de EL inferiores."
#: src/bare-metal/aps/exceptions.md
msgid ""
-"For this example we just log the exception and power down, as we don't "
-"expect any of them to actually happen."
+"For this example we just log the exception and power down, as we don't expect "
+"any of them to actually happen."
msgstr ""
-"En este ejemplo, nos limitaremos a registrar la excepción y a apagarla, ya "
-"que no esperamos que se produzca ninguna."
+"En este ejemplo, nos limitaremos a registrar la excepción y a apagarla, ya que "
+"no esperamos que se produzca ninguna."
#: src/bare-metal/aps/exceptions.md
msgid ""
-"We can think of exception handlers and our main execution context more or "
-"less like different threads. [`Send` and `Sync`](../../concurrency/send-sync."
-"md) will control what we can share between them, just like with threads. For "
-"example, if we want to share some value between exception handlers and the "
-"rest of the program, and it's `Send` but not `Sync`, then we'll need to wrap "
-"it in something like a `Mutex` and put it in a static."
-msgstr ""
-"Podríamos pensar en los controladores de excepciones y en nuestro contexto "
-"de ejecución principal como si fueran hilos diferentes. [`Send` y `Sync`]"
-"(../../concurrency/send-sync.md) controlarán lo que podemos compartir entre "
-"ellos, igual que con los hilos. Por ejemplo, si queremos compartir algún "
-"valor entre los controladores de excepciones y el resto del programa, y es "
-"`Send`en vez de `Sync`, necesitaremos envolverlo en un `Mutex`, por ejemplo, "
-"y ponerlo en un estático."
+"We can think of exception handlers and our main execution context more or less "
+"like different threads. [`Send` and `Sync`](../../concurrency/send-sync.md) "
+"will control what we can share between them, just like with threads. For "
+"example, if we want to share some value between exception handlers and the rest "
+"of the program, and it's `Send` but not `Sync`, then we'll need to wrap it in "
+"something like a `Mutex` and put it in a static."
+msgstr ""
+"Podríamos pensar en los controladores de excepciones y en nuestro contexto de "
+"ejecución principal como si fueran hilos diferentes. [`Send` y `Sync`](../../"
+"concurrency/send-sync.md) controlarán lo que podemos compartir entre ellos, "
+"igual que con los hilos. Por ejemplo, si queremos compartir algún valor entre "
+"los controladores de excepciones y el resto del programa, y es `Send`en vez de "
+"`Sync`, necesitaremos envolverlo en un `Mutex`, por ejemplo, y ponerlo en un "
+"estático."
#: src/bare-metal/aps/other-projects.md
msgid "[oreboot](https://github.com/oreboot/oreboot)"
@@ -19911,8 +19564,8 @@ msgid ""
"[Rust RaspberryPi OS tutorial](https://github.com/rust-embedded/rust-"
"raspberrypi-OS-tutorials)"
msgstr ""
-"[Tutorial del SO de Rust en RaspberryPi][Rust RaspberryPi OS tutorial]"
-"(https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials)"
+"[Tutorial del SO de Rust en RaspberryPi][Rust RaspberryPi OS tutorial](https://"
+"github.com/rust-embedded/rust-raspberrypi-OS-tutorials)"
#: src/bare-metal/aps/other-projects.md
msgid ""
@@ -19927,9 +19580,8 @@ msgid ""
"Some dodginess around cache maintenance and initialisation in Rust, not "
"necessarily a good example to copy for production code."
msgstr ""
-"Algunas dudas sobre el mantenimiento de la caché y la inicialización en "
-"Rust, aunque no es precisamente un buen ejemplo para copiar en código de "
-"producción."
+"Algunas dudas sobre el mantenimiento de la caché y la inicialización en Rust, "
+"aunque no es precisamente un buen ejemplo para copiar en código de producción."
#: src/bare-metal/aps/other-projects.md
msgid "[`cargo-call-stack`](https://crates.io/crates/cargo-call-stack)"
@@ -19944,9 +19596,9 @@ msgid ""
"The RaspberryPi OS tutorial runs Rust code before the MMU and caches are "
"enabled. This will read and write memory (e.g. the stack). However:"
msgstr ""
-"El tutorial del sistema operativo en RaspberryPi ejecuta código de Rust "
-"antes de que la MMU y las cachés se habiliten. De este modo, se leerá y "
-"escribirá memoria (por ejemplo, la _stack_). Sin embargo:"
+"El tutorial del sistema operativo en RaspberryPi ejecuta código de Rust antes "
+"de que la MMU y las cachés se habiliten. De este modo, se leerá y escribirá "
+"memoria (por ejemplo, la _stack_). Sin embargo:"
#: src/bare-metal/aps/other-projects.md
msgid ""
@@ -19957,8 +19609,8 @@ msgid ""
msgstr ""
"Sin la MMU y la caché, los accesos no alineados fallarán. Se compila con "
"`aarch64-unknown-none`, que define `+strict-align` para evitar que el "
-"compilador genere accesos no alineados. Debería estar bien, pero no tiene "
-"por qué ser así, en general."
+"compilador genere accesos no alineados. Debería estar bien, pero no tiene por "
+"qué ser así, en general."
#: src/bare-metal/aps/other-projects.md
msgid ""
@@ -19970,15 +19622,15 @@ msgid ""
"alright in this particular case (running directly on the hardware with no "
"hypervisor), but isn't a good pattern in general."
msgstr ""
-"Si se estuviera ejecutando en una máquina virtual, podría provocar problemas "
-"de coherencia en la caché. El problema es que la máquina virtual accede a la "
-"memoria directamente con la caché inhabilitada, mientras que el host cuenta "
-"con alias que se pueden almacenar en caché en la misma memoria. Incluso si "
-"el host no accede explícitamente a la memoria, los accesos especulativos "
-"pueden provocar que se llene la caché, haciendo que los cambios de uno u "
-"otro se pierdan. De nuevo, es correcto en este caso particular (si se "
-"ejecuta directamente en el hardware sin hipervisor) pero, por lo general, no "
-"es un buen patrón."
+"Si se estuviera ejecutando en una máquina virtual, podría provocar problemas de "
+"coherencia en la caché. El problema es que la máquina virtual accede a la "
+"memoria directamente con la caché inhabilitada, mientras que el host cuenta con "
+"alias que se pueden almacenar en caché en la misma memoria. Incluso si el host "
+"no accede explícitamente a la memoria, los accesos especulativos pueden "
+"provocar que se llene la caché, haciendo que los cambios de uno u otro se "
+"pierdan. De nuevo, es correcto en este caso particular (si se ejecuta "
+"directamente en el hardware sin hipervisor) pero, por lo general, no es un buen "
+"patrón."
#: src/bare-metal/useful-crates.md
msgid "Useful crates"
@@ -19995,55 +19647,51 @@ msgstr ""
#: src/bare-metal/useful-crates/zerocopy.md
msgid ""
"The [`zerocopy`](https://docs.rs/zerocopy/) crate (from Fuchsia) provides "
-"traits and macros for safely converting between byte sequences and other "
-"types."
+"traits and macros for safely converting between byte sequences and other types."
msgstr ""
"El crate [`zerocopy`](https://docs.rs/zerocopy/) (de Fuchsia) proporciona "
-"traits y macros para realizar conversiones seguras entre secuencias de bytes "
-"y otros tipos."
+"traits y macros para realizar conversiones seguras entre secuencias de bytes y "
+"otros tipos."
#: src/bare-metal/useful-crates/zerocopy.md
msgid ""
"This is not suitable for MMIO (as it doesn't use volatile reads and writes), "
-"but can be useful for working with structures shared with hardware e.g. by "
-"DMA, or sent over some external interface."
+"but can be useful for working with structures shared with hardware e.g. by DMA, "
+"or sent over some external interface."
msgstr ""
-"No es adecuado para MMIO (ya que no utiliza lecturas y escrituras "
-"volátiles), pero puede ser útil para trabajar con estructuras compartidas "
-"con hardware (por ejemplo, mediante DMA) o enviadas a través de alguna "
-"interfaz externa."
+"No es adecuado para MMIO (ya que no utiliza lecturas y escrituras volátiles), "
+"pero puede ser útil para trabajar con estructuras compartidas con hardware (por "
+"ejemplo, mediante DMA) o enviadas a través de alguna interfaz externa."
#: src/bare-metal/useful-crates/zerocopy.md
msgid ""
-"`FromBytes` can be implemented for types for which any byte pattern is "
-"valid, and so can safely be converted from an untrusted sequence of bytes."
+"`FromBytes` can be implemented for types for which any byte pattern is valid, "
+"and so can safely be converted from an untrusted sequence of bytes."
msgstr ""
-"`FromBytes` se puede implementar en tipos en los que cualquier patrón de "
-"bytes es válido, por lo que se puede convertir de forma segura a partir de "
-"una secuencia de bytes que no es fiable."
+"`FromBytes` se puede implementar en tipos en los que cualquier patrón de bytes "
+"es válido, por lo que se puede convertir de forma segura a partir de una "
+"secuencia de bytes que no es fiable."
#: src/bare-metal/useful-crates/zerocopy.md
msgid ""
"Attempting to derive `FromBytes` for these types would fail, because "
-"`RequestType` doesn't use all possible u32 values as discriminants, so not "
-"all byte patterns are valid."
+"`RequestType` doesn't use all possible u32 values as discriminants, so not all "
+"byte patterns are valid."
msgstr ""
"Si se intenta derivar `FromBytes` para estos tipos, se produciría un error, "
"pues `RequestType` no utiliza todos los valores u32 posibles como "
"discriminantes y, por tanto, todos los patrones de bytes son válidos."
#: src/bare-metal/useful-crates/zerocopy.md
-msgid ""
-"`zerocopy::byteorder` has types for byte-order aware numeric primitives."
+msgid "`zerocopy::byteorder` has types for byte-order aware numeric primitives."
msgstr ""
"`zerocopy::byteorder` tiene tipos para primitivos numéricos conscientes del "
"orden de bytes."
#: src/bare-metal/useful-crates/zerocopy.md
msgid ""
-"Run the example with `cargo run` under `src/bare-metal/useful-crates/"
-"zerocopy-example/`. (It won't run in the Playground because of the crate "
-"dependency.)"
+"Run the example with `cargo run` under `src/bare-metal/useful-crates/zerocopy-"
+"example/`. (It won't run in the Playground because of the crate dependency.)"
msgstr ""
"Ejecuta el ejemplo con `cargo run` en `src/bare-metal/useful-crates/zerocopy-"
"example/`. (No se ejecutará en el playground debido a la dependencia del "
@@ -20051,13 +19699,12 @@ msgstr ""
#: src/bare-metal/useful-crates/aarch64-paging.md
msgid ""
-"The [`aarch64-paging`](https://crates.io/crates/aarch64-paging) crate lets "
-"you create page tables according to the AArch64 Virtual Memory System "
-"Architecture."
+"The [`aarch64-paging`](https://crates.io/crates/aarch64-paging) crate lets you "
+"create page tables according to the AArch64 Virtual Memory System Architecture."
msgstr ""
"El crate [`aarch64-paging`](https://crates.io/crates/aarch64-paging) permite "
-"crear tablas de páginas de acuerdo con la arquitectura del sistema de "
-"memoria virtual AArch64."
+"crear tablas de páginas de acuerdo con la arquitectura del sistema de memoria "
+"virtual AArch64."
#: src/bare-metal/useful-crates/aarch64-paging.md
msgid "// Create a new page table with identity mapping.\n"
@@ -20073,50 +19720,49 @@ msgstr "// Configura `TTBR0_EL1` para activar la tabla de páginas.\n"
#: src/bare-metal/useful-crates/aarch64-paging.md
msgid ""
-"For now it only supports EL1, but support for other exception levels should "
-"be straightforward to add."
+"For now it only supports EL1, but support for other exception levels should be "
+"straightforward to add."
msgstr ""
"Por ahora, solo es compatible con EL1, pero debería ser sencillo añadir "
"compatibilidad con otros niveles de excepción."
#: src/bare-metal/useful-crates/aarch64-paging.md
msgid ""
-"This is used in Android for the [Protected VM Firmware](https://cs.android."
-"com/android/platform/superproject/+/master:packages/modules/Virtualization/"
-"pvmfw/)."
+"This is used in Android for the [Protected VM Firmware](https://cs.android.com/"
+"android/platform/superproject/+/master:packages/modules/Virtualization/pvmfw/)."
msgstr ""
-"Se utiliza en Android para el [Firmware de Máquina Virtual Protegida]"
-"(https://cs.android.com/android/platform/superproject/+/master:packages/"
-"modules/Virtualization/pvmfw/)."
+"Se utiliza en Android para el [Firmware de Máquina Virtual Protegida](https://"
+"cs.android.com/android/platform/superproject/+/master:packages/modules/"
+"Virtualization/pvmfw/)."
#: src/bare-metal/useful-crates/aarch64-paging.md
msgid ""
-"There's no easy way to run this example, as it needs to run on real hardware "
-"or under QEMU."
+"There's no easy way to run this example, as it needs to run on real hardware or "
+"under QEMU."
msgstr ""
"No hay una forma sencilla de ejecutar este ejemplo, ya que debe hacerse en "
"hardware real o en QEMU."
#: src/bare-metal/useful-crates/buddy_system_allocator.md
msgid ""
-"[`buddy_system_allocator`](https://crates.io/crates/buddy_system_allocator) "
-"is a third-party crate implementing a basic buddy system allocator. It can "
-"be used both for [`LockedHeap`](https://docs.rs/buddy_system_allocator/0.9.0/"
+"[`buddy_system_allocator`](https://crates.io/crates/buddy_system_allocator) is "
+"a third-party crate implementing a basic buddy system allocator. It can be used "
+"both for [`LockedHeap`](https://docs.rs/buddy_system_allocator/0.9.0/"
"buddy_system_allocator/struct.LockedHeap.html) implementing [`GlobalAlloc`]"
"(https://doc.rust-lang.org/core/alloc/trait.GlobalAlloc.html) so you can use "
-"the standard `alloc` crate (as we saw [before](../alloc.md)), or for "
-"allocating other address space. For example, we might want to allocate MMIO "
-"space for PCI BARs:"
+"the standard `alloc` crate (as we saw [before](../alloc.md)), or for allocating "
+"other address space. For example, we might want to allocate MMIO space for PCI "
+"BARs:"
msgstr ""
-"[`buddy_system_allocator`](https://crates.io/crates/buddy_system_allocator) "
-"es un crate de terceros que implementa un asignador básico del sistema "
-"buddy. Se puede utilizar tanto para [`LockedHeap`](https://docs.rs/"
+"[`buddy_system_allocator`](https://crates.io/crates/buddy_system_allocator) es "
+"un crate de terceros que implementa un asignador básico del sistema buddy. Se "
+"puede utilizar tanto para [`LockedHeap`](https://docs.rs/"
"buddy_system_allocator/0.9.0/buddy_system_allocator/struct.LockedHeap.html) "
"implementando [`GlobalAlloc`](https://doc.rust-lang.org/core/alloc/trait."
"GlobalAlloc.html), de forma que puedas usar el crate `alloc` estándar (tal y "
-"como vimos [antes](../alloc.md)), o para asignar otro espacio de "
-"direcciones. Por ejemplo, podríamos querer asignar espacio MMIO para los "
-"registros de dirección base (BAR) de PCI:"
+"como vimos [antes](../alloc.md)), o para asignar otro espacio de direcciones. "
+"Por ejemplo, podríamos querer asignar espacio MMIO para los registros de "
+"dirección base (BAR) de PCI:"
#: src/bare-metal/useful-crates/buddy_system_allocator.md
msgid "PCI BARs always have alignment equal to their size."
@@ -20124,33 +19770,29 @@ msgstr "Los BAR de PCI siempre tienen una alineación igual a su tamaño."
#: src/bare-metal/useful-crates/buddy_system_allocator.md
msgid ""
-"Run the example with `cargo run` under `src/bare-metal/useful-crates/"
-"allocator-example/`. (It won't run in the Playground because of the crate "
-"dependency.)"
+"Run the example with `cargo run` under `src/bare-metal/useful-crates/allocator-"
+"example/`. (It won't run in the Playground because of the crate dependency.)"
msgstr ""
-"Ejecuta el ejemplo con `cargo run` en `src/bare-metal/useful-crates/"
-"allocator-example/`. (No se ejecutará en el playground debido a la "
-"dependencia del crate)."
+"Ejecuta el ejemplo con `cargo run` en `src/bare-metal/useful-crates/allocator-"
+"example/`. (No se ejecutará en el playground debido a la dependencia del crate)."
#: src/bare-metal/useful-crates/tinyvec.md
msgid ""
"Sometimes you want something which can be resized like a `Vec`, but without "
-"heap allocation. [`tinyvec`](https://crates.io/crates/tinyvec) provides "
-"this: a vector backed by an array or slice, which could be statically "
-"allocated or on the stack, which keeps track of how many elements are used "
-"and panics if you try to use more than are allocated."
-msgstr ""
-"A veces, se necesita algo que se pueda cambiar de tamaño, como `Vec`, pero "
-"sin asignación de _heap_. [`tinyvec`](https://crates.io/crates/tinyvec) "
-"ofrece un vector respaldado por un array o slice, que se podría asignar "
-"estáticamente o en la _stack_, y que hace un seguimiento de cuántos "
-"elementos se usan, entrando en _panic_ si intentas utilizar más elementos de "
-"los asignados."
+"heap allocation. [`tinyvec`](https://crates.io/crates/tinyvec) provides this: a "
+"vector backed by an array or slice, which could be statically allocated or on "
+"the stack, which keeps track of how many elements are used and panics if you "
+"try to use more than are allocated."
+msgstr ""
+"A veces, se necesita algo que se pueda cambiar de tamaño, como `Vec`, pero sin "
+"asignación de _heap_. [`tinyvec`](https://crates.io/crates/tinyvec) ofrece un "
+"vector respaldado por un array o slice, que se podría asignar estáticamente o "
+"en la _stack_, y que hace un seguimiento de cuántos elementos se usan, entrando "
+"en _panic_ si intentas utilizar más elementos de los asignados."
#: src/bare-metal/useful-crates/tinyvec.md
msgid ""
-"`tinyvec` requires that the element type implement `Default` for "
-"initialisation."
+"`tinyvec` requires that the element type implement `Default` for initialisation."
msgstr ""
"`tinyvec` requiere que el tipo de elemento implemente `Default` para la "
"inicialización."
@@ -20159,8 +19801,8 @@ msgstr ""
msgid ""
"The Rust Playground includes `tinyvec`, so this example will run fine inline."
msgstr ""
-"El playground de Rust incluye `tinyvec`, por lo que este ejemplo se "
-"ejecutará bien aunque esté insertado."
+"El playground de Rust incluye `tinyvec`, por lo que este ejemplo se ejecutará "
+"bien aunque esté insertado."
#: src/bare-metal/useful-crates/spin.md
msgid ""
@@ -20170,8 +19812,8 @@ msgid ""
msgstr ""
"`std::sync::Mutex` y el resto de los primitivos de sincronización de `std::"
"sync` no están disponibles en `core` o `alloc`. ¿Cómo podemos gestionar la "
-"sincronización o la mutabilidad interior para, por ejemplo, compartir el "
-"estado entre diferentes CPUs?"
+"sincronización o la mutabilidad interior para, por ejemplo, compartir el estado "
+"entre diferentes CPUs?"
#: src/bare-metal/useful-crates/spin.md
msgid ""
@@ -20193,9 +19835,9 @@ msgid ""
"`spin` also has a ticket lock mutex implementation; equivalents of `RwLock`, "
"`Barrier` and `Once` from `std::sync`; and `Lazy` for lazy initialisation."
msgstr ""
-"`spin` también cuenta con una implementación de exclusión mutua de bloqueo "
-"de tickets; equivalentes de `RwLock`, `Barrier` y `Once` de `std::sync`, y "
-"`Lazy` para inicialización perezosa"
+"`spin` también cuenta con una implementación de exclusión mutua de bloqueo de "
+"tickets; equivalentes de `RwLock`, `Barrier` y `Once` de `std::sync`, y `Lazy` "
+"para inicialización perezosa"
#: src/bare-metal/useful-crates/spin.md
msgid ""
@@ -20208,24 +19850,23 @@ msgstr ""
"distinto al de `spin::once::Once`."
#: src/bare-metal/useful-crates/spin.md
-msgid ""
-"The Rust Playground includes `spin`, so this example will run fine inline."
+msgid "The Rust Playground includes `spin`, so this example will run fine inline."
msgstr ""
-"El playground de Rust incluye `spin`, por lo que este ejemplo se ejecutará "
-"bien aunque está insertado."
+"El playground de Rust incluye `spin`, por lo que este ejemplo se ejecutará bien "
+"aunque está insertado."
#: src/bare-metal/android.md
msgid ""
-"To build a bare-metal Rust binary in AOSP, you need to use a "
-"`rust_ffi_static` Soong rule to build your Rust code, then a `cc_binary` "
-"with a linker script to produce the binary itself, and then a `raw_binary` "
-"to convert the ELF to a raw binary ready to be run."
+"To build a bare-metal Rust binary in AOSP, you need to use a `rust_ffi_static` "
+"Soong rule to build your Rust code, then a `cc_binary` with a linker script to "
+"produce the binary itself, and then a `raw_binary` to convert the ELF to a raw "
+"binary ready to be run."
msgstr ""
-"Para compilar un binario de Rust bare-metal en AOSP, tienes que usar una "
-"regla `rust_ffi_static` de Soong para crear tu código Rust y, seguidamente, "
-"un `cc_binary` con una secuencia de comandos de enlazador para producir el "
-"binario en sí. Por último, un `raw_binary` para convertir el ELF en un "
-"binario sin formato que pueda ejecutarse."
+"Para compilar un binario de Rust bare-metal en AOSP, tienes que usar una regla "
+"`rust_ffi_static` de Soong para crear tu código Rust y, seguidamente, un "
+"`cc_binary` con una secuencia de comandos de enlazador para producir el binario "
+"en sí. Por último, un `raw_binary` para convertir el ELF en un binario sin "
+"formato que pueda ejecutarse."
#: src/bare-metal/android/vmbase.md
msgid "vmbase"
@@ -20234,16 +19875,16 @@ msgstr "vmbase"
#: src/bare-metal/android/vmbase.md
msgid ""
"For VMs running under crosvm on aarch64, the [vmbase](https://android."
-"googlesource.com/platform/packages/modules/Virtualization/+/refs/heads/"
-"master/vmbase/) library provides a linker script and useful defaults for the "
-"build rules, along with an entry point, UART console logging and more."
+"googlesource.com/platform/packages/modules/Virtualization/+/refs/heads/master/"
+"vmbase/) library provides a linker script and useful defaults for the build "
+"rules, along with an entry point, UART console logging and more."
msgstr ""
-"En el caso de las máquinas virtuales que se ejecutan con crosvm en aarch64, "
-"la biblioteca [vmbase](https://android.googlesource.com/platform/packages/"
-"modules/Virtualization/+/refs/heads/master/vmbase/) proporciona una "
-"secuencia de comandos de enlazador y valores predeterminados útiles para las "
-"reglas de compilación, además de un punto de entrada, registro de la consola "
-"UART y mucho más."
+"En el caso de las máquinas virtuales que se ejecutan con crosvm en aarch64, la "
+"biblioteca [vmbase](https://android.googlesource.com/platform/packages/modules/"
+"Virtualization/+/refs/heads/master/vmbase/) proporciona una secuencia de "
+"comandos de enlazador y valores predeterminados útiles para las reglas de "
+"compilación, además de un punto de entrada, registro de la consola UART y mucho "
+"más."
#: src/bare-metal/android/vmbase.md
msgid ""
@@ -20258,15 +19899,14 @@ msgid ""
"The `vmbase` entry point handles console initialisation, and issues a "
"PSCI_SYSTEM_OFF to shutdown the VM if your main function returns."
msgstr ""
-"El punto de entrada `vmbase` gestiona la inicialización de la consola y "
-"emite PSCI_SYSTEM_OFF para apagar la máquina virtual si tu función principal "
-"devuelve un resultado."
+"El punto de entrada `vmbase` gestiona la inicialización de la consola y emite "
+"PSCI_SYSTEM_OFF para apagar la máquina virtual si tu función principal devuelve "
+"un resultado."
#: src/exercises/bare-metal/afternoon.md
msgid "We will write a driver for the PL031 real-time clock device."
msgstr ""
-"Escribiremos un controlador para el dispositivo de reloj en tiempo real "
-"PL031."
+"Escribiremos un controlador para el dispositivo de reloj en tiempo real PL031."
#: src/exercises/bare-metal/afternoon.md
msgid ""
@@ -20276,16 +19916,15 @@ msgstr ""
"Luego de ver los ejercicios, puedes ver las [soluciones](solutions-afternoon."
"md) que se brindan."
-#: src/exercises/bare-metal/rtc.md
-#: src/exercises/bare-metal/solutions-afternoon.md
+#: src/exercises/bare-metal/rtc.md src/exercises/bare-metal/solutions-afternoon.md
msgid "RTC driver"
msgstr "Controlador RTC"
#: src/exercises/bare-metal/rtc.md
msgid ""
"The QEMU aarch64 virt machine has a [PL031](https://developer.arm.com/"
-"documentation/ddi0224/c) real-time clock at 0x9010000. For this exercise, "
-"you should write a driver for it."
+"documentation/ddi0224/c) real-time clock at 0x9010000. For this exercise, you "
+"should write a driver for it."
msgstr ""
"La máquina virtual aarch64 de QEMU tiene un reloj en tiempo real [PL031]"
"(https://developer.arm.com/documentation/ddi0224/c) en 0x9010000. En este "
@@ -20296,15 +19935,14 @@ msgid ""
"Use it to print the current time to the serial console. You can use the "
"[`chrono`](https://crates.io/crates/chrono) crate for date/time formatting."
msgstr ""
-"Úsalo para imprimir la hora en la consola serie. Puedes usar el crate "
-"[`chrono`](https://crates.io/crates/chrono) para dar formato a la fecha y la "
-"hora."
+"Úsalo para imprimir la hora en la consola serie. Puedes usar el crate [`chrono`]"
+"(https://crates.io/crates/chrono) para dar formato a la fecha y la hora."
#: src/exercises/bare-metal/rtc.md
msgid ""
"Use the match register and raw interrupt status to busy-wait until a given "
-"time, e.g. 3 seconds in the future. (Call [`core::hint::spin_loop`](https://"
-"doc.rust-lang.org/core/hint/fn.spin_loop.html) inside the loop.)"
+"time, e.g. 3 seconds in the future. (Call [`core::hint::spin_loop`](https://doc."
+"rust-lang.org/core/hint/fn.spin_loop.html) inside the loop.)"
msgstr ""
"Utiliza el registro de coincidencias y el estado de interrupción sin formato "
"para esperar hasta un momento dado, por ejemplo, un adelanto de 3 segundos. "
@@ -20313,20 +19951,19 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md
msgid ""
-"_Extension if you have time:_ Enable and handle the interrupt generated by "
-"the RTC match. You can use the driver provided in the [`arm-gic`](https://"
-"docs.rs/arm-gic/) crate to configure the Arm Generic Interrupt Controller."
+"_Extension if you have time:_ Enable and handle the interrupt generated by the "
+"RTC match. You can use the driver provided in the [`arm-gic`](https://docs.rs/"
+"arm-gic/) crate to configure the Arm Generic Interrupt Controller."
msgstr ""
-"_Ampliación si hay tiempo:_ habilita y gestiona la interrupción que genera "
-"la coincidencia de RTC. Puedes usar el controlador que se proporciona con el "
-"crate [`arm-gic`](https://docs.rs/arm-gic/) para configurar el controlador "
-"de interrupciones genérico (GIC) de Arm."
+"_Ampliación si hay tiempo:_ habilita y gestiona la interrupción que genera la "
+"coincidencia de RTC. Puedes usar el controlador que se proporciona con el crate "
+"[`arm-gic`](https://docs.rs/arm-gic/) para configurar el controlador de "
+"interrupciones genérico (GIC) de Arm."
#: src/exercises/bare-metal/rtc.md
msgid "Use the RTC interrupt, which is wired to the GIC as `IntId::spi(2)`."
msgstr ""
-"Utiliza la interrupción de RTC, que está conectada al GIC como `IntId::"
-"spi(2)`."
+"Utiliza la interrupción de RTC, que está conectada al GIC como `IntId::spi(2)`."
#: src/exercises/bare-metal/rtc.md
msgid ""
@@ -20334,16 +19971,16 @@ msgid ""
"wfi()`, which will cause the core to sleep until it receives an interrupt."
msgstr ""
"Después de habilitar la interrupción, puedes poner el núcleo en suspensión "
-"mediante `arm_gic::wfi()`, lo que hará que entre en suspensión hasta que "
-"reciba una interrupción."
+"mediante `arm_gic::wfi()`, lo que hará que entre en suspensión hasta que reciba "
+"una interrupción."
#: src/exercises/bare-metal/rtc.md
msgid ""
"Download the [exercise template](../../comprehensive-rust-exercises.zip) and "
"look in the `rtc` directory for the following files."
msgstr ""
-"Descarga la [plantilla de ejercicio](../../comprehensive-rust-exercises.zip) "
-"y busca en el directorio `rtc` los siguientes archivos."
+"Descarga la [plantilla de ejercicio](../../comprehensive-rust-exercises.zip) y "
+"busca en el directorio `rtc` los siguientes archivos."
#: src/exercises/bare-metal/rtc.md
#, fuzzy
@@ -20428,8 +20065,7 @@ msgstr ""
"// Es seguro porque `GICD_BASE_ADDRESS` y `GICR_BASE_ADDRESS` son las "
"direcciones base\n"
" // de un distribuidor y un redistribuidor GICv3 respectivamente,\n"
-" // y ningún otro elemento tiene acceso a esos intervalos de "
-"direcciones.\n"
+" // y ningún otro elemento tiene acceso a esos intervalos de direcciones.\n"
#: src/exercises/bare-metal/solutions-afternoon.md
#, fuzzy
@@ -20437,8 +20073,8 @@ msgid ""
"// SAFETY: `PL031_BASE_ADDRESS` is the base address of a PL031 device, and\n"
" // nothing else accesses that address range.\n"
msgstr ""
-"// Es seguro porque `PL031_BASE_ADDRESS` es la dirección base de un "
-"dispositivo PL031\n"
+"// Es seguro porque `PL031_BASE_ADDRESS` es la dirección base de un dispositivo "
+"PL031\n"
" // y ningún otro elemento puede acceder a ese intervalo de direcciones.\n"
#: src/exercises/bare-metal/solutions-afternoon.md
@@ -20512,14 +20148,13 @@ msgid ""
" ///\n"
" /// # Safety\n"
" ///\n"
-" /// The given base address must point to the MMIO control registers of "
-"a\n"
+" /// The given base address must point to the MMIO control registers of a\n"
" /// PL031 device, which must be mapped into the address space of the "
"process\n"
" /// as device memory and not have any other aliases.\n"
msgstr ""
-"/// Crea una instancia nueva del controlador RTC para un dispositivo PL031 "
-"en la\n"
+"/// Crea una instancia nueva del controlador RTC para un dispositivo PL031 en "
+"la\n"
" /// dirección base proporcionada.\n"
" ///\n"
" /// # Seguridad\n"
@@ -20540,8 +20175,8 @@ msgid ""
" // of a PL031 device which is appropriately mapped.\n"
msgstr ""
"// Es seguro porque sabemos que self.registers apunta\n"
-" // a los registros de control de un dispositivo PL031 que está "
-"asignado correctamente.\n"
+" // a los registros de control de un dispositivo PL031 que está asignado "
+"correctamente.\n"
#: src/exercises/bare-metal/solutions-afternoon.md
msgid ""
@@ -20554,8 +20189,7 @@ msgstr ""
#: src/exercises/bare-metal/solutions-afternoon.md
msgid ""
-"/// Returns whether the match register matches the RTC value, whether or "
-"not\n"
+"/// Returns whether the match register matches the RTC value, whether or not\n"
" /// the interrupt is enabled.\n"
msgstr ""
"/// Devuelve en función de si el registro de coincidencias coincide con el "
@@ -20578,8 +20212,7 @@ msgstr ""
msgid ""
"/// Sets or clears the interrupt mask.\n"
" ///\n"
-" /// When the mask is true the interrupt is enabled; when it is false "
-"the\n"
+" /// When the mask is true the interrupt is enabled; when it is false the\n"
" /// interrupt is disabled.\n"
msgstr ""
"/// Define o borra la máscara de interrupción.\n"
@@ -20618,10 +20251,10 @@ msgid ""
"compile time bugs. This is often referred to as _fearless concurrency_ since "
"you can rely on the compiler to ensure correctness at runtime."
msgstr ""
-"El sistema de tipos de Rust desempeña un papel importante al hacer que "
-"muchos errores de concurrencia sean errores en tiempo de compilación. A "
-"menudo, esto se conoce como _concurrencia sin miedo_, ya que puedes confiar "
-"en el compilador para asegurar la corrección en el tiempo de ejecución."
+"El sistema de tipos de Rust desempeña un papel importante al hacer que muchos "
+"errores de concurrencia sean errores en tiempo de compilación. A menudo, esto "
+"se conoce como _concurrencia sin miedo_, ya que puedes confiar en el compilador "
+"para asegurar la corrección en el tiempo de ejecución."
#: src/concurrency/welcome.md src/concurrency/welcome-async.md
#, fuzzy
@@ -20629,8 +20262,8 @@ msgid ""
"Including 10 minute breaks, this session should take about 3 hours and 20 "
"minutes. It contains:"
msgstr ""
-"Contando con los descansos de 10 minutos, la duración prevista de la sesión "
-"es de unas 2 horas y 20 minutos."
+"Contando con los descansos de 10 minutos, la duración prevista de la sesión es "
+"de unas 2 horas y 20 minutos."
#: src/concurrency/welcome.md
msgid ""
@@ -20644,9 +20277,9 @@ msgstr ""
#: src/concurrency/welcome.md
msgid ""
-"The same tools that help with \"concurrent\" access in a single thread (e."
-"g., a called function that might mutate an argument or save references to it "
-"to read later) save us from multi-threading issues."
+"The same tools that help with \"concurrent\" access in a single thread (e.g., a "
+"called function that might mutate an argument or save references to it to read "
+"later) save us from multi-threading issues."
msgstr ""
#: src/concurrency/threads.md src/concurrency/shared-state.md
@@ -20679,8 +20312,8 @@ msgstr "Los pánicos de los hilos son independientes entre sí."
#: src/concurrency/threads/plain.md
msgid "Panics can carry a payload, which can be unpacked with `downcast_ref`."
msgstr ""
-"Los pánicos pueden transportar una carga útil, que se puede desempaquetar "
-"con `downcast_ref`."
+"Los pánicos pueden transportar una carga útil, que se puede desempaquetar con "
+"`downcast_ref`."
#: src/concurrency/threads/plain.md
msgid "Rust thread APIs look not too different from e.g. C++ ones."
@@ -20718,8 +20351,8 @@ msgstr ""
#: src/concurrency/threads/plain.md
#, fuzzy
msgid ""
-"[`thread::spawn`](https://doc.rust-lang.org/std/thread/fn.spawn.html) "
-"returns a `JoinHandle`. Look at the docs."
+"[`thread::spawn`](https://doc.rust-lang.org/std/thread/fn.spawn.html) returns a "
+"`JoinHandle`. Look at the docs."
msgstr ""
"[`Default`](https://doc.rust-lang.org/std/default/trait.Default.html) se usa "
"para construir una instancia predeterminada de un tipo."
@@ -20733,8 +20366,8 @@ msgstr ""
#: src/concurrency/threads/plain.md
#, fuzzy
msgid ""
-"Use `let handle = thread::spawn(...)` and later `handle.join()` to wait for "
-"the thread to finish and have the program count all the way to 10."
+"Use `let handle = thread::spawn(...)` and later `handle.join()` to wait for the "
+"thread to finish and have the program count all the way to 10."
msgstr ""
"Utiliza `let handle = thread::spawn(...)` y, después, `handle.join()` para "
"esperar a que el hilo termine."
@@ -20750,16 +20383,16 @@ msgstr ""
#: src/concurrency/threads/plain.md
#, fuzzy
msgid ""
-"[`thread::spawn`](https://doc.rust-lang.org/std/thread/fn.spawn.html)'s "
-"closure returns `T`"
+"[`thread::spawn`](https://doc.rust-lang.org/std/thread/fn.spawn.html)'s closure "
+"returns `T`"
msgstr ""
"Sin embargo, puedes usar un [hilo con ámbito](https://doc.rust-lang.org/std/"
"thread/fn.scope.html) para lo siguiente:"
#: src/concurrency/threads/plain.md
msgid ""
-"`JoinHandle` [`.join()`](https://doc.rust-lang.org/std/thread/struct."
-"JoinHandle.html#method.join) returns `thread::Result`"
+"`JoinHandle` [`.join()`](https://doc.rust-lang.org/std/thread/struct.JoinHandle."
+"html#method.join) returns `thread::Result`"
msgstr ""
#: src/concurrency/threads/plain.md
@@ -20768,9 +20401,9 @@ msgid ""
"Use the `Result` return value from `handle.join()` to get access to the "
"returned value."
msgstr ""
-"Usa el valor devuelto `Result` de `handle.join.()` para acceder a la carga "
-"útil del pánico. Este es un buen momento para hablar sobre [`Any`](https://"
-"doc.rust-lang.org/std/any/index.html)."
+"Usa el valor devuelto `Result` de `handle.join.()` para acceder a la carga útil "
+"del pánico. Este es un buen momento para hablar sobre [`Any`](https://doc.rust-"
+"lang.org/std/any/index.html)."
#: src/concurrency/threads/plain.md
msgid "Ok, what about the other case?"
@@ -20784,12 +20417,12 @@ msgstr "Activa un pánico en el hilo y observa cómo esto no afecta a `main`."
#: src/concurrency/threads/plain.md
#, fuzzy
msgid ""
-"Access the panic payload. This is a good time to talk about [`Any`](https://"
-"doc.rust-lang.org/std/any/index.html)."
+"Access the panic payload. This is a good time to talk about [`Any`](https://doc."
+"rust-lang.org/std/any/index.html)."
msgstr ""
-"Usa el valor devuelto `Result` de `handle.join.()` para acceder a la carga "
-"útil del pánico. Este es un buen momento para hablar sobre [`Any`](https://"
-"doc.rust-lang.org/std/any/index.html)."
+"Usa el valor devuelto `Result` de `handle.join.()` para acceder a la carga útil "
+"del pánico. Este es un buen momento para hablar sobre [`Any`](https://doc.rust-"
+"lang.org/std/any/index.html)."
#: src/concurrency/threads/plain.md
msgid "Now we can return values from threads! What about taking inputs?"
@@ -20831,8 +20464,8 @@ msgstr "Los hilos normales no pueden tomar nada prestado de su entorno:"
#: src/concurrency/threads/scoped.md
msgid ""
-"However, you can use a [scoped thread](https://doc.rust-lang.org/std/thread/"
-"fn.scope.html) for this:"
+"However, you can use a [scoped thread](https://doc.rust-lang.org/std/thread/fn."
+"scope.html) for this:"
msgstr ""
"Sin embargo, puedes usar un [hilo con ámbito](https://doc.rust-lang.org/std/"
"thread/fn.scope.html) para lo siguiente:"
@@ -20842,17 +20475,17 @@ msgid ""
"The reason for that is that when the `thread::scope` function completes, all "
"the threads are guaranteed to be joined, so they can return borrowed data."
msgstr ""
-"La razón es que, cuando se completa la función `thread::scope`, se asegura "
-"que todos los hilos están unidos, por lo que pueden devolver datos prestados."
+"La razón es que, cuando se completa la función `thread::scope`, se asegura que "
+"todos los hilos están unidos, por lo que pueden devolver datos prestados."
#: src/concurrency/threads/scoped.md
msgid ""
-"Normal Rust borrowing rules apply: you can either borrow mutably by one "
-"thread, or immutably by any number of threads."
+"Normal Rust borrowing rules apply: you can either borrow mutably by one thread, "
+"or immutably by any number of threads."
msgstr ""
-"Se aplican las reglas normales de préstamo de Rust: un hilo puede tomar "
-"datos prestados de manera mutable o cualquier número de hilos puede tomar "
-"datos prestados de manera inmutable."
+"Se aplican las reglas normales de préstamo de Rust: un hilo puede tomar datos "
+"prestados de manera mutable o cualquier número de hilos puede tomar datos "
+"prestados de manera inmutable."
#: src/concurrency/channels.md src/concurrency/async-control-flow.md
#, fuzzy
@@ -20861,12 +20494,11 @@ msgstr "Esta sección tiene una duración aproximada de 20 minutos."
#: src/concurrency/channels/senders-receivers.md
msgid ""
-"Rust channels have two parts: a `Sender` and a `Receiver`. The two "
-"parts are connected via the channel, but you only see the end-points."
+"Rust channels have two parts: a `Sender` and a `Receiver`. The two parts "
+"are connected via the channel, but you only see the end-points."
msgstr ""
"Los canales de Rust tienen dos partes: `Sender` y `Receiver`. Las dos "
-"partes están conectadas a través del canal, pero solo se ven los puntos "
-"finales."
+"partes están conectadas a través del canal, pero solo se ven los puntos finales."
#: src/concurrency/channels/senders-receivers.md
msgid "\"Received: {:?}\""
@@ -20875,8 +20507,7 @@ msgstr "\"Recibido: {:?}\""
#: src/concurrency/channels/senders-receivers.md
msgid ""
"`mpsc` stands for Multi-Producer, Single-Consumer. `Sender` and `SyncSender` "
-"implement `Clone` (so you can make multiple producers) but `Receiver` does "
-"not."
+"implement `Clone` (so you can make multiple producers) but `Receiver` does not."
msgstr ""
"`mpsc` son las siglas de Multi-Producer, Single-Consumer (multiproductor, "
"consumidor único.) `Sender` y `SyncSender` implementan `Clone` (es decir, "
@@ -20911,34 +20542,32 @@ msgid "\"Main: got {msg}\""
msgstr "\"Principal: ha recibido {msg}\""
#: src/concurrency/channels/bounded.md
-msgid ""
-"With bounded (synchronous) channels, `send` can block the current thread:"
+msgid "With bounded (synchronous) channels, `send` can block the current thread:"
msgstr "Con canales limitados (síncronos), `send` puede bloquear el hilo:"
#: src/concurrency/channels/bounded.md
msgid ""
"Calling `send` will block the current thread until there is space in the "
-"channel for the new message. The thread can be blocked indefinitely if there "
-"is nobody who reads from the channel."
+"channel for the new message. The thread can be blocked indefinitely if there is "
+"nobody who reads from the channel."
msgstr ""
-"Al llamar a `send`, se bloqueará el hilo hasta que haya espacio suficiente "
-"en el canal para el mensaje nuevo. El hilo se puede bloquear de forma "
-"indefinida si no hay nadie que lea el canal."
+"Al llamar a `send`, se bloqueará el hilo hasta que haya espacio suficiente en "
+"el canal para el mensaje nuevo. El hilo se puede bloquear de forma indefinida "
+"si no hay nadie que lea el canal."
#: src/concurrency/channels/bounded.md
msgid ""
-"A call to `send` will abort with an error (that is why it returns `Result`) "
-"if the channel is closed. A channel is closed when the receiver is dropped."
+"A call to `send` will abort with an error (that is why it returns `Result`) if "
+"the channel is closed. A channel is closed when the receiver is dropped."
msgstr ""
-"Si se cierra el canal, se anulará la llamada a `send` y se producirá un "
-"error (por eso devuelve `Result`). Un canal se cierra cuando se elimina el "
-"receptor."
+"Si se cierra el canal, se anulará la llamada a `send` y se producirá un error "
+"(por eso devuelve `Result`). Un canal se cierra cuando se elimina el receptor."
#: src/concurrency/channels/bounded.md
#, fuzzy
msgid ""
-"A bounded channel with a size of zero is called a \"rendezvous channel\". "
-"Every send will block the current thread until another thread calls `recv`."
+"A bounded channel with a size of zero is called a \"rendezvous channel\". Every "
+"send will block the current thread until another thread calls `recv`."
msgstr ""
"Un canal delimitado con un tamaño de cero se denomina \"canal rendezvous\". "
"Cada envío bloqueará el hilo actual hasta que otro hilo llame a `read`."
@@ -20954,67 +20583,66 @@ msgstr "Sync"
#: src/concurrency/send-sync/marker-traits.md
#, fuzzy
msgid ""
-"How does Rust know to forbid shared access across threads? The answer is in "
-"two traits:"
+"How does Rust know to forbid shared access across threads? The answer is in two "
+"traits:"
msgstr ""
"¿Cómo sabe Rust que debe prohibir el acceso compartido entre hilos? La "
"respuesta está en dos traits:"
#: src/concurrency/send-sync/marker-traits.md
msgid ""
-"[`Send`](https://doc.rust-lang.org/std/marker/trait.Send.html): a type `T` "
-"is `Send` if it is safe to move a `T` across a thread boundary."
+"[`Send`](https://doc.rust-lang.org/std/marker/trait.Send.html): a type `T` is "
+"`Send` if it is safe to move a `T` across a thread boundary."
msgstr ""
-"[`Send`](https://doc.rust-lang.org/std/marker/trait.Send.html): un tipo `T` "
-"es `Send` si es seguro mover un `T` entre los límites de un hilo."
+"[`Send`](https://doc.rust-lang.org/std/marker/trait.Send.html): un tipo `T` es "
+"`Send` si es seguro mover un `T` entre los límites de un hilo."
#: src/concurrency/send-sync/marker-traits.md
msgid ""
-"[`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync.html): a type `T` "
-"is `Sync` if it is safe to move a `&T` across a thread boundary."
+"[`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync.html): a type `T` is "
+"`Sync` if it is safe to move a `&T` across a thread boundary."
msgstr ""
-"[`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync.html): un tipo `T` "
-"es `Sync` si es seguro mover un `&T` entre los límites de un hilo."
+"[`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync.html): un tipo `T` es "
+"`Sync` si es seguro mover un `&T` entre los límites de un hilo."
#: src/concurrency/send-sync/marker-traits.md
#, fuzzy
msgid ""
-"`Send` and `Sync` are [unsafe traits](../../unsafe-rust/unsafe-traits.md). "
-"The compiler will automatically derive them for your types as long as they "
-"only contain `Send` and `Sync` types. You can also implement them manually "
-"when you know it is valid."
+"`Send` and `Sync` are [unsafe traits](../../unsafe-rust/unsafe-traits.md). The "
+"compiler will automatically derive them for your types as long as they only "
+"contain `Send` and `Sync` types. You can also implement them manually when you "
+"know it is valid."
msgstr ""
"`Send` y `Sync` son [traits inseguros](../unsafe/unsafe-traits.md). El "
-"compilador los derivará automáticamente a tus tipos siempre que solo "
-"contengan los tipos `Send` y `Sync`. También puedes implementarlos de forma "
-"manual cuando sepas que es válido."
+"compilador los derivará automáticamente a tus tipos siempre que solo contengan "
+"los tipos `Send` y `Sync`. También puedes implementarlos de forma manual cuando "
+"sepas que es válido."
#: src/concurrency/send-sync/marker-traits.md
msgid ""
"One can think of these traits as markers that the type has certain thread-"
"safety properties."
msgstr ""
-"Se podría pensar en estos traits como marcadores que indican que el tipo "
-"tiene ciertas propiedades de seguridad en hilos."
+"Se podría pensar en estos traits como marcadores que indican que el tipo tiene "
+"ciertas propiedades de seguridad en hilos."
#: src/concurrency/send-sync/marker-traits.md
msgid "They can be used in the generic constraints as normal traits."
-msgstr ""
-"Se pueden utilizar en las restricciones genéricas como traits normales."
+msgstr "Se pueden utilizar en las restricciones genéricas como traits normales."
#: src/concurrency/send-sync/send.md
msgid ""
-"A type `T` is [`Send`](https://doc.rust-lang.org/std/marker/trait.Send.html) "
-"if it is safe to move a `T` value to another thread."
+"A type `T` is [`Send`](https://doc.rust-lang.org/std/marker/trait.Send.html) if "
+"it is safe to move a `T` value to another thread."
msgstr ""
-"Un tipo `T` es [`Send`](https://doc.rust-lang.org/std/marker/trait.Send."
-"html) si es seguro mover un valor `T` a otro hilo."
+"Un tipo `T` es [`Send`](https://doc.rust-lang.org/std/marker/trait.Send.html) "
+"si es seguro mover un valor `T` a otro hilo."
#: src/concurrency/send-sync/send.md
msgid ""
-"The effect of moving ownership to another thread is that _destructors_ will "
-"run in that thread. So the question is when you can allocate a value in one "
-"thread and deallocate it in another."
+"The effect of moving ownership to another thread is that _destructors_ will run "
+"in that thread. So the question is when you can allocate a value in one thread "
+"and deallocate it in another."
msgstr ""
"El efecto de mover la propiedad a otro hilo es que los _destructores_ se "
"ejecutarán en ese hilo. Por tanto, la cuestion es cuándo se puede asignar un "
@@ -21022,19 +20650,19 @@ msgstr ""
#: src/concurrency/send-sync/send.md
msgid ""
-"As an example, a connection to the SQLite library must only be accessed from "
-"a single thread."
+"As an example, a connection to the SQLite library must only be accessed from a "
+"single thread."
msgstr ""
-"Por ejemplo, solo se puede acceder a una conexión a la biblioteca SQLite "
-"desde un único hilo."
+"Por ejemplo, solo se puede acceder a una conexión a la biblioteca SQLite desde "
+"un único hilo."
#: src/concurrency/send-sync/sync.md
msgid ""
-"A type `T` is [`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync.html) "
-"if it is safe to access a `T` value from multiple threads at the same time."
+"A type `T` is [`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync.html) if "
+"it is safe to access a `T` value from multiple threads at the same time."
msgstr ""
-"Un tipo `T` es [`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync."
-"html) si es seguro acceder a un valor `T` desde varios hilos al mismo tiempo."
+"Un tipo `T` es [`Sync`](https://doc.rust-lang.org/std/marker/trait.Sync.html) "
+"si es seguro acceder a un valor `T` desde varios hilos al mismo tiempo."
#: src/concurrency/send-sync/sync.md
msgid "More precisely, the definition is:"
@@ -21050,24 +20678,23 @@ msgid ""
"thread-safe for shared use, it is also thread-safe to pass references of it "
"across threads."
msgstr ""
-"Esta instrucción es, básicamente, una forma resumida de indicar que, si un "
-"tipo es seguro para los hilos en uso compartido, también lo es para pasar "
+"Esta instrucción es, básicamente, una forma resumida de indicar que, si un tipo "
+"es seguro para los hilos en uso compartido, también lo es para pasar "
"referencias de él a través de los hilos."
#: src/concurrency/send-sync/sync.md
msgid ""
"This is because if a type is Sync it means that it can be shared across "
"multiple threads without the risk of data races or other synchronization "
-"issues, so it is safe to move it to another thread. A reference to the type "
-"is also safe to move to another thread, because the data it references can "
-"be accessed from any thread safely."
+"issues, so it is safe to move it to another thread. A reference to the type is "
+"also safe to move to another thread, because the data it references can be "
+"accessed from any thread safely."
msgstr ""
-"Esto se debe a que, si el tipo es Sync, significa que se puede compartir "
-"entre múltiples hilos sin el riesgo de que haya carreras de datos u otros "
-"problemas de sincronización, por lo que es seguro moverlo a otro hilo. "
-"También es seguro mover una referencia al tipo a otro hilo, ya que se puede "
-"acceder de forma segura a los datos a los que hace referencia desde "
-"cualquier hilo."
+"Esto se debe a que, si el tipo es Sync, significa que se puede compartir entre "
+"múltiples hilos sin el riesgo de que haya carreras de datos u otros problemas "
+"de sincronización, por lo que es seguro moverlo a otro hilo. También es seguro "
+"mover una referencia al tipo a otro hilo, ya que se puede acceder de forma "
+"segura a los datos a los que hace referencia desde cualquier hilo."
#: src/concurrency/send-sync/examples.md
msgid "`Send + Sync`"
@@ -21092,8 +20719,8 @@ msgstr "`String`, `Option`, `Vec`, `Box`, etc."
#: src/concurrency/send-sync/examples.md
msgid "`Arc`: Explicitly thread-safe via atomic reference count."
msgstr ""
-"`Arc`: explícitamente seguro para los hilos mediante el recuento atómico "
-"de referencias."
+"`Arc`: explícitamente seguro para los hilos mediante el recuento atómico de "
+"referencias."
#: src/concurrency/send-sync/examples.md
msgid "`Mutex`: Explicitly thread-safe via internal locking."
@@ -21115,8 +20742,8 @@ msgid ""
"The generic types are typically `Send + Sync` when the type parameters are "
"`Send + Sync`."
msgstr ""
-"Los tipos genéricos suelen ser `Send + Sync` cuando los parámetros del tipo "
-"son `Send + Sync`."
+"Los tipos genéricos suelen ser `Send + Sync` cuando los parámetros del tipo son "
+"`Send + Sync`."
#: src/concurrency/send-sync/examples.md
msgid "`Send + !Sync`"
@@ -21127,8 +20754,8 @@ msgid ""
"These types can be moved to other threads, but they're not thread-safe. "
"Typically because of interior mutability:"
msgstr ""
-"Estos tipos se pueden mover a otros hilos, pero no son seguros para los "
-"hilos. Normalmente, esto se debe a la mutabilidad interior:"
+"Estos tipos se pueden mover a otros hilos, pero no son seguros para los hilos. "
+"Normalmente, esto se debe a la mutabilidad interior:"
#: src/concurrency/send-sync/examples.md
msgid "`mpsc::Receiver`"
@@ -21147,11 +20774,10 @@ msgid "`!Send + Sync`"
msgstr "`!Send + Sync`"
#: src/concurrency/send-sync/examples.md
-msgid ""
-"These types are thread-safe, but they cannot be moved to another thread:"
+msgid "These types are thread-safe, but they cannot be moved to another thread:"
msgstr ""
-"Estos tipos son seguros para los hilos _(thread safe)_, pero no se pueden "
-"mover a otro hilo:"
+"Estos tipos son seguros para los hilos _(thread safe)_, pero no se pueden mover "
+"a otro hilo:"
#: src/concurrency/send-sync/examples.md
#, fuzzy
@@ -21159,8 +20785,8 @@ msgid ""
"`MutexGuard`: Uses OS level primitives which must be deallocated on "
"the thread which created them."
msgstr ""
-"`MutexGuard`: utiliza primitivos de nivel SO que se deben desasignar en "
-"el hilo que los creó."
+"`MutexGuard`: utiliza primitivos de nivel SO que se deben desasignar en el "
+"hilo que los creó."
#: src/concurrency/send-sync/examples.md
msgid "`!Send + !Sync`"
@@ -21217,21 +20843,21 @@ msgid ""
"that uses atomic operations."
msgstr ""
"`Arc` son las siglas de \"Atomic Reference Counted\" (recuento atómico de "
-"referencias), una versión de `Rc` segura para los hilos que utiliza "
-"operaciones atómicas."
+"referencias), una versión de `Rc` segura para los hilos que utiliza operaciones "
+"atómicas."
#: src/concurrency/shared-state/arc.md
msgid ""
-"`Arc` implements `Clone` whether or not `T` does. It implements `Send` "
-"and `Sync` if and only if `T` implements them both."
+"`Arc` implements `Clone` whether or not `T` does. It implements `Send` and "
+"`Sync` if and only if `T` implements them both."
msgstr ""
"`Arc` implementa `Clone`, independientemente de si `T` lo hace o no. "
"Implementa `Send` y `Sync` si `T` implementa ambos."
#: src/concurrency/shared-state/arc.md
msgid ""
-"`Arc::clone()` has the cost of atomic operations that get executed, but "
-"after that the use of the `T` is free."
+"`Arc::clone()` has the cost of atomic operations that get executed, but after "
+"that the use of the `T` is free."
msgstr ""
"`Arc::clone()` tiene el coste de las operaciones atómicas que se ejecutan; "
"después el uso de `T` es libre."
@@ -21256,9 +20882,9 @@ msgid ""
"interface (another form of [interior mutability](../../borrowing/interior-"
"mutability)):"
msgstr ""
-"[`Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex.html) asegura "
-"la exclusión mutua _y_ permite un acceso mutable a `T` a través de una "
-"interfaz de solo lectura:"
+"[`Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex.html) asegura la "
+"exclusión mutua _y_ permite un acceso mutable a `T` a través de una interfaz de "
+"solo lectura:"
#: src/concurrency/shared-state/mutex.md
msgid "\"v: {:?}\""
@@ -21266,39 +20892,37 @@ msgstr "\"v: {:?}\""
#: src/concurrency/shared-state/mutex.md
msgid ""
-"Notice how we have a [`impl Sync for Mutex`](https://doc.rust-"
-"lang.org/std/sync/struct.Mutex.html#impl-Sync-for-Mutex%3CT%3E) blanket "
+"Notice how we have a [`impl Sync for Mutex`](https://doc.rust-lang."
+"org/std/sync/struct.Mutex.html#impl-Sync-for-Mutex%3CT%3E) blanket "
"implementation."
msgstr ""
-"Fíjate en cómo tenemos una implementación general de [`impl Sync "
-"for Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex.html#impl-"
-"Sync-for-Mutex%3CT%3E)."
+"Fíjate en cómo tenemos una implementación general de [`impl Sync for "
+"Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex.html#impl-Sync-for-"
+"Mutex%3CT%3E)."
#: src/concurrency/shared-state/mutex.md
#, fuzzy
msgid ""
-"`Mutex` in Rust looks like a collection with just one element --- the "
-"protected data."
+"`Mutex` in Rust looks like a collection with just one element --- the protected "
+"data."
msgstr ""
-"`Mutex` en Rust parece una colección con un solo elemento: los datos "
-"protegidos."
+"`Mutex` en Rust parece una colección con un solo elemento: los datos protegidos."
#: src/concurrency/shared-state/mutex.md
msgid ""
"It is not possible to forget to acquire the mutex before accessing the "
"protected data."
msgstr ""
-"No es posible olvidarse de adquirir la exclusión mutua antes de acceder a "
-"los datos protegidos."
+"No es posible olvidarse de adquirir la exclusión mutua antes de acceder a los "
+"datos protegidos."
#: src/concurrency/shared-state/mutex.md
msgid ""
"You can get an `&mut T` from an `&Mutex` by taking the lock. The "
"`MutexGuard` ensures that the `&mut T` doesn't outlive the lock being held."
msgstr ""
-"Puedes obtener un `&mut T` de `Mutex` mediante el bloqueo. El "
-"`MutexGuard` asegura que `&mut T` no dure más tiempo que el bloqueo que se "
-"ha aplicado."
+"Puedes obtener un `&mut T` de `Mutex` mediante el bloqueo. El `MutexGuard` "
+"asegura que `&mut T` no dure más tiempo que el bloqueo que se ha aplicado."
#: src/concurrency/shared-state/mutex.md
msgid ""
@@ -21320,18 +20944,17 @@ msgstr "¿Por qué `lock()` devuelve un `Result`? "
#: src/concurrency/shared-state/mutex.md
msgid ""
-"If the thread that held the `Mutex` panicked, the `Mutex` becomes "
-"\"poisoned\" to signal that the data it protected might be in an "
-"inconsistent state. Calling `lock()` on a poisoned mutex fails with a "
-"[`PoisonError`](https://doc.rust-lang.org/std/sync/struct.PoisonError.html). "
-"You can call `into_inner()` on the error to recover the data regardless."
+"If the thread that held the `Mutex` panicked, the `Mutex` becomes \"poisoned\" "
+"to signal that the data it protected might be in an inconsistent state. Calling "
+"`lock()` on a poisoned mutex fails with a [`PoisonError`](https://doc.rust-lang."
+"org/std/sync/struct.PoisonError.html). You can call `into_inner()` on the error "
+"to recover the data regardless."
msgstr ""
-"Si el hilo que contiene `Mutex` entra en pánico, `Mutex` se \"envenena\" "
-"para indicar que los datos que protegía pueden estar en un estado "
-"incoherente. Llamar a `lock()` en una exclusión mutua envenenada da el error "
-"[`PoisonError`](https://doc.rust-lang.org/std/sync/struct.PoisonError.html). "
-"Puedes llamar a `into_inner()` en el error para recuperar los datos de todos "
-"modos."
+"Si el hilo que contiene `Mutex` entra en pánico, `Mutex` se \"envenena\" para "
+"indicar que los datos que protegía pueden estar en un estado incoherente. "
+"Llamar a `lock()` en una exclusión mutua envenenada da el error [`PoisonError`]"
+"(https://doc.rust-lang.org/std/sync/struct.PoisonError.html). Puedes llamar a "
+"`into_inner()` en el error para recuperar los datos de todos modos."
#: src/concurrency/shared-state/example.md
msgid "Let us see `Arc` and `Mutex` in action:"
@@ -21351,71 +20974,67 @@ msgstr "Puntos a destacar:"
#: src/concurrency/shared-state/example.md
msgid ""
-"`v` is wrapped in both `Arc` and `Mutex`, because their concerns are "
-"orthogonal."
+"`v` is wrapped in both `Arc` and `Mutex`, because their concerns are orthogonal."
msgstr ""
-"`v` se envuelve tanto en `Arc` como en `Mutex`, porque sus preocupaciones "
-"son ortogonales."
+"`v` se envuelve tanto en `Arc` como en `Mutex`, porque sus preocupaciones son "
+"ortogonales."
#: src/concurrency/shared-state/example.md
msgid ""
"Wrapping a `Mutex` in an `Arc` is a common pattern to share mutable state "
"between threads."
msgstr ""
-"Envolver un `Mutex` en un `Arc` es un patrón habitual para compartir el "
-"estado mutable entre hilos."
+"Envolver un `Mutex` en un `Arc` es un patrón habitual para compartir el estado "
+"mutable entre hilos."
#: src/concurrency/shared-state/example.md
msgid ""
"`v: Arc<_>` needs to be cloned as `v2` before it can be moved into another "
"thread. Note `move` was added to the lambda signature."
msgstr ""
-"`v: Arc<_>` se debe clonar como `v2` antes de poder moverlo a otro hilo. Ten "
-"en cuenta que `move` se ha añadido a la firma lambda."
+"`v: Arc<_>` se debe clonar como `v2` antes de poder moverlo a otro hilo. Ten en "
+"cuenta que `move` se ha añadido a la firma lambda."
#: src/concurrency/shared-state/example.md
msgid ""
"Blocks are introduced to narrow the scope of the `LockGuard` as much as "
"possible."
-msgstr ""
-"Se introducen bloqueos para limitar al máximo el ámbito de `LockGuard`."
+msgstr "Se introducen bloqueos para limitar al máximo el ámbito de `LockGuard`."
#: src/concurrency/sync-exercises/dining-philosophers.md
msgid "The dining philosophers problem is a classic problem in concurrency:"
msgstr ""
-"El problema de la cena de los filósofos es un problema clásico de "
-"concurrencia:"
+"El problema de la cena de los filósofos es un problema clásico de concurrencia:"
#: src/concurrency/sync-exercises/dining-philosophers.md
msgid ""
-"Five philosophers dine together at the same table. Each philosopher has "
-"their own place at the table. There is a fork between each plate. The dish "
-"served is a kind of spaghetti which has to be eaten with two forks. Each "
-"philosopher can only alternately think and eat. Moreover, a philosopher can "
-"only eat their spaghetti when they have both a left and right fork. Thus two "
-"forks will only be available when their two nearest neighbors are thinking, "
-"not eating. After an individual philosopher finishes eating, they will put "
-"down both forks."
+"Five philosophers dine together at the same table. Each philosopher has their "
+"own place at the table. There is a fork between each plate. The dish served is "
+"a kind of spaghetti which has to be eaten with two forks. Each philosopher can "
+"only alternately think and eat. Moreover, a philosopher can only eat their "
+"spaghetti when they have both a left and right fork. Thus two forks will only "
+"be available when their two nearest neighbors are thinking, not eating. After "
+"an individual philosopher finishes eating, they will put down both forks."
msgstr ""
"Cinco filósofos cenan juntos en la misma mesa. Cada filósofo tiene su propio "
-"sitio en ella. Hay un tenedor entre cada plato. El plato que van a degustar "
-"es una especie de espaguetis que hay que comer con dos tenedores. Los "
-"filósofos solo pueden pensar y comer alternativamente. Además, solo pueden "
-"comer sus espaguetis cuando disponen de un tenedor a la izquierda y otro a "
-"la derecha. Por tanto, los dos tenedores solo estarán disponibles cuando su "
-"dos vecinos más cercanos estén pensando y no comiendo. Cuando un filósofo "
-"termina de comer, deja los dos tenedores en la mesa."
+"sitio en ella. Hay un tenedor entre cada plato. El plato que van a degustar es "
+"una especie de espaguetis que hay que comer con dos tenedores. Los filósofos "
+"solo pueden pensar y comer alternativamente. Además, solo pueden comer sus "
+"espaguetis cuando disponen de un tenedor a la izquierda y otro a la derecha. "
+"Por tanto, los dos tenedores solo estarán disponibles cuando su dos vecinos más "
+"cercanos estén pensando y no comiendo. Cuando un filósofo termina de comer, "
+"deja los dos tenedores en la mesa."
#: src/concurrency/sync-exercises/dining-philosophers.md
msgid ""
-"You will need a local [Cargo installation](../../cargo/running-locally.md) "
-"for this exercise. Copy the code below to a file called `src/main.rs`, fill "
-"out the blanks, and test that `cargo run` does not deadlock:"
+"You will need a local [Cargo installation](../../cargo/running-locally.md) for "
+"this exercise. Copy the code below to a file called `src/main.rs`, fill out the "
+"blanks, and test that `cargo run` does not deadlock:"
msgstr ""
-"Para realizar este ejercicio necesitarás una \\[instalación local de "
-"Cargo\\] (../../cargo/running-locally.md). Copia el fragmento de código que "
-"aparece más abajo en un archivo denominado `src/main.rs`, rellena los "
-"espacios en blanco y comprueba que `cargo run` no presenta interbloqueos:"
+"Para realizar este ejercicio necesitarás una \\[instalación local de Cargo\\] "
+"(../../cargo/running-locally.md). Copia el fragmento de código que aparece más "
+"abajo en un archivo denominado `src/main.rs`, rellena los espacios en blanco y "
+"comprueba que `cargo run` no presenta interbloqueos:"
#: src/concurrency/sync-exercises/dining-philosophers.md
#: src/concurrency/async-exercises/dining-philosophers.md
@@ -21527,22 +21146,22 @@ msgstr ""
#: src/concurrency/sync-exercises/link-checker.md
msgid ""
-"Let us use our new knowledge to create a multi-threaded link checker. It "
-"should start at a webpage and check that links on the page are valid. It "
-"should recursively check other pages on the same domain and keep doing this "
-"until all pages have been validated."
+"Let us use our new knowledge to create a multi-threaded link checker. It should "
+"start at a webpage and check that links on the page are valid. It should "
+"recursively check other pages on the same domain and keep doing this until all "
+"pages have been validated."
msgstr ""
-"Utilicemos nuestros nuevos conocimientos para crear un comprobador de "
-"enlaces multihilo. Debería empezar en una página web y comprobar que los "
-"enlaces de la página son válidos. Debería consultar otras páginas del mismo "
-"dominio y seguir haciéndolo hasta que todas las páginas se hayan validado."
+"Utilicemos nuestros nuevos conocimientos para crear un comprobador de enlaces "
+"multihilo. Debería empezar en una página web y comprobar que los enlaces de la "
+"página son válidos. Debería consultar otras páginas del mismo dominio y seguir "
+"haciéndolo hasta que todas las páginas se hayan validado."
#: src/concurrency/sync-exercises/link-checker.md
msgid ""
"For this, you will need an HTTP client such as [`reqwest`](https://docs.rs/"
"reqwest/). You will also need a way to find links, we can use [`scraper`]"
-"(https://docs.rs/scraper/). Finally, we'll need some way of handling errors, "
-"we will use [`thiserror`](https://docs.rs/thiserror/)."
+"(https://docs.rs/scraper/). Finally, we'll need some way of handling errors, we "
+"will use [`thiserror`](https://docs.rs/thiserror/)."
msgstr ""
#: src/concurrency/sync-exercises/link-checker.md
@@ -21555,15 +21174,14 @@ msgid ""
"If `cargo add` fails with `error: no such subcommand`, then please edit the "
"`Cargo.toml` file by hand. Add the dependencies listed below."
msgstr ""
-"Si `cargo add` da `error: no such subcommand`, edita el archivo `Cargo.toml` "
-"de forma manual. Añade las dependencias que se indican más abajo."
+"Si `cargo add` da `error: no such subcommand`, edita el archivo `Cargo.toml` de "
+"forma manual. Añade las dependencias que se indican más abajo."
#: src/concurrency/sync-exercises/link-checker.md
-msgid ""
-"The `cargo add` calls will update the `Cargo.toml` file to look like this:"
+msgid "The `cargo add` calls will update the `Cargo.toml` file to look like this:"
msgstr ""
-"Las llamadas a `cargo add` actualizarán el archivo `Cargo.toml` para que "
-"tenga este aspecto:"
+"Las llamadas a `cargo add` actualizarán el archivo `Cargo.toml` para que tenga "
+"este aspecto:"
#: src/concurrency/sync-exercises/link-checker.md
msgid ""
@@ -21575,8 +21193,7 @@ msgid ""
"publish = false\n"
"\n"
"[dependencies]\n"
-"reqwest = { version = \"0.11.12\", features = [\"blocking\", \"rustls-"
-"tls\"] }\n"
+"reqwest = { version = \"0.11.12\", features = [\"blocking\", \"rustls-tls\"] }\n"
"scraper = \"0.13.0\"\n"
"thiserror = \"1.0.37\"\n"
"```"
@@ -21589,16 +21206,15 @@ msgstr ""
"publish = false\n"
"\n"
"[dependencies]\n"
-"reqwest = { version = \"0.11.12\", features = [\"blocking\", \"rustls-"
-"tls\"] }\n"
+"reqwest = { version = \"0.11.12\", features = [\"blocking\", \"rustls-tls\"] }\n"
"scraper = \"0.13.0\"\n"
"thiserror = \"1.0.37\"\n"
"```"
#: src/concurrency/sync-exercises/link-checker.md
msgid ""
-"You can now download the start page. Try with a small site such as `https://"
-"www.google.org/`."
+"You can now download the start page. Try with a small site such as `https://www."
+"google.org/`."
msgstr ""
"Ya puedes descargar la página de inicio. Prueba con un sitio pequeño, como "
"`https://www.google.org/`."
@@ -21659,13 +21275,13 @@ msgstr ""
#: src/concurrency/sync-exercises/link-checker.md
msgid ""
-"Extend this to recursively extract links from all pages on the `www.google."
-"org` domain. Put an upper limit of 100 pages or so so that you don't end up "
-"being blocked by the site."
+"Extend this to recursively extract links from all pages on the `www.google.org` "
+"domain. Put an upper limit of 100 pages or so so that you don't end up being "
+"blocked by the site."
msgstr ""
-"Amplía esta opción para extraer enlaces de todas las páginas del dominio "
-"`www.google.org`. Define un límite máximo de 100 páginas para que el sitio "
-"no te bloquee."
+"Amplía esta opción para extraer enlaces de todas las páginas del dominio `www."
+"google.org`. Define un límite máximo de 100 páginas para que el sitio no te "
+"bloquee."
#: src/concurrency/sync-exercises/solutions.md
msgid "\"{} is trying to eat\""
@@ -21691,8 +21307,7 @@ msgid "Link Checker"
msgstr "Comprobador de Enlaces"
#: src/concurrency/sync-exercises/solutions.md
-msgid ""
-"/// Determine whether links within the given page should be extracted.\n"
+msgid "/// Determine whether links within the given page should be extracted.\n"
msgstr "/// Determina si se deben extraer los enlaces de la página indicada.\n"
#: src/concurrency/sync-exercises/solutions.md
@@ -21717,30 +21332,30 @@ msgstr "\"URLs incorrectas: {:#?}\""
#: src/concurrency/welcome-async.md
msgid ""
-"\"Async\" is a concurrency model where multiple tasks are executed "
-"concurrently by executing each task until it would block, then switching to "
-"another task that is ready to make progress. The model allows running a "
-"larger number of tasks on a limited number of threads. This is because the "
-"per-task overhead is typically very low and operating systems provide "
-"primitives for efficiently identifying I/O that is able to proceed."
-msgstr ""
-"\"Async\" es un modelo de concurrencia en el que se ejecutan varias tareas "
-"al mismo tiempo. Se ejecuta cada una de ellas hasta que se bloquea y, a "
-"continuación, se cambia a otra tarea que está lista para progresar. El "
-"modelo permite ejecutar un mayor número de tareas en un número limitado de "
-"hilos. Esto se debe a que la sobrecarga por tarea suele ser muy baja y los "
-"sistemas operativos proporcionan primitivos para identificar de forma "
-"eficiente las E/S que pueden continuar."
+"\"Async\" is a concurrency model where multiple tasks are executed concurrently "
+"by executing each task until it would block, then switching to another task "
+"that is ready to make progress. The model allows running a larger number of "
+"tasks on a limited number of threads. This is because the per-task overhead is "
+"typically very low and operating systems provide primitives for efficiently "
+"identifying I/O that is able to proceed."
+msgstr ""
+"\"Async\" es un modelo de concurrencia en el que se ejecutan varias tareas al "
+"mismo tiempo. Se ejecuta cada una de ellas hasta que se bloquea y, a "
+"continuación, se cambia a otra tarea que está lista para progresar. El modelo "
+"permite ejecutar un mayor número de tareas en un número limitado de hilos. Esto "
+"se debe a que la sobrecarga por tarea suele ser muy baja y los sistemas "
+"operativos proporcionan primitivos para identificar de forma eficiente las E/S "
+"que pueden continuar."
#: src/concurrency/welcome-async.md
msgid ""
"Rust's asynchronous operation is based on \"futures\", which represent work "
-"that may be completed in the future. Futures are \"polled\" until they "
-"signal that they are complete."
+"that may be completed in the future. Futures are \"polled\" until they signal "
+"that they are complete."
msgstr ""
-"La operación asíncrona de Rust se basa en \"valores futuros\", que "
-"representan el trabajo que puede completarse más adelante. Los futuros se "
-"\"sondean\" hasta que indican que se han completado."
+"La operación asíncrona de Rust se basa en \"valores futuros\", que representan "
+"el trabajo que puede completarse más adelante. Los futuros se \"sondean\" hasta "
+"que indican que se han completado."
#: src/concurrency/welcome-async.md
msgid ""
@@ -21756,20 +21371,19 @@ msgid ""
"callback-based, and not polled. Async Python programs require a \"loop\", "
"similar to a runtime in Rust."
msgstr ""
-"Python tiene un modelo similar en su `asyncio`. Sin embargo, su tipo "
-"`Future` está basado en retrollamadas y no se sondea. Los programas "
-"asíncronos de Python requieren un \"bucle\", similar a un tiempo de "
-"ejecución en Rust."
+"Python tiene un modelo similar en su `asyncio`. Sin embargo, su tipo `Future` "
+"está basado en retrollamadas y no se sondea. Los programas asíncronos de Python "
+"requieren un \"bucle\", similar a un tiempo de ejecución en Rust."
#: src/concurrency/welcome-async.md
msgid ""
"JavaScript's `Promise` is similar, but again callback-based. The language "
-"runtime implements the event loop, so many of the details of Promise "
-"resolution are hidden."
+"runtime implements the event loop, so many of the details of Promise resolution "
+"are hidden."
msgstr ""
-"`Promise` de JavaScript es parecido, pero también se basa en retrollamadas. "
-"El tiempo de ejecución del lenguaje implementa el bucle de eventos, por lo "
-"que muchos de los detalles de la resolución de Promise están ocultos."
+"`Promise` de JavaScript es parecido, pero también se basa en retrollamadas. El "
+"tiempo de ejecución del lenguaje implementa el bucle de eventos, por lo que "
+"muchos de los detalles de la resolución de Promise están ocultos."
#: src/concurrency/async.md
msgid "async/await"
@@ -21792,8 +21406,8 @@ msgid ""
"Note that this is a simplified example to show the syntax. There is no long "
"running operation or any real concurrency in it!"
msgstr ""
-"Ten en cuenta que este es un ejemplo simplificado para mostrar la sintaxis. "
-"No hay ninguna operación de larga duración ni concurrencia real."
+"Ten en cuenta que este es un ejemplo simplificado para mostrar la sintaxis. No "
+"hay ninguna operación de larga duración ni concurrencia real."
#: src/concurrency/async/async-await.md
msgid "What is the return type of an async call?"
@@ -21806,19 +21420,19 @@ msgstr "Consulta el tipo con `let future: () = async_main(10);` en `main` ."
#: src/concurrency/async/async-await.md
#, fuzzy
msgid ""
-"The \"async\" keyword is syntactic sugar. The compiler replaces the return "
-"type with a future."
+"The \"async\" keyword is syntactic sugar. The compiler replaces the return type "
+"with a future."
msgstr ""
"La palabra clave \"async\" es azúcar sintáctico. El compilador sustituye el "
"tipo de resultado devuelto por un futuro. "
#: src/concurrency/async/async-await.md
msgid ""
-"You cannot make `main` async, without additional instructions to the "
-"compiler on how to use the returned future."
+"You cannot make `main` async, without additional instructions to the compiler "
+"on how to use the returned future."
msgstr ""
-"No se puede hacer que `main` sea asíncrono sin dar instrucciones adicionales "
-"al compilador sobre cómo usar el futuro devuelto."
+"No se puede hacer que `main` sea asíncrono sin dar instrucciones adicionales al "
+"compilador sobre cómo usar el futuro devuelto."
#: src/concurrency/async/async-await.md
#, fuzzy
@@ -21826,13 +21440,13 @@ msgid ""
"You need an executor to run async code. `block_on` blocks the current thread "
"until the provided future has run to completion."
msgstr ""
-"Se necesita un ejecutor para ejecutar el código asíncrono. `block_on` "
-"bloquea el hilo hasta que se complete el futuro proporcionado. "
+"Se necesita un ejecutor para ejecutar el código asíncrono. `block_on` bloquea "
+"el hilo hasta que se complete el futuro proporcionado. "
#: src/concurrency/async/async-await.md
msgid ""
-"`.await` asynchronously waits for the completion of another operation. "
-"Unlike `block_on`, `.await` doesn't block the current thread."
+"`.await` asynchronously waits for the completion of another operation. Unlike "
+"`block_on`, `.await` doesn't block the current thread."
msgstr ""
"`.await` espera de forma asíncrona la finalización de otra operación. A "
"diferencia de `block_on`, `.await` no bloquea el hilo."
@@ -21843,37 +21457,36 @@ msgid ""
"`.await` can only be used inside an `async` function (or block; these are "
"introduced later)."
msgstr ""
-"`.await` solo se puede usar dentro de una función `async` (o bloqueo; estos "
-"se verán más tarde). "
+"`.await` solo se puede usar dentro de una función `async` (o bloqueo; estos se "
+"verán más tarde). "
#: src/concurrency/async/futures.md
msgid ""
-"[`Future`](https://doc.rust-lang.org/std/future/trait.Future.html) is a "
-"trait, implemented by objects that represent an operation that may not be "
-"complete yet. A future can be polled, and `poll` returns a [`Poll`](https://"
-"doc.rust-lang.org/std/task/enum.Poll.html)."
+"[`Future`](https://doc.rust-lang.org/std/future/trait.Future.html) is a trait, "
+"implemented by objects that represent an operation that may not be complete "
+"yet. A future can be polled, and `poll` returns a [`Poll`](https://doc.rust-"
+"lang.org/std/task/enum.Poll.html)."
msgstr ""
-"[`Future`](https://doc.rust-lang.org/std/future/trait.Future.html) es un "
-"trait implementado por objetos que representan una operación que puede que "
-"aún no se haya completado. Se puede sondear un futuro y `poll` devuelve un "
-"[`Poll`](https://doc.rust-lang.org/std/task/enum.Poll.html)."
+"[`Future`](https://doc.rust-lang.org/std/future/trait.Future.html) es un trait "
+"implementado por objetos que representan una operación que puede que aún no se "
+"haya completado. Se puede sondear un futuro y `poll` devuelve un [`Poll`]"
+"(https://doc.rust-lang.org/std/task/enum.Poll.html)."
#: src/concurrency/async/futures.md
msgid ""
-"An async function returns an `impl Future`. It's also possible (but "
-"uncommon) to implement `Future` for your own types. For example, the "
-"`JoinHandle` returned from `tokio::spawn` implements `Future` to allow "
-"joining to it."
+"An async function returns an `impl Future`. It's also possible (but uncommon) "
+"to implement `Future` for your own types. For example, the `JoinHandle` "
+"returned from `tokio::spawn` implements `Future` to allow joining to it."
msgstr ""
-"Una función asíncrona devuelve `impl Future`. También es posible (aunque no "
-"es habitual) implementar `Future` para tus propios tipos. Por ejemplo, el "
-"`JoinHandle` devuelto por `tokio::spawn` implementa `Future` para permitir "
-"que se una a él."
+"Una función asíncrona devuelve `impl Future`. También es posible (aunque no es "
+"habitual) implementar `Future` para tus propios tipos. Por ejemplo, el "
+"`JoinHandle` devuelto por `tokio::spawn` implementa `Future` para permitir que "
+"se una a él."
#: src/concurrency/async/futures.md
msgid ""
-"The `.await` keyword, applied to a Future, causes the current async function "
-"to pause until that Future is ready, and then evaluates to its output."
+"The `.await` keyword, applied to a Future, causes the current async function to "
+"pause until that Future is ready, and then evaluates to its output."
msgstr ""
"La palabra clave `.await`, aplicada a un futuro, provoca que la función "
"asíncrona se detenga hasta que dicho futuro esté listo y, a continuación, se "
@@ -21881,33 +21494,33 @@ msgstr ""
#: src/concurrency/async/futures.md
msgid ""
-"The `Future` and `Poll` types are implemented exactly as shown; click the "
-"links to show the implementations in the docs."
+"The `Future` and `Poll` types are implemented exactly as shown; click the links "
+"to show the implementations in the docs."
msgstr ""
"Los tipos `Future` y `Polll` se implementan exactamente como se indica. Haz "
"clic en los enlaces para mostrar las implementaciones en los documentos."
#: src/concurrency/async/futures.md
msgid ""
-"We will not get to `Pin` and `Context`, as we will focus on writing async "
-"code, rather than building new async primitives. Briefly:"
+"We will not get to `Pin` and `Context`, as we will focus on writing async code, "
+"rather than building new async primitives. Briefly:"
msgstr ""
"No trataremos `Pin` ni `Context`, ya que nos centraremos en escribir código "
"asíncrono en lugar de compilar nuevos primitivos asíncronos. Brevemente:"
#: src/concurrency/async/futures.md
msgid ""
-"`Context` allows a Future to schedule itself to be polled again when an "
-"event occurs."
+"`Context` allows a Future to schedule itself to be polled again when an event "
+"occurs."
msgstr ""
"`Context` permite que un futuro se programe a sí mismo para que se vuelva a "
"sondear cuando se produzca un evento."
#: src/concurrency/async/futures.md
msgid ""
-"`Pin` ensures that the Future isn't moved in memory, so that pointers into "
-"that future remain valid. This is required to allow references to remain "
-"valid after an `.await`."
+"`Pin` ensures that the Future isn't moved in memory, so that pointers into that "
+"future remain valid. This is required to allow references to remain valid after "
+"an `.await`."
msgstr ""
"`Pin` asegura que el futuro no se mueva en la memoria, de forma que los "
"punteros en ese futuro siguen siendo válidos. Esto es necesario para que las "
@@ -21916,13 +21529,12 @@ msgstr ""
#: src/concurrency/async/runtimes.md
msgid ""
"A _runtime_ provides support for performing operations asynchronously (a "
-"_reactor_) and is responsible for executing futures (an _executor_). Rust "
-"does not have a \"built-in\" runtime, but several options are available:"
+"_reactor_) and is responsible for executing futures (an _executor_). Rust does "
+"not have a \"built-in\" runtime, but several options are available:"
msgstr ""
-"Un _runtime_ ofrece asistencia para realizar operaciones de forma asíncrona "
-"(un _reactor_) y es responsable de ejecutar futuros (un _ejecutor_). Rust no "
-"cuenta con un tiempo de ejecución \"integrado\", pero hay varias opciones "
-"disponibles:"
+"Un _runtime_ ofrece asistencia para realizar operaciones de forma asíncrona (un "
+"_reactor_) y es responsable de ejecutar futuros (un _ejecutor_). Rust no cuenta "
+"con un tiempo de ejecución \"integrado\", pero hay varias opciones disponibles:"
#: src/concurrency/async/runtimes.md
msgid ""
@@ -21931,16 +21543,16 @@ msgid ""
"github.com/hyperium/tonic) for gRPC."
msgstr ""
"[Tokio](https://tokio.rs/): eficaz, con un ecosistema bien desarrollado de "
-"funciones, como [Hyper](https://hyper.rs/) para HTTP o [Tonic](https://"
-"github.com/hyperium/tonic) para usar gRPC."
+"funciones, como [Hyper](https://hyper.rs/) para HTTP o [Tonic](https://github."
+"com/hyperium/tonic) para usar gRPC."
#: src/concurrency/async/runtimes.md
msgid ""
-"[async-std](https://async.rs/): aims to be a \"std for async\", and includes "
-"a basic runtime in `async::task`."
+"[async-std](https://async.rs/): aims to be a \"std for async\", and includes a "
+"basic runtime in `async::task`."
msgstr ""
-"[async-std](https://async.rs/): se trata de un \"std para async\" e incluye "
-"un tiempo de ejecución básico en `async::task`."
+"[async-std](https://async.rs/): se trata de un \"std para async\" e incluye un "
+"tiempo de ejecución básico en `async::task`."
#: src/concurrency/async/runtimes.md
msgid "[smol](https://docs.rs/smol/latest/smol/): simple and lightweight"
@@ -21963,21 +21575,20 @@ msgid ""
"async things can't run in the playground."
msgstr ""
"Ten en cuenta que, de los tiempos de ejecución enumerados, el playground de "
-"Rust solo admite Tokio. El playground tampoco permite ningún tipo de E/S, "
-"por lo que la mayoría de elementos asíncronos interesantes no se pueden "
-"ejecutar. en él."
+"Rust solo admite Tokio. El playground tampoco permite ningún tipo de E/S, por "
+"lo que la mayoría de elementos asíncronos interesantes no se pueden ejecutar. "
+"en él."
#: src/concurrency/async/runtimes.md
msgid ""
"Futures are \"inert\" in that they do not do anything (not even start an I/O "
"operation) unless there is an executor polling them. This differs from JS "
-"Promises, for example, which will run to completion even if they are never "
-"used."
+"Promises, for example, which will run to completion even if they are never used."
msgstr ""
"Los futuros son \"inertes\", ya que no realizan ninguna acción (ni siquiera "
-"iniciar una operación de E/S) a menos que haya un ejecutor que los sondee. "
-"Muy diferente de las promesas de JavaScript, por ejemplo, que se ejecutan "
-"hasta su finalización, aunque nunca se utilicen."
+"iniciar una operación de E/S) a menos que haya un ejecutor que los sondee. Muy "
+"diferente de las promesas de JavaScript, por ejemplo, que se ejecutan hasta su "
+"finalización, aunque nunca se utilicen."
#: src/concurrency/async/runtimes/tokio.md
#, fuzzy
@@ -22014,8 +21625,7 @@ msgstr "La función `spawn` crea una \"tarea\" simultánea."
#: src/concurrency/async/runtimes/tokio.md
msgid "Note: `spawn` takes a `Future`, you don't call `.await` on `count_to`."
-msgstr ""
-"Nota: `spawn` utiliza un `Future`, no se llama a `.await` en `count_to`."
+msgstr "Nota: `spawn` utiliza un `Future`, no se llama a `.await` en `count_to`."
#: src/concurrency/async/runtimes/tokio.md
msgid "**Further exploration:**"
@@ -22027,9 +21637,9 @@ msgid ""
"cancellation. `tokio::spawn` returns a handle which can be awaited to wait "
"until it finishes."
msgstr ""
-"¿Por qué `count_to` no suele llegar a 10? Se trata de un ejemplo de "
-"cancelación asíncrona. `tokio::spawn` devuelve un controlador que puede "
-"esperarse hasta que termine."
+"¿Por qué `count_to` no suele llegar a 10? Se trata de un ejemplo de cancelación "
+"asíncrona. `tokio::spawn` devuelve un controlador que puede esperarse hasta que "
+"termine."
#: src/concurrency/async/runtimes/tokio.md
msgid "Try `count_to(10).await` instead of spawning."
@@ -22045,18 +21655,17 @@ msgstr "Rust tiene un sistema de tareas, que es una forma de hilo ligero."
#: src/concurrency/async/tasks.md
msgid ""
-"A task has a single top-level future which the executor polls to make "
-"progress. That future may have one or more nested futures that its `poll` "
-"method polls, corresponding loosely to a call stack. Concurrency within a "
-"task is possible by polling multiple child futures, such as racing a timer "
-"and an I/O operation."
+"A task has a single top-level future which the executor polls to make progress. "
+"That future may have one or more nested futures that its `poll` method polls, "
+"corresponding loosely to a call stack. Concurrency within a task is possible by "
+"polling multiple child futures, such as racing a timer and an I/O operation."
msgstr ""
"Una tarea tiene un solo futuro de nivel superior que el ejecutor sondea para "
-"hacer que progrese. El futuro puede tener uno o varios futuros anidados que "
-"su método `poll` sondea, lo que se corresponde con una pila de llamadas. La "
+"hacer que progrese. El futuro puede tener uno o varios futuros anidados que su "
+"método `poll` sondea, lo que se corresponde con una pila de llamadas. La "
"concurrencia dentro de una tarea es posible mediante el sondeo de varios "
-"futuros secundarios , como una carrera de un temporizador y una operación de "
-"E/S."
+"futuros secundarios , como una carrera de un temporizador y una operación de E/"
+"S."
#: src/concurrency/async/tasks.md
msgid "\"127.0.0.1:0\""
@@ -22083,26 +21692,25 @@ msgid "\"Thanks for dialing in, {name}!\\n\""
msgstr "\"¡Gracias por llamar, {name}!\\n\""
#: src/concurrency/async/tasks.md src/concurrency/async-control-flow/join.md
-msgid ""
-"Copy this example into your prepared `src/main.rs` and run it from there."
+msgid "Copy this example into your prepared `src/main.rs` and run it from there."
msgstr ""
"Copia este ejemplo en el archivo `src/main.rs` que has preparado y ejecútalo "
"desde ahí."
#: src/concurrency/async/tasks.md
msgid ""
-"Try connecting to it with a TCP connection tool like [nc](https://www.unix."
-"com/man-page/linux/1/nc/) or [telnet](https://www.unix.com/man-page/linux/1/"
+"Try connecting to it with a TCP connection tool like [nc](https://www.unix.com/"
+"man-page/linux/1/nc/) or [telnet](https://www.unix.com/man-page/linux/1/"
"telnet/)."
msgstr ""
-"Prueba a conectarte mediante una herramienta de conexión TCP como [nc]"
-"(https://www.unix.com/man-page/linux/1/nc/) o [telnet](https://www.unix.com/"
-"man-page/linux/1/telnet/)."
+"Prueba a conectarte mediante una herramienta de conexión TCP como [nc](https://"
+"www.unix.com/man-page/linux/1/nc/) o [telnet](https://www.unix.com/man-page/"
+"linux/1/telnet/)."
#: src/concurrency/async/tasks.md
msgid ""
-"Ask students to visualize what the state of the example server would be with "
-"a few connected clients. What tasks exist? What are their Futures?"
+"Ask students to visualize what the state of the example server would be with a "
+"few connected clients. What tasks exist? What are their Futures?"
msgstr ""
"Pide a los alumnos que vean cuál sería el estado del servidor de ejemplo con "
"algunos clientes conectados. ¿Qué tareas hay? ¿Cuáles son sus futuros?"
@@ -22111,8 +21719,8 @@ msgstr ""
#, fuzzy
msgid ""
"This is the first time we've seen an `async` block. This is similar to a "
-"closure, but does not take any arguments. Its return value is a Future, "
-"similar to an `async fn`."
+"closure, but does not take any arguments. Its return value is a Future, similar "
+"to an `async fn`."
msgstr ""
"Esta es la primera vez que vemos un bloque `async`. Es similar a un cierre, "
"pero no acepta argumentos. Su valor devuelto es un futuro, similar a `async "
@@ -22120,11 +21728,11 @@ msgstr ""
#: src/concurrency/async/tasks.md
msgid ""
-"Refactor the async block into a function, and improve the error handling "
-"using `?`."
+"Refactor the async block into a function, and improve the error handling using "
+"`?`."
msgstr ""
-"Refactoriza el bloque asíncrono en una función y mejora la gestión de "
-"errores con `?`."
+"Refactoriza el bloque asíncrono en una función y mejora la gestión de errores "
+"con `?`."
#: src/concurrency/async-control-flow/channels.md
msgid ""
@@ -22153,8 +21761,7 @@ msgstr "\"Se ha producido un error en la tarea del controlador de ping.\""
#: src/concurrency/async-control-flow/channels.md
msgid "Change the channel size to `3` and see how it affects the execution."
-msgstr ""
-"Cambia el tamaño del canal a `3` y comprueba cómo afecta a la ejecución."
+msgstr "Cambia el tamaño del canal a `3` y comprueba cómo afecta a la ejecución."
#: src/concurrency/async-control-flow/channels.md
#, fuzzy
@@ -22162,8 +21769,8 @@ msgid ""
"Overall, the interface is similar to the `sync` channels as seen in the "
"[morning class](../channels.md)."
msgstr ""
-"En general, la interfaz es similar a los canales `sync`, tal como se ha "
-"visto ver en la [clase de la mañana](concurrency/channels.md)."
+"En general, la interfaz es similar a los canales `sync`, tal como se ha visto "
+"ver en la [clase de la mañana](concurrency/channels.md)."
#: src/concurrency/async-control-flow/channels.md
msgid "Try removing the `std::mem::drop` call. What happens? Why?"
@@ -22172,32 +21779,31 @@ msgstr "Prueba a quitar la llamada a `std::mem::drop`. ¿Qué sucede? ¿Por qué
#: src/concurrency/async-control-flow/channels.md
msgid ""
"The [Flume](https://docs.rs/flume/latest/flume/) crate has channels that "
-"implement both `sync` and `async` `send` and `recv`. This can be convenient "
-"for complex applications with both IO and heavy CPU processing tasks."
+"implement both `sync` and `async` `send` and `recv`. This can be convenient for "
+"complex applications with both IO and heavy CPU processing tasks."
msgstr ""
"El crate [Flume](https://docs.rs/flume/latest/flume/) tiene canales que "
-"implementan `sync` y `async`,`send` y `recv`. Esto puede resultar práctico "
-"para aplicaciones complejas con tareas de E/S y tareas pesadas de "
-"procesamiento de CPU."
+"implementan `sync` y `async`,`send` y `recv`. Esto puede resultar práctico para "
+"aplicaciones complejas con tareas de E/S y tareas pesadas de procesamiento de "
+"CPU."
#: src/concurrency/async-control-flow/channels.md
msgid ""
-"What makes working with `async` channels preferable is the ability to "
-"combine them with other `future`s to combine them and create complex control "
-"flow."
+"What makes working with `async` channels preferable is the ability to combine "
+"them with other `future`s to combine them and create complex control flow."
msgstr ""
-"Es preferible trabajar con canales `async` por la capacidad de combinarlos "
-"con otros `future` para poder crear un flujo de control complejo."
+"Es preferible trabajar con canales `async` por la capacidad de combinarlos con "
+"otros `future` para poder crear un flujo de control complejo."
#: src/concurrency/async-control-flow/join.md
msgid ""
-"A join operation waits until all of a set of futures are ready, and returns "
-"a collection of their results. This is similar to `Promise.all` in "
-"JavaScript or `asyncio.gather` in Python."
+"A join operation waits until all of a set of futures are ready, and returns a "
+"collection of their results. This is similar to `Promise.all` in JavaScript or "
+"`asyncio.gather` in Python."
msgstr ""
-"Una operación join espera hasta que todos los futuros estén listos y "
-"devuelve una colección de sus resultados. Es similar a `Promise.all` en "
-"JavaScript o `asyncio.gather` en Python."
+"Una operación join espera hasta que todos los futuros estén listos y devuelve "
+"una colección de sus resultados. Es similar a `Promise.all` en JavaScript o "
+"`asyncio.gather` en Python."
#: src/concurrency/async-control-flow/join.md
msgid "\"https://google.com\""
@@ -22218,13 +21824,13 @@ msgstr "\"BAD_URL\""
#: src/concurrency/async-control-flow/join.md
msgid ""
"For multiple futures of disjoint types, you can use `std::future::join!` but "
-"you must know how many futures you will have at compile time. This is "
-"currently in the `futures` crate, soon to be stabilised in `std::future`."
+"you must know how many futures you will have at compile time. This is currently "
+"in the `futures` crate, soon to be stabilised in `std::future`."
msgstr ""
-"En el caso de varios futuros de tipos distintos, puedes utilizar `std::"
-"future::join!`, pero debes saber cuántos futuros tendrás en el tiempo de "
-"compilación. Esto se encuentra actualmente en el crate `futures`, que pronto "
-"se estabilizará en `std::future`."
+"En el caso de varios futuros de tipos distintos, puedes utilizar `std::future::"
+"join!`, pero debes saber cuántos futuros tendrás en el tiempo de compilación. "
+"Esto se encuentra actualmente en el crate `futures`, que pronto se estabilizará "
+"en `std::future`."
#: src/concurrency/async-control-flow/join.md
#, fuzzy
@@ -22232,48 +21838,47 @@ msgid ""
"The risk of `join` is that one of the futures may never resolve, this would "
"cause your program to stall."
msgstr ""
-"El riesgo que supone 'join' es que puede que uno de los futuros no se "
-"resuelva nunca, causando que el programa se bloquee. "
+"El riesgo que supone 'join' es que puede que uno de los futuros no se resuelva "
+"nunca, causando que el programa se bloquee. "
#: src/concurrency/async-control-flow/join.md
msgid ""
-"You can also combine `join_all` with `join!` for instance to join all "
-"requests to an http service as well as a database query. Try adding a "
-"`tokio::time::sleep` to the future, using `futures::join!`. This is not a "
-"timeout (that requires `select!`, explained in the next chapter), but "
-"demonstrates `join!`."
+"You can also combine `join_all` with `join!` for instance to join all requests "
+"to an http service as well as a database query. Try adding a `tokio::time::"
+"sleep` to the future, using `futures::join!`. This is not a timeout (that "
+"requires `select!`, explained in the next chapter), but demonstrates `join!`."
msgstr ""
"También puedes combinar `join_all` con `join!`, por ejemplo, para unir todas "
-"las solicitudes a un servicio HTTP, así como una consulta a la base de "
-"datos. Prueba a añadir un tokio::time::sleep`al futuro mediante`futures::"
-"join!`. No se trata de un tiempo de espera (para eso se requiere `select!`, "
-"que se explica en el siguiente capítulo), sino que muestra `join!\\`."
+"las solicitudes a un servicio HTTP, así como una consulta a la base de datos. "
+"Prueba a añadir un tokio::time::sleep`al futuro mediante`futures::join!`. No se "
+"trata de un tiempo de espera (para eso se requiere `select!`, que se explica en "
+"el siguiente capítulo), sino que muestra `join!\\`."
#: src/concurrency/async-control-flow/select.md
msgid ""
-"A select operation waits until any of a set of futures is ready, and "
-"responds to that future's result. In JavaScript, this is similar to `Promise."
-"race`. In Python, it compares to `asyncio.wait(task_set, return_when=asyncio."
+"A select operation waits until any of a set of futures is ready, and responds "
+"to that future's result. In JavaScript, this is similar to `Promise.race`. In "
+"Python, it compares to `asyncio.wait(task_set, return_when=asyncio."
"FIRST_COMPLETED)`."
msgstr ""
"Una operación select espera hasta que un conjunto de futuros esté listo y "
-"responde al resultado de ese futuro. En JavaScript, esto es similar a "
-"`Promise.race`. En Python, se compara con `asyncio.wait(task_set, "
-"return_when=asyncio.FIRST_COMPLETED)`."
+"responde al resultado de ese futuro. En JavaScript, esto es similar a `Promise."
+"race`. En Python, se compara con `asyncio.wait(task_set, return_when=asyncio."
+"FIRST_COMPLETED)`."
#: src/concurrency/async-control-flow/select.md
#, fuzzy
msgid ""
-"Similar to a match statement, the body of `select!` has a number of arms, "
-"each of the form `pattern = future => statement`. When a `future` is ready, "
-"its return value is destructured by the `pattern`. The `statement` is then "
-"run with the resulting variables. The `statement` result becomes the result "
-"of the `select!` macro."
+"Similar to a match statement, the body of `select!` has a number of arms, each "
+"of the form `pattern = future => statement`. When a `future` is ready, its "
+"return value is destructured by the `pattern`. The `statement` is then run with "
+"the resulting variables. The `statement` result becomes the result of the "
+"`select!` macro."
msgstr ""
"Al igual que en el caso de una instrucción _match_, el cuerpo de `select!` "
"tiene una serie de brazos, cada uno de los cuales tiene la forma `pattern = "
-"future => statement`. Cuando `future` está listo, la instrucción se ejecuta "
-"con las variables de `pattern` vinculadas al resultado de `future`."
+"future => statement`. Cuando `future` está listo, la instrucción se ejecuta con "
+"las variables de `pattern` vinculadas al resultado de `future`."
#: src/concurrency/async-control-flow/select.md
msgid "\"Felix\""
@@ -22298,9 +21903,9 @@ msgstr "\"El ganador es {winner:?}\""
#: src/concurrency/async-control-flow/select.md
msgid ""
"In this example, we have a race between a cat and a dog. "
-"`first_animal_to_finish_race` listens to both channels and will pick "
-"whichever arrives first. Since the dog takes 50ms, it wins against the cat "
-"that take 500ms."
+"`first_animal_to_finish_race` listens to both channels and will pick whichever "
+"arrives first. Since the dog takes 50ms, it wins against the cat that take "
+"500ms."
msgstr ""
"En este ejemplo, tenemos una carrera entre un gato y un perro. "
"`first_animal_to_finish_race` escucha a ambos canales y elige el que llegue "
@@ -22308,37 +21913,36 @@ msgstr ""
#: src/concurrency/async-control-flow/select.md
msgid ""
-"You can use `oneshot` channels in this example as the channels are supposed "
-"to receive only one `send`."
+"You can use `oneshot` channels in this example as the channels are supposed to "
+"receive only one `send`."
msgstr ""
"En este ejemplo, puedes usar canales `oneshot`, ya que se supone que solo "
"recibirán un `send`."
#: src/concurrency/async-control-flow/select.md
msgid ""
-"Try adding a deadline to the race, demonstrating selecting different sorts "
-"of futures."
+"Try adding a deadline to the race, demonstrating selecting different sorts of "
+"futures."
msgstr ""
"Prueba a añadir un límite a la carrera y demuestra cómo se seleccionan "
"distintos tipos de futuros."
#: src/concurrency/async-control-flow/select.md
msgid ""
-"Note that `select!` drops unmatched branches, which cancels their futures. "
-"It is easiest to use when every execution of `select!` creates new futures."
+"Note that `select!` drops unmatched branches, which cancels their futures. It "
+"is easiest to use when every execution of `select!` creates new futures."
msgstr ""
-"Ten en cuenta que `select!` elimina las ramas sin coincidencias, cancelando "
-"así sus futuros. Es más fácil de usar cuando cada ejecución de `select!` "
-"crea futuros."
+"Ten en cuenta que `select!` elimina las ramas sin coincidencias, cancelando así "
+"sus futuros. Es más fácil de usar cuando cada ejecución de `select!` crea "
+"futuros."
#: src/concurrency/async-control-flow/select.md
msgid ""
-"An alternative is to pass `&mut future` instead of the future itself, but "
-"this can lead to issues, further discussed in the pinning slide."
+"An alternative is to pass `&mut future` instead of the future itself, but this "
+"can lead to issues, further discussed in the pinning slide."
msgstr ""
-"También puedes enviar `&mut future` en lugar del futuro en sí, pero esto "
-"podría provocar problemas, como se explica más adelante en la diapositiva "
-"sobre pines."
+"También puedes enviar `&mut future` en lugar del futuro en sí, pero esto podría "
+"provocar problemas, como se explica más adelante en la diapositiva sobre pines."
#: src/concurrency/async-pitfalls.md
#, fuzzy
@@ -22349,9 +21953,8 @@ msgid ""
"chapter."
msgstr ""
"Async/await ofrece una abstracción práctica y eficiente para la programación "
-"asíncrona simultánea. Sin embargo, el modelo async/await de Rust también "
-"viene acompañado de errores y footguns. En este capítulo veremos algunos de "
-"ellos:"
+"asíncrona simultánea. Sin embargo, el modelo async/await de Rust también viene "
+"acompañado de errores y footguns. En este capítulo veremos algunos de ellos:"
#: src/concurrency/async-pitfalls.md
msgid "Pin"
@@ -22364,13 +21967,12 @@ msgstr "Bloqueo del ejecutor"
#: src/concurrency/async-pitfalls/blocking-executor.md
msgid ""
"Most async runtimes only allow IO tasks to run concurrently. This means that "
-"CPU blocking tasks will block the executor and prevent other tasks from "
-"being executed. An easy workaround is to use async equivalent methods where "
-"possible."
+"CPU blocking tasks will block the executor and prevent other tasks from being "
+"executed. An easy workaround is to use async equivalent methods where possible."
msgstr ""
-"La mayoría de los tiempos de ejecución asíncronos solo permiten que las "
-"tareas de E/S se ejecuten de forma simultánea. Esto significa que las tareas "
-"que bloquean la CPU bloquearán el ejecutor e impedirán que se ejecuten otras "
+"La mayoría de los tiempos de ejecución asíncronos solo permiten que las tareas "
+"de E/S se ejecuten de forma simultánea. Esto significa que las tareas que "
+"bloquean la CPU bloquearán el ejecutor e impedirán que se ejecuten otras "
"tareas. Una solución alternativa y sencilla es utilizar métodos asíncronos "
"equivalentes siempre que sea posible."
@@ -22392,13 +21994,13 @@ msgstr ""
#: src/concurrency/async-pitfalls/blocking-executor.md
msgid ""
-"The `\"current_thread\"` flavor puts all tasks on a single thread. This "
-"makes the effect more obvious, but the bug is still present in the multi-"
-"threaded flavor."
+"The `\"current_thread\"` flavor puts all tasks on a single thread. This makes "
+"the effect more obvious, but the bug is still present in the multi-threaded "
+"flavor."
msgstr ""
"La versión `\"current_thread\"` reúne todas las tareas en un solo hilo. Esto "
-"consigue que el efecto sea más obvio, pero el error sigue estando presente "
-"en la versión multihilo."
+"consigue que el efecto sea más obvio, pero el error sigue estando presente en "
+"la versión multihilo."
#: src/concurrency/async-pitfalls/blocking-executor.md
msgid ""
@@ -22418,28 +22020,26 @@ msgstr ""
msgid ""
"You should not think of tasks as OS threads. They do not map 1 to 1 and most "
"executors will allow many tasks to run on a single OS thread. This is "
-"particularly problematic when interacting with other libraries via FFI, "
-"where that library might depend on thread-local storage or map to specific "
-"OS threads (e.g., CUDA). Prefer `tokio::task::spawn_blocking` in such "
-"situations."
-msgstr ""
-"No debes pensar en las tareas como hilos del sistema operativo. No se "
-"asignan 1 a 1 y la mayoría de los ejecutores permitirán que se ejecuten "
-"muchas tareas en un solo hilo del sistema operativo. Esta situación es "
-"especialmente problemática cuando se interactúa con otras bibliotecas a "
-"través de FFI, donde dicha biblioteca puede depender del almacenamiento "
-"local de hilos o puede asignarse a hilos específicos del sistema operativo "
-"(por ejemplo, CUDA). En estos casos es preferible usar `tokio::task::"
-"spawn_blocking`."
+"particularly problematic when interacting with other libraries via FFI, where "
+"that library might depend on thread-local storage or map to specific OS threads "
+"(e.g., CUDA). Prefer `tokio::task::spawn_blocking` in such situations."
+msgstr ""
+"No debes pensar en las tareas como hilos del sistema operativo. No se asignan 1 "
+"a 1 y la mayoría de los ejecutores permitirán que se ejecuten muchas tareas en "
+"un solo hilo del sistema operativo. Esta situación es especialmente "
+"problemática cuando se interactúa con otras bibliotecas a través de FFI, donde "
+"dicha biblioteca puede depender del almacenamiento local de hilos o puede "
+"asignarse a hilos específicos del sistema operativo (por ejemplo, CUDA). En "
+"estos casos es preferible usar `tokio::task::spawn_blocking`."
#: src/concurrency/async-pitfalls/blocking-executor.md
msgid ""
-"Use sync mutexes with care. Holding a mutex over an `.await` may cause "
-"another task to block, and that task may be running on the same thread."
+"Use sync mutexes with care. Holding a mutex over an `.await` may cause another "
+"task to block, and that task may be running on the same thread."
msgstr ""
"Utiliza las exclusión mutuas de sincronización con cuidado. Si mantienes una "
-"exclusión mutua sobre un `.await`, puede que se bloquee otra tarea y que "
-"esta se esté ejecutando en el mismo hilo."
+"exclusión mutua sobre un `.await`, puede que se bloquee otra tarea y que esta "
+"se esté ejecutando en el mismo hilo."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
@@ -22447,20 +22047,19 @@ msgid ""
"type returned is the result of a compiler transformation which turns local "
"variables into data stored inside the future."
msgstr ""
-"Los bloques y las funciones asíncronos devuelven tipos que implementan el "
-"trait `Future`. El tipo devuelto es el resultado de una transformación del "
-"compilador que convierte las variables locales en datos almacenados en el "
-"futuro."
+"Los bloques y las funciones asíncronos devuelven tipos que implementan el trait "
+"`Future`. El tipo devuelto es el resultado de una transformación del compilador "
+"que convierte las variables locales en datos almacenados en el futuro."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
-"Some of those variables can hold pointers to other local variables. Because "
-"of that, the future should never be moved to a different memory location, as "
-"it would invalidate those pointers."
+"Some of those variables can hold pointers to other local variables. Because of "
+"that, the future should never be moved to a different memory location, as it "
+"would invalidate those pointers."
msgstr ""
-"Algunas de estas variables pueden dirigir punteros a otras variables "
-"locales. Por este motivo, el futuro nunca debería trasladarse a otra "
-"ubicación de memoria, ya que esta acción invalidaría esos punteros."
+"Algunas de estas variables pueden dirigir punteros a otras variables locales. "
+"Por este motivo, el futuro nunca debería trasladarse a otra ubicación de "
+"memoria, ya que esta acción invalidaría esos punteros."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
@@ -22470,9 +22069,9 @@ msgid ""
"location."
msgstr ""
"Para evitar que el tipo futuro se mueva en la memoria, solo se puede sondear "
-"mediante un puntero fijado. `Pin` es un envoltorio que rodea a una "
-"referencia y que no permite todas las operaciones que moverían la instancia "
-"a la que apunta a otra ubicación de memoria."
+"mediante un puntero fijado. `Pin` es un envoltorio que rodea a una referencia y "
+"que no permite todas las operaciones que moverían la instancia a la que apunta "
+"a otra ubicación de memoria."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
@@ -22520,13 +22119,13 @@ msgid ""
"You may recognize this as an example of the actor pattern. Actors typically "
"call `select!` in a loop."
msgstr ""
-"Puede que reconozcas esto como un ejemplo del patrón actor. Los actores "
-"suelen llamar a `select!` en un bucle."
+"Puede que reconozcas esto como un ejemplo del patrón actor. Los actores suelen "
+"llamar a `select!` en un bucle."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
-"This serves as a summation of a few of the previous lessons, so take your "
-"time with it."
+"This serves as a summation of a few of the previous lessons, so take your time "
+"with it."
msgstr ""
"Esta sección es un resumen de algunas de las lecciones anteriores, así que "
"tómate tu tiempo ."
@@ -22540,92 +22139,89 @@ msgstr ""
"`select!`, nunca se ejecutará. ¿Por qué?"
#: src/concurrency/async-pitfalls/pin.md
-msgid ""
-"Instead, add a `timeout_fut` containing that future outside of the `loop`:"
+msgid "Instead, add a `timeout_fut` containing that future outside of the `loop`:"
msgstr ""
"En su lugar, añade un `timeout_fut` que contenga ese futuro fuera de `loop`:"
#: src/concurrency/async-pitfalls/pin.md
msgid ""
"This still doesn't work. Follow the compiler errors, adding `&mut` to the "
-"`timeout_fut` in the `select!` to work around the move, then using `Box::"
-"pin`:"
+"`timeout_fut` in the `select!` to work around the move, then using `Box::pin`:"
msgstr ""
"Continuará sin funcionar. Sigue los errores del compilador y añade `&mut` a "
-"`timeout_fut` en `select!` para ir despejando el problema. A continuación, "
-"usa `Box::pin`:"
+"`timeout_fut` en `select!` para ir despejando el problema. A continuación, usa "
+"`Box::pin`:"
#: src/concurrency/async-pitfalls/pin.md
#, fuzzy
msgid ""
"This compiles, but once the timeout expires it is `Poll::Ready` on every "
-"iteration (a fused future would help with this). Update to reset "
-"`timeout_fut` every time it expires:"
+"iteration (a fused future would help with this). Update to reset `timeout_fut` "
+"every time it expires:"
msgstr ""
-"Se puede compilar, pero una vez que vence el tiempo de espera, aparece "
-"`Poll::Ready` en cada iteración (un futuro fusionado podría resultar útil). "
-"Actualiza para restablecer `timeout_fut` cada vez que expire."
+"Se puede compilar, pero una vez que vence el tiempo de espera, aparece `Poll::"
+"Ready` en cada iteración (un futuro fusionado podría resultar útil). Actualiza "
+"para restablecer `timeout_fut` cada vez que expire."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
"Box allocates on the heap. In some cases, `std::pin::pin!` (only recently "
-"stabilized, with older code often using `tokio::pin!`) is also an option, "
-"but that is difficult to use for a future that is reassigned."
+"stabilized, with older code often using `tokio::pin!`) is also an option, but "
+"that is difficult to use for a future that is reassigned."
msgstr ""
-"Box se asigna en el montículo. En algunos casos, `std::pin::pin!` (solo si "
-"se ha estabilizado recientemente, con código antiguo que suele utilizar "
-"`tokio::pin!`) también es una opción, pero difícil de utilizar en un futuro "
-"que se reasigna."
+"Box se asigna en el montículo. En algunos casos, `std::pin::pin!` (solo si se "
+"ha estabilizado recientemente, con código antiguo que suele utilizar `tokio::"
+"pin!`) también es una opción, pero difícil de utilizar en un futuro que se "
+"reasigna."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
-"Another alternative is to not use `pin` at all but spawn another task that "
-"will send to a `oneshot` channel every 100ms."
+"Another alternative is to not use `pin` at all but spawn another task that will "
+"send to a `oneshot` channel every 100ms."
msgstr ""
-"Otra alternativa es no utilizar `pin`, sino generar otra tarea que se "
-"enviará a un canal de `oneshot` cada 100 ms."
+"Otra alternativa es no utilizar `pin`, sino generar otra tarea que se enviará a "
+"un canal de `oneshot` cada 100 ms."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
-"Data that contains pointers to itself is called self-referential. Normally, "
-"the Rust borrow checker would prevent self-referential data from being "
-"moved, as the references cannot outlive the data they point to. However, the "
-"code transformation for async blocks and functions is not verified by the "
-"borrow checker."
+"Data that contains pointers to itself is called self-referential. Normally, the "
+"Rust borrow checker would prevent self-referential data from being moved, as "
+"the references cannot outlive the data they point to. However, the code "
+"transformation for async blocks and functions is not verified by the borrow "
+"checker."
msgstr ""
"Los datos que contienen punteros a sí mismos se denominan autoreferenciales. "
-"Normalmente, el verificador de préstamos de Rust evitaría que se movieran "
-"los datos de autorreferencia, ya que las referencias no pueden tener una "
-"duración mayor que la de los datos a los que apuntan. Sin embargo, el "
-"verificador de préstamos no verifica la transformación del código de las "
-"funciones y los bloques asíncronos."
+"Normalmente, el verificador de préstamos de Rust evitaría que se movieran los "
+"datos de autorreferencia, ya que las referencias no pueden tener una duración "
+"mayor que la de los datos a los que apuntan. Sin embargo, el verificador de "
+"préstamos no verifica la transformación del código de las funciones y los "
+"bloques asíncronos."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
-"`Pin` is a wrapper around a reference. An object cannot be moved from its "
-"place using a pinned pointer. However, it can still be moved through an "
-"unpinned pointer."
+"`Pin` is a wrapper around a reference. An object cannot be moved from its place "
+"using a pinned pointer. However, it can still be moved through an unpinned "
+"pointer."
msgstr ""
-"`Pin` es un envoltorio que rodea a una referencia. No se puede mover un "
-"objeto desde su lugar mediante un puntero fijado. Sin embargo, sí se puede "
-"mover mediante un puntero no fijado."
+"`Pin` es un envoltorio que rodea a una referencia. No se puede mover un objeto "
+"desde su lugar mediante un puntero fijado. Sin embargo, sí se puede mover "
+"mediante un puntero no fijado."
#: src/concurrency/async-pitfalls/pin.md
msgid ""
-"The `poll` method of the `Future` trait uses `Pin<&mut Self>` instead of "
-"`&mut Self` to refer to the instance. That's why it can only be called on a "
-"pinned pointer."
+"The `poll` method of the `Future` trait uses `Pin<&mut Self>` instead of `&mut "
+"Self` to refer to the instance. That's why it can only be called on a pinned "
+"pointer."
msgstr ""
-"El método `poll` del trait `Future` utiliza `Pin<&mut Self>` en lugar de "
-"`&mut Self` para hacer referencia a la instancia. Por eso solo se puede "
-"llamar desde un puntero fijado."
+"El método `poll` del trait `Future` utiliza `Pin<&mut Self>` en lugar de `&mut "
+"Self` para hacer referencia a la instancia. Por eso solo se puede llamar desde "
+"un puntero fijado."
#: src/concurrency/async-pitfalls/async-traits.md
msgid ""
-"Async methods in traits are were stabilized only recently, in the 1.75 "
-"release. This required support for using return-position `impl Trait` (RPIT) "
-"in traits, as the desugaring for `async fn` includes `-> impl Future`."
+"Async methods in traits are were stabilized only recently, in the 1.75 release. "
+"This required support for using return-position `impl Trait` (RPIT) in traits, "
+"as the desugaring for `async fn` includes `-> impl Future`."
msgstr ""
#: src/concurrency/async-pitfalls/async-traits.md
@@ -22636,14 +22232,14 @@ msgstr ""
#: src/concurrency/async-pitfalls/async-traits.md
msgid ""
-"Return-position impl Trait captures all in-scope lifetimes (so some patterns "
-"of borrowing cannot be expressed)"
+"Return-position impl Trait captures all in-scope lifetimes (so some patterns of "
+"borrowing cannot be expressed)"
msgstr ""
#: src/concurrency/async-pitfalls/async-traits.md
msgid ""
-"Traits whose methods use return-position `impl trait` or `async` are not "
-"`dyn` compatible."
+"Traits whose methods use return-position `impl trait` or `async` are not `dyn` "
+"compatible."
msgstr ""
#: src/concurrency/async-pitfalls/async-traits.md
@@ -22669,28 +22265,27 @@ msgid ""
"`async_trait` is easy to use, but note that it's using heap allocations to "
"achieve this. This heap allocation has performance overhead."
msgstr ""
-"`async_trait` es fácil de usar, pero ten en cuenta que utiliza asignaciones "
-"de montículos para conseguirlo. Esta asignación de montículo tiene una "
-"sobrecarga de rendimiento."
+"`async_trait` es fácil de usar, pero ten en cuenta que utiliza asignaciones de "
+"montículos para conseguirlo. Esta asignación de montículo tiene una sobrecarga "
+"de rendimiento."
#: src/concurrency/async-pitfalls/async-traits.md
msgid ""
-"The challenges in language support for `async trait` are deep Rust and "
-"probably not worth describing in-depth. Niko Matsakis did a good job of "
-"explaining them in [this post](https://smallcultfollowing.com/babysteps/"
-"blog/2019/10/26/async-fn-in-traits-are-hard/) if you are interested in "
-"digging deeper."
+"The challenges in language support for `async trait` are deep Rust and probably "
+"not worth describing in-depth. Niko Matsakis did a good job of explaining them "
+"in [this post](https://smallcultfollowing.com/babysteps/blog/2019/10/26/async-"
+"fn-in-traits-are-hard/) if you are interested in digging deeper."
msgstr ""
"Los problemas de compatibilidad del lenguaje con `async trait` son muy "
"complejos y no vale la pena describirlos en profundidad. Niko Matsakis lo "
-"explica muy bien en [esta publicación](https://smallcultfollowing.com/"
-"babysteps/blog/2019/10/26/async-fn-in-traits-are-hard/), por si te interesa "
-"investigar más a fondo."
+"explica muy bien en [esta publicación](https://smallcultfollowing.com/babysteps/"
+"blog/2019/10/26/async-fn-in-traits-are-hard/), por si te interesa investigar "
+"más a fondo."
#: src/concurrency/async-pitfalls/async-traits.md
msgid ""
-"Try creating a new sleeper struct that will sleep for a random amount of "
-"time and adding it to the Vec."
+"Try creating a new sleeper struct that will sleep for a random amount of time "
+"and adding it to the Vec."
msgstr ""
"Prueba a crear una estructura que entre en suspensión durante un periodo "
"aleatorio y añádela a Vec."
@@ -22698,15 +22293,15 @@ msgstr ""
#: src/concurrency/async-pitfalls/cancellation.md
msgid ""
"Dropping a future implies it can never be polled again. This is called "
-"_cancellation_ and it can occur at any `await` point. Care is needed to "
-"ensure the system works correctly even when futures are cancelled. For "
-"example, it shouldn't deadlock or lose data."
-msgstr ""
-"Si eliminas un futuro, no se podrá volver a sondear. Este fenómeno se "
-"denomina _cancelación_ y puede producirse en cualquier momento de `await`. "
-"Hay que tener cuidado para asegurar que el sistema funcione correctamente, "
-"incluso cuando se cancelen los futuros. Por ejemplo, no debería sufrir "
-"interbloqueos o perder datos."
+"_cancellation_ and it can occur at any `await` point. Care is needed to ensure "
+"the system works correctly even when futures are cancelled. For example, it "
+"shouldn't deadlock or lose data."
+msgstr ""
+"Si eliminas un futuro, no se podrá volver a sondear. Este fenómeno se denomina "
+"_cancelación_ y puede producirse en cualquier momento de `await`. Hay que tener "
+"cuidado para asegurar que el sistema funcione correctamente, incluso cuando se "
+"cancelen los futuros. Por ejemplo, no debería sufrir interbloqueos o perder "
+"datos."
#: src/concurrency/async-pitfalls/cancellation.md
#, fuzzy
@@ -22731,11 +22326,11 @@ msgstr ""
#: src/concurrency/async-pitfalls/cancellation.md
msgid ""
-"Unlike `panic` and `?`, cancellation is part of normal control flow (vs "
-"error-handling)."
+"Unlike `panic` and `?`, cancellation is part of normal control flow (vs error-"
+"handling)."
msgstr ""
-"A diferencia de `panic` y `?`, la cancelación forma parte del flujo de "
-"control normal (en contraposición a la gestión de errores)."
+"A diferencia de `panic` y `?`, la cancelación forma parte del flujo de control "
+"normal (en contraposición a la gestión de errores)."
#: src/concurrency/async-pitfalls/cancellation.md
msgid "The example loses parts of the string."
@@ -22743,15 +22338,12 @@ msgstr "En el ejemplo se pierden partes de la cadena."
#: src/concurrency/async-pitfalls/cancellation.md
msgid ""
-"Whenever the `tick()` branch finishes first, `next()` and its `buf` are "
-"dropped."
-msgstr ""
-"Cuando la rama `tick()` termina primero, se eliminan `next()` y su `buf`."
+"Whenever the `tick()` branch finishes first, `next()` and its `buf` are dropped."
+msgstr "Cuando la rama `tick()` termina primero, se eliminan `next()` y su `buf`."
#: src/concurrency/async-pitfalls/cancellation.md
msgid ""
-"`LinesReader` can be made cancellation-safe by making `buf` part of the "
-"struct:"
+"`LinesReader` can be made cancellation-safe by making `buf` part of the struct:"
msgstr ""
"`LinesReader` se puede configurar para que no se cancele marcando `buf` como "
"parte del _struct_:"
@@ -22763,22 +22355,22 @@ msgstr "// prefijo buf y bytes con self.\n"
#: src/concurrency/async-pitfalls/cancellation.md
msgid ""
"[`Interval::tick`](https://docs.rs/tokio/latest/tokio/time/struct.Interval."
-"html#method.tick) is cancellation-safe because it keeps track of whether a "
-"tick has been 'delivered'."
+"html#method.tick) is cancellation-safe because it keeps track of whether a tick "
+"has been 'delivered'."
msgstr ""
"[`Interval::tick`](https://docs.rs/tokio/latest/tokio/time/struct.Interval."
-"html#method.tick) es a prueba de cancelaciones, ya que registra si una marca "
-"se ha 'entregado'."
+"html#method.tick) es a prueba de cancelaciones, ya que registra si una marca se "
+"ha 'entregado'."
#: src/concurrency/async-pitfalls/cancellation.md
msgid ""
-"[`AsyncReadExt::read`](https://docs.rs/tokio/latest/tokio/io/trait."
-"AsyncReadExt.html#method.read) is cancellation-safe because it either "
-"returns or doesn't read data."
+"[`AsyncReadExt::read`](https://docs.rs/tokio/latest/tokio/io/trait.AsyncReadExt."
+"html#method.read) is cancellation-safe because it either returns or doesn't "
+"read data."
msgstr ""
-"[`AsyncReadExt::read`](https://docs.rs/tokio/latest/tokio/io/trait."
-"AsyncReadExt.html#method.read) es a prueba de cancelaciones porque o "
-"devuelve los datos o no los lee."
+"[`AsyncReadExt::read`](https://docs.rs/tokio/latest/tokio/io/trait.AsyncReadExt."
+"html#method.read) es a prueba de cancelaciones porque o devuelve los datos o no "
+"los lee."
#: src/concurrency/async-pitfalls/cancellation.md
msgid ""
@@ -22788,8 +22380,8 @@ msgid ""
msgstr ""
"[`AsyncBufReadExt::read_line`](https://docs.rs/tokio/latest/tokio/io/trait."
"AsyncBufReadExt.html#method.read_line) es similar al ejemplo y _no está_ "
-"configurado a prueba de cancelaciones. Consulta su documentación para "
-"obtener información detallada y alternativas."
+"configurado a prueba de cancelaciones. Consulta su documentación para obtener "
+"información detallada y alternativas."
#: src/concurrency/async-exercises/dining-philosophers.md
#: src/concurrency/async-exercises/solutions.md
@@ -22802,19 +22394,19 @@ msgid ""
"See [dining philosophers](concurrency/sync-exercises/dining-philosophers.md) "
"for a description of the problem."
msgstr ""
-"Consulta la descripción del problema en la sección sobre [la cena de "
-"filósofos](dining-philosophers.md)."
+"Consulta la descripción del problema en la sección sobre [la cena de filósofos]"
+"(dining-philosophers.md)."
#: src/concurrency/async-exercises/dining-philosophers.md
msgid ""
"As before, you will need a local [Cargo installation](../../cargo/running-"
-"locally.md) for this exercise. Copy the code below to a file called `src/"
-"main.rs`, fill out the blanks, and test that `cargo run` does not deadlock:"
+"locally.md) for this exercise. Copy the code below to a file called `src/main."
+"rs`, fill out the blanks, and test that `cargo run` does not deadlock:"
msgstr ""
"Como antes, necesitarás una [instalación local de Cargo](../../cargo/running-"
"locally.md) para realizar el ejercicio. Copia el fragmento de código que "
-"aparece más abajo en un archivo denominado `src/main.rs`, rellena los "
-"espacios en blanco y comprueba que `cargo run` no presenta interbloqueos:"
+"aparece más abajo en un archivo denominado `src/main.rs`, rellena los espacios "
+"en blanco y comprueba que `cargo run` no presenta interbloqueos:"
#: src/concurrency/async-exercises/dining-philosophers.md
#: src/concurrency/async-exercises/solutions.md
@@ -22828,11 +22420,11 @@ msgstr "// Hazles pensar y comer\n"
#: src/concurrency/async-exercises/dining-philosophers.md
msgid ""
-"Since this time you are using Async Rust, you'll need a `tokio` dependency. "
-"You can use the following `Cargo.toml`:"
+"Since this time you are using Async Rust, you'll need a `tokio` dependency. You "
+"can use the following `Cargo.toml`:"
msgstr ""
-"Dado que esta vez usas async, necesitarás una dependencia `tokio`. Puedes "
-"usar el siguiente `Cargo.toml`:"
+"Dado que esta vez usas async, necesitarás una dependencia `tokio`. Puedes usar "
+"el siguiente `Cargo.toml`:"
#: src/concurrency/async-exercises/dining-philosophers.md
msgid ""
@@ -22860,8 +22452,8 @@ msgstr ""
#: src/concurrency/async-exercises/dining-philosophers.md
msgid ""
-"Also note that this time you have to use the `Mutex` and the `mpsc` module "
-"from the `tokio` crate."
+"Also note that this time you have to use the `Mutex` and the `mpsc` module from "
+"the `tokio` crate."
msgstr ""
"Además, ten en cuenta que esta vez tienes que utilizar `Mutex` y el módulo "
"`mpsc` del crate `tokio`."
@@ -22873,28 +22465,26 @@ msgstr "¿Puedes conseguir que tu implementación tenga un solo hilo? "
#: src/concurrency/async-exercises/chat-app.md
msgid ""
"In this exercise, we want to use our new knowledge to implement a broadcast "
-"chat application. We have a chat server that the clients connect to and "
-"publish their messages. The client reads user messages from the standard "
-"input, and sends them to the server. The chat server broadcasts each message "
-"that it receives to all the clients."
+"chat application. We have a chat server that the clients connect to and publish "
+"their messages. The client reads user messages from the standard input, and "
+"sends them to the server. The chat server broadcasts each message that it "
+"receives to all the clients."
msgstr ""
-"En este ejercicio, queremos usar nuestros nuevos conocimientos para "
-"implementar una aplicación de chat de difusión. Disponemos de un servidor de "
-"chat al que los clientes se conectan y publican sus mensajes. El cliente lee "
-"los mensajes de usuario de la entrada estándar y los envía al servidor. El "
-"servidor del chat transmite cada mensaje que recibe a todos los clientes."
+"En este ejercicio, queremos usar nuestros nuevos conocimientos para implementar "
+"una aplicación de chat de difusión. Disponemos de un servidor de chat al que "
+"los clientes se conectan y publican sus mensajes. El cliente lee los mensajes "
+"de usuario de la entrada estándar y los envía al servidor. El servidor del chat "
+"transmite cada mensaje que recibe a todos los clientes."
#: src/concurrency/async-exercises/chat-app.md
msgid ""
-"For this, we use [a broadcast channel](https://docs.rs/tokio/latest/tokio/"
-"sync/broadcast/fn.channel.html) on the server, and [`tokio_websockets`]"
-"(https://docs.rs/tokio-websockets/) for the communication between the client "
-"and the server."
+"For this, we use [a broadcast channel](https://docs.rs/tokio/latest/tokio/sync/"
+"broadcast/fn.channel.html) on the server, and [`tokio_websockets`](https://docs."
+"rs/tokio-websockets/) for the communication between the client and the server."
msgstr ""
-"Para ello, usaremos \\[un canal en abierto](https://docs.rs/tokio/latest/"
-"tokio/sync/broadcast/fn.channel.html) en el servidor y [`tokio_websockets`]"
-"(https://docs.rs/tokio-websockets/) para la comunicación entre el cliente y "
-"el servidor."
+"Para ello, usaremos \\[un canal en abierto](https://docs.rs/tokio/latest/tokio/"
+"sync/broadcast/fn.channel.html) en el servidor y [`tokio_websockets`](https://"
+"docs.rs/tokio-websockets/) para la comunicación entre el cliente y el servidor."
#: src/concurrency/async-exercises/chat-app.md
msgid "Create a new Cargo project and add the following dependencies:"
@@ -22917,8 +22507,8 @@ msgid ""
"futures-util = { version = \"0.3.30\", features = [\"sink\"] }\n"
"http = \"1.1.0\"\n"
"tokio = { version = \"1.38.0\", features = [\"full\"] }\n"
-"tokio-websockets = { version = \"0.8.3\", features = [\"client\", "
-"\"fastrand\", \"server\", \"sha1_smol\"] }\n"
+"tokio-websockets = { version = \"0.8.3\", features = [\"client\", \"fastrand\", "
+"\"server\", \"sha1_smol\"] }\n"
"```"
msgstr ""
"```toml\n"
@@ -22931,8 +22521,8 @@ msgstr ""
"futures-util = { version = \"0.3.30\", features = [\"sink\"] }\n"
"http = \"1.0.0\"\n"
"tokio = { version = \"1.28.1\", features = [\"full\"] }\n"
-"tokio-websockets = { version = \"0.5.1\", features = [\"client\", "
-"\"fastrand\", \"server\", \"sha1_smol\"] }\n"
+"tokio-websockets = { version = \"0.5.1\", features = [\"client\", \"fastrand\", "
+"\"server\", \"sha1_smol\"] }\n"
"```"
#: src/concurrency/async-exercises/chat-app.md
@@ -22942,12 +22532,11 @@ msgstr "Las APIs necesarias"
#: src/concurrency/async-exercises/chat-app.md
msgid ""
"You are going to need the following functions from `tokio` and "
-"[`tokio_websockets`](https://docs.rs/tokio-websockets/). Spend a few minutes "
-"to familiarize yourself with the API."
+"[`tokio_websockets`](https://docs.rs/tokio-websockets/). Spend a few minutes to "
+"familiarize yourself with the API."
msgstr ""
-"Necesitarás las siguientes funciones de `tokio` y [`tokio_websockets`]"
-"(https://docs.rs/tokio-websockets/). Dedica unos minutos a familiarizarte "
-"con la API. "
+"Necesitarás las siguientes funciones de `tokio` y [`tokio_websockets`](https://"
+"docs.rs/tokio-websockets/). Dedica unos minutos a familiarizarte con la API. "
#: src/concurrency/async-exercises/chat-app.md
msgid ""
@@ -22956,18 +22545,18 @@ msgid ""
"asynchronously reading messages from a Websocket Stream."
msgstr ""
"[StreamExt::next()](https://docs.rs/futures-util/0.3.28/futures_util/stream/"
-"trait.StreamExt.html#method.next) implementado por `WebSocketStream`: "
-"permite enviar mensajes de forma asíncrona a través de un flujo Websocket."
+"trait.StreamExt.html#method.next) implementado por `WebSocketStream`: permite "
+"enviar mensajes de forma asíncrona a través de un flujo Websocket."
#: src/concurrency/async-exercises/chat-app.md
msgid ""
-"[SinkExt::send()](https://docs.rs/futures-util/0.3.28/futures_util/sink/"
-"trait.SinkExt.html#method.send) implemented by `WebSocketStream`: for "
-"asynchronously sending messages on a Websocket Stream."
+"[SinkExt::send()](https://docs.rs/futures-util/0.3.28/futures_util/sink/trait."
+"SinkExt.html#method.send) implemented by `WebSocketStream`: for asynchronously "
+"sending messages on a Websocket Stream."
msgstr ""
-"[SinkExt::send()](https://docs.rs/futures-util/0.3.28/futures_util/sink/"
-"trait.SinkExt.html#method.send) implementado por `WebsocketStream`: permite "
-"enviar mensajes de forma asíncrona a través de un flujo Websocket."
+"[SinkExt::send()](https://docs.rs/futures-util/0.3.28/futures_util/sink/trait."
+"SinkExt.html#method.send) implementado por `WebsocketStream`: permite enviar "
+"mensajes de forma asíncrona a través de un flujo Websocket."
#: src/concurrency/async-exercises/chat-app.md
msgid ""
@@ -22976,16 +22565,16 @@ msgid ""
"standard input."
msgstr ""
"[Lines::next_line()](https://docs.rs/tokio/latest/tokio/io/struct.Lines."
-"html#method.next_line): para la lectura asíncrona de mensajes de usuario de "
-"la entrada estándar."
+"html#method.next_line): para la lectura asíncrona de mensajes de usuario de la "
+"entrada estándar."
#: src/concurrency/async-exercises/chat-app.md
msgid ""
-"[Sender::subscribe()](https://docs.rs/tokio/latest/tokio/sync/broadcast/"
-"struct.Sender.html#method.subscribe): for subscribing to a broadcast channel."
+"[Sender::subscribe()](https://docs.rs/tokio/latest/tokio/sync/broadcast/struct."
+"Sender.html#method.subscribe): for subscribing to a broadcast channel."
msgstr ""
-"[Sender::subscribe()](https://docs.rs/tokio/latest/tokio/sync/broadcast/"
-"struct.Sender.html#method.subscribe): para suscribirse a un canal en abierto."
+"[Sender::subscribe()](https://docs.rs/tokio/latest/tokio/sync/broadcast/struct."
+"Sender.html#method.subscribe): para suscribirse a un canal en abierto."
#: src/concurrency/async-exercises/chat-app.md
msgid "Two binaries"
@@ -22996,28 +22585,28 @@ msgid ""
"Normally in a Cargo project, you can have only one binary, and one `src/main."
"rs` file. In this project, we need two binaries. One for the client, and one "
"for the server. You could potentially make them two separate Cargo projects, "
-"but we are going to put them in a single Cargo project with two binaries. "
-"For this to work, the client and the server code should go under `src/bin` "
-"(see the [documentation](https://doc.rust-lang.org/cargo/reference/cargo-"
-"targets.html#binaries))."
-msgstr ""
-"Normalmente, en un proyecto de Cargo, solo puedes tener un archivo binario y "
-"un archivo `src/main.rs`. En este proyecto, se necesitan dos binarios, uno "
-"para el cliente y otro para el servidor. Puedes convertirlos en dos "
-"proyectos de Cargo independientes, pero los incluiremos en un solo proyecto "
-"de Cargo con dos binarios. Para que funcione, el código del cliente y del "
-"servidor deben aparecer en `src/bin` (consulta la [documentación](https://"
-"doc.rust-lang.org/cargo/reference/cargo-targets.html#binaries)). "
+"but we are going to put them in a single Cargo project with two binaries. For "
+"this to work, the client and the server code should go under `src/bin` (see the "
+"[documentation](https://doc.rust-lang.org/cargo/reference/cargo-targets."
+"html#binaries))."
+msgstr ""
+"Normalmente, en un proyecto de Cargo, solo puedes tener un archivo binario y un "
+"archivo `src/main.rs`. En este proyecto, se necesitan dos binarios, uno para el "
+"cliente y otro para el servidor. Puedes convertirlos en dos proyectos de Cargo "
+"independientes, pero los incluiremos en un solo proyecto de Cargo con dos "
+"binarios. Para que funcione, el código del cliente y del servidor deben "
+"aparecer en `src/bin` (consulta la [documentación](https://doc.rust-lang.org/"
+"cargo/reference/cargo-targets.html#binaries)). "
#: src/concurrency/async-exercises/chat-app.md
msgid ""
-"Copy the following server and client code into `src/bin/server.rs` and `src/"
-"bin/client.rs`, respectively. Your task is to complete these files as "
-"described below."
+"Copy the following server and client code into `src/bin/server.rs` and `src/bin/"
+"client.rs`, respectively. Your task is to complete these files as described "
+"below."
msgstr ""
-"Copia el fragmento de código del servidor y del cliente que aparecen más "
-"abajo en `src/bin/server.rs` y `src/bin/client.rs`, respectivamente. Tu "
-"tarea es completar estos archivos como se describe a continuación. "
+"Copia el fragmento de código del servidor y del cliente que aparecen más abajo "
+"en `src/bin/server.rs` y `src/bin/client.rs`, respectivamente. Tu tarea es "
+"completar estos archivos como se describe a continuación. "
#: src/concurrency/async-exercises/chat-app.md
#: src/concurrency/async-exercises/solutions.md
@@ -23083,9 +22672,9 @@ msgid ""
"continuous loop. One task receives messages from the client and broadcasts "
"them. The other sends messages received by the server to the client."
msgstr ""
-"Sugerencia: usa `tokio::select!` para realizar dos tareas simultáneamente en "
-"un bucle continuo. Una tarea recibe mensajes del cliente y los transmite. La "
-"otra envía los mensajes que recibe el servidor al cliente."
+"Sugerencia: usa `tokio::select!` para realizar dos tareas simultáneamente en un "
+"bucle continuo. Una tarea recibe mensajes del cliente y los transmite. La otra "
+"envía los mensajes que recibe el servidor al cliente."
#: src/concurrency/async-exercises/chat-app.md
msgid "Complete the main function in `src/bin/client.rs`."
@@ -23094,22 +22683,22 @@ msgstr "Completa la función principal en `src/bin/client.rs`."
#: src/concurrency/async-exercises/chat-app.md
msgid ""
"Hint: As before, use `tokio::select!` in a continuous loop for concurrently "
-"performing two tasks: (1) reading user messages from standard input and "
-"sending them to the server, and (2) receiving messages from the server, and "
-"displaying them for the user."
+"performing two tasks: (1) reading user messages from standard input and sending "
+"them to the server, and (2) receiving messages from the server, and displaying "
+"them for the user."
msgstr ""
-"Sugerencia: al igual que antes, usa `tokio::select!` en un bucle continuo "
-"para realizar dos tareas simultáneamente: (1) leer los mensajes del usuario "
-"desde la entrada estándar y enviarlos al servidor, y (2) recibir mensajes "
-"del servidor y mostrárselos al usuario."
+"Sugerencia: al igual que antes, usa `tokio::select!` en un bucle continuo para "
+"realizar dos tareas simultáneamente: (1) leer los mensajes del usuario desde la "
+"entrada estándar y enviarlos al servidor, y (2) recibir mensajes del servidor y "
+"mostrárselos al usuario."
#: src/concurrency/async-exercises/chat-app.md
msgid ""
"Optional: Once you are done, change the code to broadcast messages to all "
"clients, but the sender of the message."
msgstr ""
-"Opcional: cuando termines, cambia el código para difundir mensajes a todos "
-"los clientes, excepto al remitente."
+"Opcional: cuando termines, cambia el código para difundir mensajes a todos los "
+"clientes, excepto al remitente."
#: src/concurrency/async-exercises/solutions.md
msgid ""
@@ -23130,8 +22719,8 @@ msgstr "// Los bloqueos se eliminan aquí\n"
#: src/concurrency/async-exercises/solutions.md
msgid "// tx is dropped here, so we don't need to explicitly drop it later\n"
msgstr ""
-"// tx se elimina aquí, por lo que no tenemos que eliminarlo explícitamente "
-"más tarde.\n"
+"// tx se elimina aquí, por lo que no tenemos que eliminarlo explícitamente más "
+"tarde.\n"
#: src/concurrency/async-exercises/solutions.md
msgid "\"Here is a thought: {thought}\""
@@ -23148,10 +22737,10 @@ msgid ""
" // messages from `ws_stream` and broadcasting them, and (2) receiving\n"
" // messages on `bcast_rx` and sending them to the client.\n"
msgstr ""
-"Sugerencia: al igual que antes, usa `tokio::select!` en un bucle continuo "
-"para realizar dos tareas simultáneamente: (1) leer los mensajes del usuario "
-"desde la entrada estándar y enviarlos al servidor, y (2) recibir mensajes "
-"del servidor y mostrárselos al usuario."
+"Sugerencia: al igual que antes, usa `tokio::select!` en un bucle continuo para "
+"realizar dos tareas simultáneamente: (1) leer los mensajes del usuario desde la "
+"entrada estándar y enviarlos al servidor, y (2) recibir mensajes del servidor y "
+"mostrárselos al usuario."
#: src/concurrency/async-exercises/solutions.md
msgid "\"From client {addr:?} {text:?}\""
@@ -23167,33 +22756,33 @@ msgstr "\"Del servidor: {}\""
#: src/thanks.md
msgid ""
-"_Thank you for taking Comprehensive Rust 🦀!_ We hope you enjoyed it and "
-"that it was useful."
+"_Thank you for taking Comprehensive Rust 🦀!_ We hope you enjoyed it and that "
+"it was useful."
msgstr ""
"_Gracias por realizar el curso Comprehensive Rust 🦀._ Esperamos que te haya "
"gustado y que te haya resultado útil."
#: src/thanks.md
msgid ""
-"We've had a lot of fun putting the course together. The course is not "
-"perfect, so if you spotted any mistakes or have ideas for improvements, "
-"please get in [contact with us on GitHub](https://github.com/google/"
-"comprehensive-rust/discussions). We would love to hear from you."
+"We've had a lot of fun putting the course together. The course is not perfect, "
+"so if you spotted any mistakes or have ideas for improvements, please get in "
+"[contact with us on GitHub](https://github.com/google/comprehensive-rust/"
+"discussions). We would love to hear from you."
msgstr ""
-"Nos lo hemos pasado muy bien preparando el curso. Sabemos que no es "
-"perfecto, así que si has detectado algún error o tienes ideas para "
-"mejorarlo, [ponte en contacto con nosotros en GitHub](https://github.com/"
-"google/comprehensive-rust/discussions). Nos encantaría saber tu opinión."
+"Nos lo hemos pasado muy bien preparando el curso. Sabemos que no es perfecto, "
+"así que si has detectado algún error o tienes ideas para mejorarlo, [ponte en "
+"contacto con nosotros en GitHub](https://github.com/google/comprehensive-rust/"
+"discussions). Nos encantaría saber tu opinión."
#: src/glossary.md
msgid ""
-"The following is a glossary which aims to give a short definition of many "
-"Rust terms. For translations, this also serves to connect the term back to "
-"the English original."
+"The following is a glossary which aims to give a short definition of many Rust "
+"terms. For translations, this also serves to connect the term back to the "
+"English original."
msgstr ""
"A continuación, se incluye un glosario con el objetivo de ofrecer una breve "
-"definición de algunos términos de Rust. En el caso de las traducciones, "
-"también sirve para relacionar el término con el original en inglés."
+"definición de algunos términos de Rust. En el caso de las traducciones, también "
+"sirve para relacionar el término con el original en inglés."
#. Please add the English term in italic after your translated term. Also, please keep the hard line breaks to ensure a nice formatting.
#: src/glossary.md
@@ -23220,8 +22809,8 @@ msgid ""
"system. See [Bare-metal Rust](bare-metal.md)."
msgstr ""
"Rust Bare-metal: \n"
-"desarrollo de Rust de bajo nivel, a menudo desplegado en un sistema sin "
-"sistema operativo. Consulta [Bare-metal Rust](bare-metal.md)."
+"desarrollo de Rust de bajo nivel, a menudo desplegado en un sistema sin sistema "
+"operativo. Consulta [Bare-metal Rust](bare-metal.md)."
#: src/glossary.md
msgid ""
@@ -23259,12 +22848,11 @@ msgstr ""
#: src/glossary.md
msgid ""
"build: \n"
-"The process of converting source code into executable code or a usable "
-"program."
+"The process of converting source code into executable code or a usable program."
msgstr ""
"compilar \n"
-"El proceso de conversión de código fuente en código ejecutable o en un "
-"programa utilizable."
+"El proceso de conversión de código fuente en código ejecutable o en un programa "
+"utilizable."
#: src/glossary.md
msgid ""
@@ -23280,8 +22868,8 @@ msgid ""
"Used to safely pass messages [between threads](concurrency/channels.md)."
msgstr ""
"Canal: \n"
-"se utiliza para enviar mensajes [entre hilos](concurrency/channels.md) de "
-"forma segura."
+"se utiliza para enviar mensajes [entre hilos](concurrency/channels.md) de forma "
+"segura."
#: src/glossary.md
msgid ""
@@ -23289,8 +22877,7 @@ msgid ""
"The courses here are jointly called Comprehensive Rust 🦀."
msgstr ""
"Comprehensive Rust 🦀: \n"
-"el conjunto de cursos que se describen aquí se denomina Comprehensive Rust "
-"🦀."
+"el conjunto de cursos que se describen aquí se denomina Comprehensive Rust 🦀."
#: src/glossary.md
msgid ""
@@ -23319,8 +22906,8 @@ msgstr ""
#: src/glossary.md
msgid ""
"control flow: \n"
-"The order in which the individual statements or instructions are executed in "
-"a program."
+"The order in which the individual statements or instructions are executed in a "
+"program."
msgstr ""
"Flujo de control: \n"
"el orden en el que se ejecutan las instrucciones individuales en un programa."
@@ -23340,8 +22927,8 @@ msgid ""
"associated tuple or struct."
msgstr ""
"Enumeración: \n"
-"tipo de dato que contiene una de varias constantes con nombre, posiblemente "
-"con una tupla o estructura asociada."
+"tipo de dato que contiene una de varias constantes con nombre, posiblemente con "
+"una tupla o estructura asociada."
#: src/glossary.md
msgid ""
@@ -23367,8 +22954,8 @@ msgid ""
"A task or problem designed to practice and test programming skills."
msgstr ""
"Ejercicio: \n"
-"una tarea o problema diseñado para practicar y poner a prueba las "
-"habilidades de programación."
+"una tarea o problema diseñado para practicar y poner a prueba las habilidades "
+"de programación."
#: src/glossary.md
msgid ""
@@ -23381,18 +22968,18 @@ msgstr ""
#: src/glossary.md
msgid ""
"garbage collector: \n"
-"A mechanism that automatically frees up memory occupied by objects that are "
-"no longer in use."
+"A mechanism that automatically frees up memory occupied by objects that are no "
+"longer in use."
msgstr ""
"Recolector de elementos no utilizados: \n"
-"mecanismo que libera automáticamente la memoria que ocupan objetos que ya no "
-"se utilizan."
+"mecanismo que libera automáticamente la memoria que ocupan objetos que ya no se "
+"utilizan."
#: src/glossary.md
msgid ""
"generics: \n"
-"A feature that allows writing code with placeholders for types, enabling "
-"code reuse with different data types."
+"A feature that allows writing code with placeholders for types, enabling code "
+"reuse with different data types."
msgstr ""
"Genéricos: \n"
"una función que permite escribir código con marcadores de posición para los "
@@ -23438,15 +23025,15 @@ msgstr ""
#: src/glossary.md
msgid ""
"macro: \n"
-"Rust macros can be recognized by a `!` in the name. Macros are used when "
-"normal functions are not enough. A typical example is `format!`, which takes "
-"a variable number of arguments, which isn't supported by Rust functions."
+"Rust macros can be recognized by a `!` in the name. Macros are used when normal "
+"functions are not enough. A typical example is `format!`, which takes a "
+"variable number of arguments, which isn't supported by Rust functions."
msgstr ""
"Macro: \n"
-"las macros de Rust se pueden reconocer por llevar `!` en el nombre. Las "
-"macros se utilizan cuando las funciones normales no son suficientes. Un "
-"ejemplo típico es `format!`, que utiliza un número variable de argumentos "
-"que no es compatible con las funciones de Rust."
+"las macros de Rust se pueden reconocer por llevar `!` en el nombre. Las macros "
+"se utilizan cuando las funciones normales no son suficientes. Un ejemplo típico "
+"es `format!`, que utiliza un número variable de argumentos que no es compatible "
+"con las funciones de Rust."
#: src/glossary.md
msgid ""
@@ -23459,8 +23046,8 @@ msgstr ""
#: src/glossary.md
msgid ""
"match: \n"
-"A control flow construct in Rust that allows for pattern matching on the "
-"value of an expression."
+"A control flow construct in Rust that allows for pattern matching on the value "
+"of an expression."
msgstr ""
"Coincidencia: \n"
"construcción de flujo de control en Rust que permite la coincidencia de "
@@ -23469,12 +23056,12 @@ msgstr ""
#: src/glossary.md
msgid ""
"memory leak: \n"
-"A situation where a program fails to release memory that is no longer "
-"needed, leading to a gradual increase in memory usage."
+"A situation where a program fails to release memory that is no longer needed, "
+"leading to a gradual increase in memory usage."
msgstr ""
"Pérdida de memoria: \n"
-"situación en la que un programa no libera memoria que ya no se necesita, lo "
-"que provoca un aumento gradual en el uso de memoria."
+"situación en la que un programa no libera memoria que ya no se necesita, lo que "
+"provoca un aumento gradual en el uso de memoria."
#: src/glossary.md
msgid ""
@@ -23487,12 +23074,12 @@ msgstr ""
#: src/glossary.md
msgid ""
"module: \n"
-"A namespace that contains definitions, such as functions, types, or traits, "
-"to organize code in Rust."
+"A namespace that contains definitions, such as functions, types, or traits, to "
+"organize code in Rust."
msgstr ""
"Módulo: \n"
-"espacio de nombres que contiene definiciones, como funciones, tipos o "
-"traits, para organizar el código en Rust."
+"espacio de nombres que contiene definiciones, como funciones, tipos o traits, "
+"para organizar el código en Rust."
#: src/glossary.md
msgid ""
@@ -23519,14 +23106,14 @@ msgid ""
"managing the memory associated with a value."
msgstr ""
"Propiedad: \n"
-"el concepto de Rust que define qué parte del código es responsable de "
-"gestionar la memoria asociada a un valor."
+"el concepto de Rust que define qué parte del código es responsable de gestionar "
+"la memoria asociada a un valor."
#: src/glossary.md
msgid ""
"panic: \n"
-"An unrecoverable error condition in Rust that results in the termination of "
-"the program."
+"An unrecoverable error condition in Rust that results in the termination of the "
+"program."
msgstr ""
"Pánico: \n"
"condición de error irrecuperable en Rust que provoca la finalización del "
@@ -23543,12 +23130,12 @@ msgstr ""
#: src/glossary.md
msgid ""
"pattern: \n"
-"A combination of values, literals, or structures that can be matched against "
-"an expression in Rust."
+"A combination of values, literals, or structures that can be matched against an "
+"expression in Rust."
msgstr ""
"Patrón: \n"
-"una combinación de valores, literales o estructuras que se pueden comparar "
-"con una expresión de Rust."
+"una combinación de valores, literales o estructuras que se pueden comparar con "
+"una expresión de Rust."
#: src/glossary.md
msgid ""
@@ -23562,8 +23149,8 @@ msgstr ""
#: src/glossary.md
msgid ""
"program: \n"
-"A set of instructions that a computer can execute to perform a specific task "
-"or solve a particular problem."
+"A set of instructions that a computer can execute to perform a specific task or "
+"solve a particular problem."
msgstr ""
"Programa: \n"
"conjunto de instrucciones que un ordenador puede ejecutar para llevar a cabo "
@@ -23575,28 +23162,28 @@ msgid ""
"A formal system used to communicate instructions to a computer, such as Rust."
msgstr ""
"Lenguaje de programación: \n"
-"un sistema formal que se utiliza para comunicar instrucciones a un "
-"ordenador, como Rust."
+"un sistema formal que se utiliza para comunicar instrucciones a un ordenador, "
+"como Rust."
#: src/glossary.md
msgid ""
"receiver: \n"
-"The first parameter in a Rust method that represents the instance on which "
-"the method is called."
+"The first parameter in a Rust method that represents the instance on which the "
+"method is called."
msgstr ""
"Receptor: \n"
-"el primer parámetro de un método de Rust que representa la instancia en la "
-"que se llama al método."
+"el primer parámetro de un método de Rust que representa la instancia en la que "
+"se llama al método."
#: src/glossary.md
msgid ""
"reference counting: \n"
-"A memory management technique in which the number of references to an object "
-"is tracked, and the object is deallocated when the count reaches zero."
+"A memory management technique in which the number of references to an object is "
+"tracked, and the object is deallocated when the count reaches zero."
msgstr ""
"Recuento de referencias: \n"
-"técnica de gestión de la memoria en la que se hace un seguimiento del número "
-"de referencias a un objeto y se desasigna cuando el recuento llega a cero."
+"técnica de gestión de la memoria en la que se hace un seguimiento del número de "
+"referencias a un objeto y se desasigna cuando el recuento llega a cero."
#: src/glossary.md
msgid ""
@@ -23604,8 +23191,8 @@ msgid ""
"A keyword in Rust used to indicate the value to be returned from a function."
msgstr ""
"Retorno: \n"
-"una palabra clave de Rust que se utiliza para indicar el valor que se "
-"devuelve de una función."
+"una palabra clave de Rust que se utiliza para indicar el valor que se devuelve "
+"de una función."
#: src/glossary.md
msgid ""
@@ -23645,12 +23232,12 @@ msgstr ""
#: src/glossary.md
msgid ""
"safe: \n"
-"Refers to code that adheres to Rust's ownership and borrowing rules, "
-"preventing memory-related errors."
+"Refers to code that adheres to Rust's ownership and borrowing rules, preventing "
+"memory-related errors."
msgstr ""
"Seguro: \n"
-"se refiere al código que cumple las reglas de propiedad y préstamos de Rust, "
-"lo que evita errores relacionados con la memoria."
+"se refiere al código que cumple las reglas de propiedad y préstamos de Rust, lo "
+"que evita errores relacionados con la memoria."
#: src/glossary.md
msgid ""
@@ -23658,8 +23245,7 @@ msgid ""
"The region of a program where a variable is valid and can be used."
msgstr ""
"Ámbito: \n"
-"la región de un programa en la que una variable es válida y se puede "
-"utilizar."
+"la región de un programa en la que una variable es válida y se puede utilizar."
#: src/glossary.md
msgid ""
@@ -23687,28 +23273,27 @@ msgid ""
"more."
msgstr ""
"String o cadena: \n"
-"tipo de datos que almacena datos de texto. Consulta [`String` vs `str`]"
-"(basic-syntax/string-slices.html) para obtener más información."
+"tipo de datos que almacena datos de texto. Consulta [`String` vs `str`](basic-"
+"syntax/string-slices.html) para obtener más información."
#: src/glossary.md
msgid ""
"struct: \n"
-"A composite data type in Rust that groups together variables of different "
-"types under a single name."
+"A composite data type in Rust that groups together variables of different types "
+"under a single name."
msgstr ""
"Struct: \n"
-"tipo de datos compuestos de Rust que agrupa variables de diferentes tipos "
-"bajo un mismo nombre."
+"tipo de datos compuestos de Rust que agrupa variables de diferentes tipos bajo "
+"un mismo nombre."
#: src/glossary.md
msgid ""
"test: \n"
-"A Rust module containing functions that test the correctness of other "
-"functions."
+"A Rust module containing functions that test the correctness of other functions."
msgstr ""
"Prueba: \n"
-"módulo de Rust que contiene funciones que comprueban que otras funciones "
-"sean correctas."
+"módulo de Rust que contiene funciones que comprueban que otras funciones sean "
+"correctas."
#: src/glossary.md
msgid ""
@@ -23732,8 +23317,8 @@ msgstr ""
#: src/glossary.md
msgid ""
"trait: \n"
-"A collection of methods defined for an unknown type, providing a way to "
-"achieve polymorphism in Rust."
+"A collection of methods defined for an unknown type, providing a way to achieve "
+"polymorphism in Rust."
msgstr ""
"Trait: \n"
"conjunto de métodos definidos para un tipo desconocido que proporciona una "
@@ -23752,19 +23337,18 @@ msgstr ""
#: src/glossary.md
msgid ""
"tuple: \n"
-"A composite data type that contains variables of different types. Tuple "
-"fields have no names, and are accessed by their ordinal numbers."
+"A composite data type that contains variables of different types. Tuple fields "
+"have no names, and are accessed by their ordinal numbers."
msgstr ""
"Tupla: \n"
-"tipo de datos compuestos que contiene variables de diferentes tipos. Los "
-"campos de tuplas no tienen nombre y se accede a ellos por sus números "
-"ordinales."
+"tipo de datos compuestos que contiene variables de diferentes tipos. Los campos "
+"de tuplas no tienen nombre y se accede a ellos por sus números ordinales."
#: src/glossary.md
msgid ""
"type: \n"
-"A classification that specifies which operations can be performed on values "
-"of a particular kind in Rust."
+"A classification that specifies which operations can be performed on values of "
+"a particular kind in Rust."
msgstr ""
"Tipo: \n"
"una clasificación que especifica qué operaciones se pueden llevar a cabo en "
@@ -23773,8 +23357,7 @@ msgstr ""
#: src/glossary.md
msgid ""
"type inference: \n"
-"The ability of the Rust compiler to deduce the type of a variable or "
-"expression."
+"The ability of the Rust compiler to deduce the type of a variable or expression."
msgstr ""
"Inferencia de tipos: \n"
"capacidad del compilador de Rust para deducir el tipo de una variable o "
@@ -23783,12 +23366,12 @@ msgstr ""
#: src/glossary.md
msgid ""
"undefined behavior: \n"
-"Actions or conditions in Rust that have no specified result, often leading "
-"to unpredictable program behavior."
+"Actions or conditions in Rust that have no specified result, often leading to "
+"unpredictable program behavior."
msgstr ""
"Comportamiento indefinido: \n"
-"acciones o condiciones en Rust que no tienen ningún resultado especificado, "
-"lo que a menudo provoca un comportamiento impredecible del programa."
+"acciones o condiciones en Rust que no tienen ningún resultado especificado, lo "
+"que a menudo provoca un comportamiento impredecible del programa."
#: src/glossary.md
msgid ""
@@ -23796,8 +23379,8 @@ msgid ""
"A data type that can hold values of different types but only one at a time."
msgstr ""
"Unión: \n"
-"tipo de datos que puede contener valores de distintos tipos, pero solo de "
-"uno en uno."
+"tipo de datos que puede contener valores de distintos tipos, pero solo de uno "
+"en uno."
#: src/glossary.md
msgid ""
@@ -23825,8 +23408,8 @@ msgid ""
"[Unsafe Rust](unsafe.html)."
msgstr ""
"Inseguro: \n"
-"el subconjunto de Rust que te permite activar un _comportamiento "
-"indefinido_. Consulta [Rust inseguro](unsafe.html)."
+"el subconjunto de Rust que te permite activar un _comportamiento indefinido_. "
+"Consulta [Rust inseguro](unsafe.html)."
#: src/glossary.md
msgid ""
@@ -23834,8 +23417,8 @@ msgid ""
"A memory location storing data. Variables are valid in a _scope_."
msgstr ""
"Variable: \n"
-"una ubicación de la memoria que almacena datos. Las variables son válidas en "
-"un _ámbito_"
+"una ubicación de la memoria que almacena datos. Las variables son válidas en un "
+"_ámbito_"
#: src/other-resources.md
msgid "Other Rust Resources"
@@ -23846,8 +23429,8 @@ msgid ""
"The Rust community has created a wealth of high-quality and free resources "
"online."
msgstr ""
-"La comunidad de Rust ha creado una gran cantidad de recursos online sin "
-"coste y de gran calidad."
+"La comunidad de Rust ha creado una gran cantidad de recursos online sin coste y "
+"de gran calidad."
#: src/other-resources.md
msgid "Official Documentation"
@@ -23856,14 +23439,13 @@ msgstr "Documentación oficial"
#: src/other-resources.md
msgid "The Rust project hosts many resources. These cover Rust in general:"
msgstr ""
-"El proyecto Rust cuenta con muchos recursos. Estos tratan sobre Rust en "
-"general:"
+"El proyecto Rust cuenta con muchos recursos. Estos tratan sobre Rust en general:"
#: src/other-resources.md
msgid ""
-"[The Rust Programming Language](https://doc.rust-lang.org/book/): the "
-"canonical free book about Rust. Covers the language in detail and includes a "
-"few projects for people to build."
+"[The Rust Programming Language](https://doc.rust-lang.org/book/): the canonical "
+"free book about Rust. Covers the language in detail and includes a few projects "
+"for people to build."
msgstr ""
"[The Rust Programming Language](https://doc.rust-lang.org/book/): el libro "
"canónico sobre Rust sin coste alguno. Trata el lenguaje de forma detallada e "
@@ -23871,31 +23453,31 @@ msgstr ""
#: src/other-resources.md
msgid ""
-"[Rust By Example](https://doc.rust-lang.org/rust-by-example/): covers the "
-"Rust syntax via a series of examples which showcase different constructs. "
-"Sometimes includes small exercises where you are asked to expand on the code "
-"in the examples."
+"[Rust By Example](https://doc.rust-lang.org/rust-by-example/): covers the Rust "
+"syntax via a series of examples which showcase different constructs. Sometimes "
+"includes small exercises where you are asked to expand on the code in the "
+"examples."
msgstr ""
"[Rust by Example](https://doc.rust-lang.org/rust-by-example/): trata la "
"sintaxis de Rust a través de una serie de ejemplos que muestran distintas "
-"construcciones. A veces incluye pequeños ejercicios en los que se te pide "
-"que amplíes el código de los ejemplos."
+"construcciones. A veces incluye pequeños ejercicios en los que se te pide que "
+"amplíes el código de los ejemplos."
#: src/other-resources.md
msgid ""
-"[Rust Standard Library](https://doc.rust-lang.org/std/): full documentation "
-"of the standard library for Rust."
+"[Rust Standard Library](https://doc.rust-lang.org/std/): full documentation of "
+"the standard library for Rust."
msgstr ""
-"[La biblioteca estándar de Rust](https://doc.rust-lang.org/std/): "
-"documentación completa de la biblioteca estándar de Rust."
+"[La biblioteca estándar de Rust](https://doc.rust-lang.org/std/): documentación "
+"completa de la biblioteca estándar de Rust."
#: src/other-resources.md
msgid ""
-"[The Rust Reference](https://doc.rust-lang.org/reference/): an incomplete "
-"book which describes the Rust grammar and memory model."
+"[The Rust Reference](https://doc.rust-lang.org/reference/): an incomplete book "
+"which describes the Rust grammar and memory model."
msgstr ""
-"[The Rust Reference](https://doc.rust-lang.org/reference/): un libro "
-"incompleto que describe la gramática y el modelo de memoria de Rust."
+"[The Rust Reference](https://doc.rust-lang.org/reference/): un libro incompleto "
+"que describe la gramática y el modelo de memoria de Rust."
#: src/other-resources.md
msgid "More specialized guides hosted on the official Rust site:"
@@ -23904,12 +23486,11 @@ msgstr "Consulta guías más especializadas en el sitio oficial de Rust:"
#: src/other-resources.md
msgid ""
"[The Rustonomicon](https://doc.rust-lang.org/nomicon/): covers unsafe Rust, "
-"including working with raw pointers and interfacing with other languages "
-"(FFI)."
+"including working with raw pointers and interfacing with other languages (FFI)."
msgstr ""
-"[The Rustonomicon](https://doc.rust-lang.org/nomicon/): trata de Rust "
-"inseguro, incluido cómo trabajar con punteros sin formato e interactuar con "
-"otros lenguajes (FFI)."
+"[The Rustonomicon](https://doc.rust-lang.org/nomicon/): trata de Rust inseguro, "
+"incluido cómo trabajar con punteros sin formato e interactuar con otros "
+"lenguajes (FFI)."
#: src/other-resources.md
msgid ""
@@ -23918,17 +23499,16 @@ msgid ""
"Rust Book was written."
msgstr ""
"[Asynchronous Programming in Rust](https://rust-lang.github.io/async-book/): "
-"incluye el nuevo modelo de programación asíncrona que se introdujo después "
-"de que se escribiera el libro de Rust."
+"incluye el nuevo modelo de programación asíncrona que se introdujo después de "
+"que se escribiera el libro de Rust."
#: src/other-resources.md
msgid ""
-"[The Embedded Rust Book](https://doc.rust-lang.org/stable/embedded-book/): "
-"an introduction to using Rust on embedded devices without an operating "
-"system."
+"[The Embedded Rust Book](https://doc.rust-lang.org/stable/embedded-book/): an "
+"introduction to using Rust on embedded devices without an operating system."
msgstr ""
-"[The Embedded Rust Book](https://doc.rust-lang.org/stable/embedded-book/): "
-"una introducción sobre el uso de Rust en dispositivos integrados sin sistema "
+"[The Embedded Rust Book](https://doc.rust-lang.org/stable/embedded-book/): una "
+"introducción sobre el uso de Rust en dispositivos integrados sin sistema "
"operativo."
#: src/other-resources.md
@@ -23950,8 +23530,8 @@ msgstr ""
#: src/other-resources.md
msgid ""
"[Rust for Embedded C Programmers](https://docs.opentitan.org/doc/ug/"
-"rust_for_c/): covers Rust from the perspective of developers who write "
-"firmware in C."
+"rust_for_c/): covers Rust from the perspective of developers who write firmware "
+"in C."
msgstr ""
"[Rust for Embedded C Programmers](https://docs.opentitan.org/doc/ug/"
"rust_for_c/): explica Rust desde la perspectiva de los desarrolladores que "
@@ -23959,13 +23539,13 @@ msgstr ""
#: src/other-resources.md
msgid ""
-"[Rust for professionals](https://overexact.com/rust-for-professionals/): "
-"covers the syntax of Rust using side-by-side comparisons with other "
-"languages such as C, C++, Java, JavaScript, and Python."
+"[Rust for professionals](https://overexact.com/rust-for-professionals/): covers "
+"the syntax of Rust using side-by-side comparisons with other languages such as "
+"C, C++, Java, JavaScript, and Python."
msgstr ""
-"[Rust for professonals](https://overexact.com/rust-for-professionals/): "
-"trata la sintaxis de Rust comparándola con otros lenguajes, como C, C++, "
-"Java, JavaScript y Python."
+"[Rust for professonals](https://overexact.com/rust-for-professionals/): trata "
+"la sintaxis de Rust comparándola con otros lenguajes, como C, C++, Java, "
+"JavaScript y Python."
#: src/other-resources.md
msgid ""
@@ -23977,54 +23557,54 @@ msgstr ""
#: src/other-resources.md
msgid ""
-"[Ferrous Teaching Material](https://ferrous-systems.github.io/teaching-"
-"material/index.html): a series of small presentations covering both basic "
-"and advanced part of the Rust language. Other topics such as WebAssembly, "
-"and async/await are also covered."
+"[Ferrous Teaching Material](https://ferrous-systems.github.io/teaching-material/"
+"index.html): a series of small presentations covering both basic and advanced "
+"part of the Rust language. Other topics such as WebAssembly, and async/await "
+"are also covered."
msgstr ""
-"[Ferrous Teaching Material](https://ferrous-systems.github.io/teaching-"
-"material/index.html): una serie de pequeñas presentaciones que cubren tanto "
-"la parte básica como la parte más avanzada del lenguaje Rust. También se "
-"tratan otros temas como WebAssembly y async/await."
+"[Ferrous Teaching Material](https://ferrous-systems.github.io/teaching-material/"
+"index.html): una serie de pequeñas presentaciones que cubren tanto la parte "
+"básica como la parte más avanzada del lenguaje Rust. También se tratan otros "
+"temas como WebAssembly y async/await."
#: src/other-resources.md
msgid ""
"[Advanced testing for Rust applications](https://github.com/mainmatter/rust-"
-"advanced-testing-workshop): a self-paced workshop that goes beyond Rust's "
-"built-in testing framework. It covers `googletest`, snapshot testing, "
-"mocking as well as how to write your own custom test harness."
+"advanced-testing-workshop): a self-paced workshop that goes beyond Rust's built-"
+"in testing framework. It covers `googletest`, snapshot testing, mocking as well "
+"as how to write your own custom test harness."
msgstr ""
#: src/other-resources.md
msgid ""
"[Beginner's Series to Rust](https://docs.microsoft.com/en-us/shows/beginners-"
-"series-to-rust/) and [Take your first steps with Rust](https://docs."
-"microsoft.com/en-us/learn/paths/rust-first-steps/): two Rust guides aimed at "
-"new developers. The first is a set of 35 videos and the second is a set of "
-"11 modules which covers Rust syntax and basic constructs."
+"series-to-rust/) and [Take your first steps with Rust](https://docs.microsoft."
+"com/en-us/learn/paths/rust-first-steps/): two Rust guides aimed at new "
+"developers. The first is a set of 35 videos and the second is a set of 11 "
+"modules which covers Rust syntax and basic constructs."
msgstr ""
"[Beginner's Series to Rust](https://docs.microsoft.com/es/shows/beginners-"
-"series-to-rust/) y [Take your first steps with Rust](https://docs.microsoft."
-"com/es/learn/paths/rust-first-steps/): dos guías de Rust dirigidas a nuevos "
+"series-to-rust/) y [Take your first steps with Rust](https://docs.microsoft.com/"
+"es/learn/paths/rust-first-steps/): dos guías de Rust dirigidas a nuevos "
"desarrolladores. La primera es un conjunto de 35 vídeos y la segunda es un "
-"conjunto de 11 módulos que cubren la sintaxis y las construcciones básicas "
-"de Rust."
+"conjunto de 11 módulos que cubren la sintaxis y las construcciones básicas de "
+"Rust."
#: src/other-resources.md
msgid ""
-"[Learn Rust With Entirely Too Many Linked Lists](https://rust-unofficial."
-"github.io/too-many-lists/): in-depth exploration of Rust's memory management "
-"rules, through implementing a few different types of list structures."
+"[Learn Rust With Entirely Too Many Linked Lists](https://rust-unofficial.github."
+"io/too-many-lists/): in-depth exploration of Rust's memory management rules, "
+"through implementing a few different types of list structures."
msgstr ""
-"[Learn Rust With Entirely Too Many Linked Lists](https://rust-unofficial."
-"github.io/too-many-lists/): exploración detallada de las reglas de gestión "
-"de la memoria de Rust a través de la implementación de algunos tipos "
-"diferentes de estructuras de listas."
+"[Learn Rust With Entirely Too Many Linked Lists](https://rust-unofficial.github."
+"io/too-many-lists/): exploración detallada de las reglas de gestión de la "
+"memoria de Rust a través de la implementación de algunos tipos diferentes de "
+"estructuras de listas."
#: src/other-resources.md
msgid ""
-"Please see the [Little Book of Rust Books](https://lborb.github.io/book/) "
-"for even more Rust books."
+"Please see the [Little Book of Rust Books](https://lborb.github.io/book/) for "
+"even more Rust books."
msgstr ""
"Consulta [The Little Book of Rust Books](https://lborb.github.io/book/) para "
"ver más libros de Rust."
@@ -24032,12 +23612,12 @@ msgstr ""
#: src/credits.md
msgid ""
"The material here builds on top of the many great sources of Rust "
-"documentation. See the page on [other resources](other-resources.md) for a "
-"full list of useful resources."
+"documentation. See the page on [other resources](other-resources.md) for a full "
+"list of useful resources."
msgstr ""
"Este material se basa en las numerosas fuentes de documentación sobre Rust. "
-"Consulta la página de [otros recursos](other-resources.md) para ver una "
-"lista completa de recursos útiles."
+"Consulta la página de [otros recursos](other-resources.md) para ver una lista "
+"completa de recursos útiles."
#: src/credits.md
msgid ""
@@ -24046,8 +23626,8 @@ msgid ""
"rust/blob/main/LICENSE) for details."
msgstr ""
"El material de Comprehensive Rust está sujeto a los términos de la licencia "
-"Apache 2.0. Para obtener más información, consulta [`LICENSE`](https://"
-"github.com/google/comprehensive-rust/blob/main/LICENSE)."
+"Apache 2.0. Para obtener más información, consulta [`LICENSE`](https://github."
+"com/google/comprehensive-rust/blob/main/LICENSE)."
#: src/credits.md
msgid "Rust by Example"
@@ -24055,10 +23635,9 @@ msgstr "Rust by Example"
#: src/credits.md
msgid ""
-"Some examples and exercises have been copied and adapted from [Rust by "
-"Example](https://doc.rust-lang.org/rust-by-example/). Please see the "
-"`third_party/rust-by-example/` directory for details, including the license "
-"terms."
+"Some examples and exercises have been copied and adapted from [Rust by Example]"
+"(https://doc.rust-lang.org/rust-by-example/). Please see the `third_party/rust-"
+"by-example/` directory for details, including the license terms."
msgstr ""
"Algunos ejemplos y ejercicios se han copiado y adaptado del libro [Rust by "
"Example](https://doc.rust-lang.org/rust-by-example/). Consulta el directorio "
@@ -24076,9 +23655,8 @@ msgid ""
"directory for details, including the license terms."
msgstr ""
"Se han copiado y adaptado algunos ejercicios del recurso [Rust on Exercism]"
-"(https://exercism.org/tracks/rust). Consulta el directorio `third_party/rust-"
-"on-exercism/` para obtener más información, incluidos los términos de la "
-"licencia."
+"(https://exercism.org/tracks/rust). Consulta el directorio `third_party/rust-on-"
+"exercism/` para obtener más información, incluidos los términos de la licencia."
#: src/credits.md
msgid "CXX"
@@ -24086,8 +23664,8 @@ msgstr "CXX"
#: src/credits.md
msgid ""
-"The [Interoperability with C++](android/interoperability/cpp.md) section "
-"uses an image from [CXX](https://cxx.rs/). Please see the `third_party/cxx/` "
+"The [Interoperability with C++](android/interoperability/cpp.md) section uses "
+"an image from [CXX](https://cxx.rs/). Please see the `third_party/cxx/` "
"directory for details, including the license terms."
msgstr ""
"En la sección [Interoperabilidad con C++](android/Interop/cpp.md) se usa una "
@@ -24125,8 +23703,7 @@ msgstr ""
#~ msgid "[Control Flow Basics](../control-flow-basics.md) (1 hour)"
#~ msgstr ""
-#~ "[Aspectos básicos del flujo de control](../control-flow-basics.md) (1 "
-#~ "hora)"
+#~ "[Aspectos básicos del flujo de control](../control-flow-basics.md) (1 hora)"
#~ msgid "[Tuples and Arrays](../tuples-and-arrays.md) (1 hour)"
#~ msgstr "[Tuplas y arrays](../tuples-and-arrays.md) (1 hora)"
@@ -24154,8 +23731,7 @@ msgstr ""
#~ msgstr "Día 2 por la tarde (3 horas, incluidos los descansos)"
#~ msgid "[Standard Library Types](../std-types.md) (1 hour and 10 minutes)"
-#~ msgstr ""
-#~ "[Tipos de bibliotecas estándar](../std-types.md) (1 hora y 10 minutos)"
+#~ msgstr "[Tipos de bibliotecas estándar](../std-types.md) (1 hora y 10 minutos)"
#~ msgid "[Standard Library Traits](../std-traits.md) (1 hour and 40 minutes)"
#~ msgstr ""
@@ -24165,8 +23741,7 @@ msgstr ""
#~ msgstr "[Bienvenida](../welcome-day-3.md) (3 minutos)"
#~ msgid "[Memory Management](../memory-management.md) (1 hour and 10 minutes)"
-#~ msgstr ""
-#~ "[Gestión de la memoria](../memory-management.md) (1 hora y 10 minutos)"
+#~ msgstr "[Gestión de la memoria](../memory-management.md) (1 hora y 10 minutos)"
#, fuzzy
#~ msgid "[Smart Pointers](../smart-pointers.md) (45 minutes)"
@@ -24178,8 +23753,7 @@ msgstr ""
#~ msgid ""
#~ "[Slices and Lifetimes](../slices-and-lifetimes.md) (1 hour and 10 minutes)"
#~ msgstr ""
-#~ "[Slices y tiempos de vida](../slices-and-lifetimes.md) (1 hora y 10 "
-#~ "minutos)"
+#~ "[Slices y tiempos de vida](../slices-and-lifetimes.md) (1 hora y 10 minutos)"
#~ msgid "[Welcome](../welcome-day-4.md) (3 minutes)"
#~ msgstr "[Bienvenida](../welcome-day-4.md) (3 minutos)"
@@ -24235,8 +23809,8 @@ msgstr ""
#~ msgid "Including 10 minute breaks, this session should take about 3 hours"
#~ msgstr ""
-#~ "Contando con los descansos de 10 minutos, la duración prevista de la "
-#~ "sesión es de unas 3 horas."
+#~ "Contando con los descansos de 10 minutos, la duración prevista de la sesión "
+#~ "es de unas 3 horas."
#~ msgid "In this segment:"
#~ msgstr "En esta parte se abordarán los siguientes temas:"
@@ -24285,8 +23859,8 @@ msgstr ""
#~ msgid "`&str` - a read-only string. String literals have this type."
#~ msgstr ""
-#~ "`&str`: es una cadena de solo lectura. Los literales de cadena son de "
-#~ "este tipo."
+#~ "`&str`: es una cadena de solo lectura. Los literales de cadena son de este "
+#~ "tipo."
#~ msgid "\"🪐\""
#~ msgstr "\"🪐\""
@@ -24301,14 +23875,13 @@ msgstr ""
#~ msgstr "//println!(\"{:?}\", &sentence[12..13]);\n"
#~ msgid ""
-#~ "This slide introduces strings. Everything here will be covered in more "
-#~ "depth later, but this is enough for subsequent slides and exercises to "
-#~ "use strings."
+#~ "This slide introduces strings. Everything here will be covered in more depth "
+#~ "later, but this is enough for subsequent slides and exercises to use strings."
#~ msgstr ""
#~ "En esta diapositiva se presentan las cadenas. Más adelante hablaremos de "
-#~ "todo lo relacionado con este tema, pero esta información es suficiente "
-#~ "para que se puedan usar cadenas en las diapositivas y ejercicios que "
-#~ "vienen a continuación."
+#~ "todo lo relacionado con este tema, pero esta información es suficiente para "
+#~ "que se puedan usar cadenas en las diapositivas y ejercicios que vienen a "
+#~ "continuación."
#~ msgid "Invalid UTF-8 in a string is UB, and this not allowed in safe Rust."
#~ msgstr ""
@@ -24316,16 +23889,16 @@ msgstr ""
#~ "indefinido y no es compatible con Rust seguro."
#~ msgid ""
-#~ "`String` is a user-defined type with a constructor (`::new()`) and "
-#~ "methods like `s.push_str(..)`."
+#~ "`String` is a user-defined type with a constructor (`::new()`) and methods "
+#~ "like `s.push_str(..)`."
#~ msgstr ""
-#~ "`String` es un tipo definido por el usuario con un constructor (`::"
-#~ "new()`) y métodos como `s.push_str(..)`."
+#~ "`String` es un tipo definido por el usuario con un constructor (`::new()`) y "
+#~ "métodos como `s.push_str(..)`."
#~ msgid ""
#~ "The `&` in `&str` indicates that this is a reference. We will cover "
-#~ "references later, so for now just think of `&str` as a unit meaning \"a "
-#~ "read-only string\"."
+#~ "references later, so for now just think of `&str` as a unit meaning \"a read-"
+#~ "only string\"."
#~ msgstr ""
#~ "La `&` en `&str` indica que se trata de una referencia. Más adelante "
#~ "hablaremos de las referencias, por el momento solo es necesario saber que "
@@ -24333,8 +23906,8 @@ msgstr ""
#~ msgid ""
#~ "The commented-out line is indexing into the string by byte position. "
-#~ "`12..13` does not end on a character boundary, so the program panics. "
-#~ "Adjust it to a range that does, based on the error message."
+#~ "`12..13` does not end on a character boundary, so the program panics. Adjust "
+#~ "it to a range that does, based on the error message."
#~ msgstr ""
#~ "La línea marcada como comentario se indexa en la cadena por posición de "
#~ "byte. `12..13` no termina en el límite de un carácter, por lo que el "
@@ -24352,11 +23925,10 @@ msgstr ""
#~ "[break y continue](./control-flow-basics/break-continue.md) (5 minutos)"
#~ msgid ""
-#~ "[Blocks and Scopes](./control-flow-basics/blocks-and-scopes.md) (10 "
-#~ "minutes)"
+#~ "[Blocks and Scopes](./control-flow-basics/blocks-and-scopes.md) (10 minutes)"
#~ msgstr ""
-#~ "[Bloques y ámbitos (scopes)](./control-flow-basics/blocks-and-scopes.md) "
-#~ "(10 minutos)"
+#~ "[Bloques y ámbitos (scopes)](./control-flow-basics/blocks-and-scopes.md) (10 "
+#~ "minutos)"
#~ msgid "[Functions](./control-flow-basics/functions.md) (3 minutes)"
#~ msgstr "[Funciones](./control-flow-basics/functions.md) (3 minutos)"
@@ -24365,8 +23937,7 @@ msgstr ""
#~ msgstr "[Macros](./control-flow-basics/macros.md) (2 minutos)"
#~ msgid ""
-#~ "[Exercise: Collatz Sequence](./control-flow-basics/exercise.md) (30 "
-#~ "minutes)"
+#~ "[Exercise: Collatz Sequence](./control-flow-basics/exercise.md) (30 minutes)"
#~ msgstr ""
#~ "[Ejercicio: secuencia de Collatz](./control-flow-basics/exercise.md) (30 "
#~ "minutos)"
@@ -24379,11 +23950,11 @@ msgstr ""
#~ msgstr "Los bloques están delimitados por llaves."
#~ msgid ""
-#~ "Line comments are started with `//`, block comments are delimited by `/"
-#~ "* ... */`."
+#~ "Line comments are started with `//`, block comments are delimited by `/* ... "
+#~ "*/`."
#~ msgstr ""
-#~ "Los comentarios de línea empiezan por `//`, mientras que los comentarios "
-#~ "de bloque están delimitados por `/* ... */`."
+#~ "Los comentarios de línea empiezan por `//`, mientras que los comentarios de "
+#~ "bloque están delimitados por `/* ... */`."
#~ msgid "Keywords like `if` and `while` work the same."
#~ msgstr "Palabras clave como `if` y `while` funcionan igual."
@@ -24521,15 +24092,12 @@ msgstr ""
#~ msgstr "[Iteración de arrays](./tuples-and-arrays/iteration.md) (3 minutos)"
#~ msgid "[Pattern Matching](./tuples-and-arrays/match.md) (10 minutes)"
-#~ msgstr ""
-#~ "[Coincidencia de patrones](./tuples-and-arrays/match.md) (10 minutos)"
+#~ msgstr "[Coincidencia de patrones](./tuples-and-arrays/match.md) (10 minutos)"
#~ msgid "[Destructuring](./tuples-and-arrays/destructuring.md) (5 minutes)"
-#~ msgstr ""
-#~ "[Desestructuración](./tuples-and-arrays/destructuring.md) (5 minutos)"
+#~ msgstr "[Desestructuración](./tuples-and-arrays/destructuring.md) (5 minutos)"
-#~ msgid ""
-#~ "[Exercise: Nested Arrays](./tuples-and-arrays/exercise.md) (30 minutes)"
+#~ msgid "[Exercise: Nested Arrays](./tuples-and-arrays/exercise.md) (30 minutes)"
#~ msgstr ""
#~ "[Ejercicio: Arrays anidados](./tuples-and-arrays/exercise.md) (30 minutos)"
@@ -24569,15 +24137,14 @@ msgstr ""
#, fuzzy
#~ msgid ""
-#~ "The empty tuple `()` is also known as the \"unit type\". It is both a "
-#~ "type, and the only valid value of that type --- that is to say both the "
-#~ "type and its value are expressed as `()`. It is used to indicate, for "
-#~ "example, that a function or expression has no return value, as we'll see "
-#~ "in a future slide."
+#~ "The empty tuple `()` is also known as the \"unit type\". It is both a type, "
+#~ "and the only valid value of that type --- that is to say both the type and "
+#~ "its value are expressed as `()`. It is used to indicate, for example, that a "
+#~ "function or expression has no return value, as we'll see in a future slide."
#~ msgstr ""
-#~ "La tupla vacía `()` también se conoce como \"tipo unitario\". Es a la vez "
-#~ "un tipo y el único valor válido de ese tipo, es decir, tanto el tipo como "
-#~ "su valor se expresan como `()`. Se usa para indicar, por ejemplo, que una "
+#~ "La tupla vacía `()` también se conoce como \"tipo unitario\". Es a la vez un "
+#~ "tipo y el único valor válido de ese tipo, es decir, tanto el tipo como su "
+#~ "valor se expresan como `()`. Se usa para indicar, por ejemplo, que una "
#~ "función o expresión no tiene valor de retorno, como veremos en una "
#~ "diapositiva posterior."
@@ -24590,9 +24157,9 @@ msgstr ""
#~ "lenguajes de programación."
#~ msgid ""
-#~ "Destructuring is a way of extracting data from a data structure by "
-#~ "writing a pattern that is matched up to the data structure, binding "
-#~ "variables to subcomponents of the data structure."
+#~ "Destructuring is a way of extracting data from a data structure by writing a "
+#~ "pattern that is matched up to the data structure, binding variables to "
+#~ "subcomponents of the data structure."
#~ msgstr ""
#~ "La desestructuración es una forma de extraer datos de una estructura de "
#~ "datos al escribir un patrón que coincida con la estructura de datos, es "
@@ -24645,8 +24212,7 @@ msgstr ""
#~ "Señala cómo `..` se expandirá para representar un número distinto de "
#~ "elementos."
-#~ msgid ""
-#~ "Show matching against the tail with patterns `[.., b]` and `[a@..,b]`"
+#~ msgid "Show matching against the tail with patterns `[.., b]` and `[a@..,b]`"
#~ msgstr ""
#~ "Muestra las coincidencias de tail con los patrones `[.., b]` y `[a@..,b]`."
@@ -24685,8 +24251,8 @@ msgstr ""
#~ msgid ""
#~ "[Static and Const](./user-defined-types/static-and-const.md) (5 minutes)"
#~ msgstr ""
-#~ "[Variables Static y Const](./user-definition-types/static-and-const.md) "
-#~ "(5 minutos)"
+#~ "[Variables Static y Const](./user-definition-types/static-and-const.md) (5 "
+#~ "minutos)"
#~ msgid "[Type Aliases](./user-defined-types/aliases.md) (2 minutes)"
#~ msgstr "[Alias de tipo](./user-definition-types/aliases.md) (2 minutos)"
@@ -24747,11 +24313,9 @@ msgstr ""
#~ msgstr "[Genéricos](./generics.md) (45 minutos)"
#~ msgid "[Destructuring](./pattern-matching/destructuring.md) (10 minutes)"
-#~ msgstr ""
-#~ "[Desestructuración](./pattern-matching/destructuring.md) (10 minutos)"
+#~ msgstr "[Desestructuración](./pattern-matching/destructuring.md) (10 minutos)"
-#~ msgid ""
-#~ "[Let Control Flow](./pattern-matching/let-control-flow.md) (10 minutes)"
+#~ msgid "[Let Control Flow](./pattern-matching/let-control-flow.md) (10 minutes)"
#~ msgstr ""
#~ "[Control de Flujo con `let`](./pattern-matching/let-control-flow.md) (10 "
#~ "minutos)"
@@ -24760,8 +24324,8 @@ msgstr ""
#~ "[Exercise: Expression Evaluation](./pattern-matching/exercise.md) (30 "
#~ "minutes)"
#~ msgstr ""
-#~ "[Ejercicio: evaluación de expresiones](./pattern-matching/exercise.md) "
-#~ "(30 minutos)"
+#~ "[Ejercicio: evaluación de expresiones](./pattern-matching/exercise.md) (30 "
+#~ "minutos)"
#~ msgid "`match` expressions"
#~ msgstr "Expresiones `match`"
@@ -24776,8 +24340,7 @@ msgstr ""
#~ msgstr "[Derivación](./methods-and-traits/deriving.md) (5 minutos)"
#~ msgid "[Trait Objects](./methods-and-traits/trait-objects.md) (10 minutes)"
-#~ msgstr ""
-#~ "[Objetos de Trait](./methods-and-traits/trait-objects.md) (10 minutos)"
+#~ msgstr "[Objetos de Trait](./methods-and-traits/trait-objects.md) (10 minutos)"
#~ msgid ""
#~ "[Exercise: Generic Logger](./methods-and-traits/exercise.md) (20 minutes)"
@@ -24789,8 +24352,8 @@ msgstr ""
#~ "Trait objects allow for values of different types, for instance in a "
#~ "collection:"
#~ msgstr ""
-#~ "Los objetos de _traits_ permiten valores de diferentes tipos, por "
-#~ "ejemplo, en una colección:"
+#~ "Los objetos de _traits_ permiten valores de diferentes tipos, por ejemplo, "
+#~ "en una colección:"
#~ msgid "[Generic Functions](./generics/generic-functions.md) (5 minutes)"
#~ msgstr "[Funciones genéricas](./generics/generic-functions.md) (5 minutos)"
@@ -24820,12 +24383,10 @@ msgstr ""
#~ msgstr "\"Baumann\""
#~ msgid "[Standard Library Types](./std-types.md) (1 hour and 10 minutes)"
-#~ msgstr ""
-#~ "[Tipos de bibliotecas estándar](./std-types.md) (1 hora y 10 minutos)"
+#~ msgstr "[Tipos de bibliotecas estándar](./std-types.md) (1 hora y 10 minutos)"
#~ msgid "[Standard Library Traits](./std-traits.md) (1 hour and 40 minutes)"
-#~ msgstr ""
-#~ "[Traits de biblioteca estándar](./std-traits.md) (1 hora y 40 minutos)"
+#~ msgstr "[Traits de biblioteca estándar](./std-traits.md) (1 hora y 40 minutos)"
#~ msgid "[Standard Library](./std-types/std.md) (3 minutes)"
#~ msgstr "[Biblioteca estándar](./std-types/std.md) (3 minutos)"
@@ -24868,8 +24429,8 @@ msgstr ""
#~ msgid "[Default, struct update syntax](./std-traits/default.md) (5 minutes)"
#~ msgstr ""
-#~ "[Default, sintaxis de actualización de structs](./std-traits/default.md) "
-#~ "(5 minutos)"
+#~ "[Default, sintaxis de actualización de structs](./std-traits/default.md) (5 "
+#~ "minutos)"
#~ msgid "[Closures](./std-traits/closures.md) (20 minutes)"
#~ msgstr "[Cierres](./std-traits/closures.md) (20 minutos)"
@@ -24887,15 +24448,13 @@ msgstr ""
#~ msgstr "[Bienvenida](./welcome-day-3.md) (3 minutos)"
#~ msgid "[Memory Management](./memory-management.md) (1 hour and 10 minutes)"
-#~ msgstr ""
-#~ "[Gestión de la memoria](./Memory-management.md) (1 hora y 10 minutos)"
+#~ msgstr "[Gestión de la memoria](./Memory-management.md) (1 hora y 10 minutos)"
#, fuzzy
#~ msgid "[Smart Pointers](./smart-pointers.md) (45 minutes)"
#~ msgstr "[Punteros inteligentes](./smart-pointers.md) (55 minutos)"
-#~ msgid ""
-#~ "[Review of Program Memory](./memory-management/review.md) (5 minutes)"
+#~ msgid "[Review of Program Memory](./memory-management/review.md) (5 minutes)"
#~ msgstr ""
#~ "[Revisión de la memoria del programa](./Memory-management/review.md) (5 "
#~ "minutos)"
@@ -24904,8 +24463,8 @@ msgstr ""
#~ "[Approaches to Memory Management](./memory-management/approaches.md) (10 "
#~ "minutes)"
#~ msgstr ""
-#~ "[Estrategias para la gestión de la memoria](./Memory-manageme t/"
-#~ "approaches.md) (10 minutos)"
+#~ "[Estrategias para la gestión de la memoria](./Memory-manageme t/approaches."
+#~ "md) (10 minutos)"
#~ msgid "[Ownership](./memory-management/ownership.md) (5 minutes)"
#~ msgstr "[Ownership](./Memory-management/ownership.md) (5 minutos)"
@@ -24922,11 +24481,9 @@ msgstr ""
#~ msgid "[Drop](./memory-management/drop.md) (10 minutes)"
#~ msgstr "[Drop](./Memory-management/drop.md) (10 minutos)"
-#~ msgid ""
-#~ "[Exercise: Builder Type](./memory-management/exercise.md) (20 minutes)"
+#~ msgid "[Exercise: Builder Type](./memory-management/exercise.md) (20 minutes)"
#~ msgstr ""
-#~ "[Ejercicio: tipo de compilador](./Memory-management/exercise.md) (20 "
-#~ "minutos)"
+#~ "[Ejercicio: tipo de compilador](./Memory-management/exercise.md) (20 minutos)"
#~ msgid "\"ptr = {ptr:#x}, len = {len}, capacity = {capacity}\""
#~ msgstr "\"ptr = {ptr:#x}, longitud = {len}, capacidad = {capacity}\""
@@ -24941,12 +24498,11 @@ msgstr ""
#~ msgstr "[Rc](./smart-pointers/rc.md) (5 minutos)"
#~ msgid "[Exercise: Binary Tree](./smart-pointers/exercise.md) (30 minutes)"
-#~ msgstr ""
-#~ "[Ejercicio: árbol binario](./smart-pointers/exercise.md) (30 minutos)"
+#~ msgstr "[Ejercicio: árbol binario](./smart-pointers/exercise.md) (30 minutos)"
#~ msgid ""
-#~ "A `Box` cannot be empty, so the pointer is always valid and non-`null`. "
-#~ "This allows the compiler to optimize the memory layout:"
+#~ "A `Box` cannot be empty, so the pointer is always valid and non-`null`. This "
+#~ "allows the compiler to optimize the memory layout:"
#~ msgstr ""
#~ "`Box` no puede estar vacío, por lo que el puntero siempre es válido y no "
#~ "`null`. Esto permite que el compilador optimice el diseño de la memoria:"
@@ -24968,21 +24524,21 @@ msgstr ""
#~ msgstr ""
#~ "```bob\n"
#~ " Stack Heap\n"
-#~ ".- - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - "
-#~ "- - - -.\n"
+#~ ".- - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - "
+#~ "- -.\n"
#~ ": : : :\n"
#~ ": "
#~ "list : : :\n"
-#~ ": +------+----+----+ : : +------+----+----+ +------+----"
-#~ "+----+ :\n"
-#~ ": | Cons | 1 | o--+----+-----+--->| Cons | 2 | o--+--->| Nil | // "
-#~ "| // | :\n"
-#~ ": +------+----+----+ : : +------+----+----+ +------+----"
-#~ "+----+ :\n"
+#~ ": +------+----+----+ : : +------+----+----+ +------+----+----"
+#~ "+ :\n"
+#~ ": | Cons | 1 | o--+----+-----+--->| Cons | 2 | o--+--->| Nil | // | // "
+#~ "| :\n"
+#~ ": +------+----+----+ : : +------+----+----+ +------+----+----"
+#~ "+ :\n"
#~ ": : : :\n"
#~ ": : : :\n"
-#~ "'- - - - - - - - - - - - -' '- - - - - - - - - - - - - - - - - - - - "
-#~ "- - - -'\n"
+#~ "'- - - - - - - - - - - - -' '- - - - - - - - - - - - - - - - - - - - - - "
+#~ "- -'\n"
#~ "```"
#~ msgid "[Borrowing](./borrowing.md) (1 hour)"
@@ -24991,8 +24547,7 @@ msgstr ""
#~ msgid ""
#~ "[Slices and Lifetimes](./slices-and-lifetimes.md) (1 hour and 10 minutes)"
#~ msgstr ""
-#~ "[Slices y tiempos de vida](./slices-and-lifetimes.md) (1 hora y 10 "
-#~ "minutos)"
+#~ "[Slices y tiempos de vida](./slices-and-lifetimes.md) (1 hora y 10 minutos)"
#~ msgid "[Borrowing a Value](./borrowing/shared.md) (10 minutes)"
#~ msgstr "[Tomar prestado un valor](./borrowing/shared.md) (10 minutos)"
@@ -25000,8 +24555,7 @@ msgstr ""
#~ msgid "[Borrow Checking](./borrowing/borrowck.md) (10 minutes)"
#~ msgstr "[Comprobación de préstamos](./borrowing/borrowck.md) (10 minutos)"
-#~ msgid ""
-#~ "[Interior Mutability](./borrowing/interior-mutability.md) (10 minutes)"
+#~ msgid "[Interior Mutability](./borrowing/interior-mutability.md) (10 minutes)"
#~ msgstr ""
#~ "[Mutabilidad interior](./borrowing/interior-mutability.md) (10 minutos)"
@@ -25011,19 +24565,18 @@ msgstr ""
#~ msgid "The Rust compiler can do return value optimization (RVO)."
#~ msgstr ""
-#~ "El compilador de Rust puede hacer la optimización del valor devuelto "
-#~ "(RVO)."
+#~ "El compilador de Rust puede hacer la optimización del valor devuelto (RVO)."
#~ msgid ""
-#~ "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 ""
#~ "En C++, la elisión de copia tiene que definirse en la especificación del "
#~ "lenguaje, ya que los constructores pueden tener efectos secundarios. En "
-#~ "Rust, esto no supone ningún problema. Si no hay RVO, Rust siempre "
-#~ "realizará una copia `memcpy` simple y eficiente."
+#~ "Rust, esto no supone ningún problema. Si no hay RVO, Rust siempre realizará "
+#~ "una copia `memcpy` simple y eficiente."
#~ msgid "\"graph: {root:#?}\""
#~ msgstr "\"gráfico: {root:#?}\""
@@ -25033,26 +24586,25 @@ msgstr ""
#~ msgid ""
#~ "`Rc` only allows shared (read-only) access to its contents, since its "
-#~ "purpose is to allow (and count) many references. But we want to modify "
-#~ "the value, so we need interior mutability."
+#~ "purpose is to allow (and count) many references. But we want to modify the "
+#~ "value, so we need interior mutability."
#~ msgstr ""
-#~ "`Rc` solo permite el acceso compartido (de solo lectura) a su contenido, "
-#~ "ya que su objetivo es permitir (y contar) muchas referencias. Ya que "
-#~ "nuestro objetivo modificar el valor, necesitamos utilizar la mutabilidad "
-#~ "interna."
+#~ "`Rc` solo permite el acceso compartido (de solo lectura) a su contenido, ya "
+#~ "que su objetivo es permitir (y contar) muchas referencias. Ya que nuestro "
+#~ "objetivo modificar el valor, necesitamos utilizar la mutabilidad interna."
#~ msgid ""
-#~ "Demonstrate that reference loops can be created by adding `root` to "
-#~ "`subtree.children`."
+#~ "Demonstrate that reference loops can be created by adding `root` to `subtree."
+#~ "children`."
#~ msgstr ""
#~ "Demuestra que se pueden crear bucles de referencia añadiendo `root` a "
#~ "`subtree.children`."
#~ msgid ""
#~ "To demonstrate a runtime panic, add a `fn inc(&mut self)` that increments "
-#~ "`self.value` and calls the same method on its children. This will panic "
-#~ "in the presence of the reference loop, with `thread 'main' panicked at "
-#~ "'already borrowed: BorrowMutError'`."
+#~ "`self.value` and calls the same method on its children. This will panic in "
+#~ "the presence of the reference loop, with `thread 'main' panicked at 'already "
+#~ "borrowed: BorrowMutError'`."
#~ msgstr ""
#~ "Para demostrar un pánico en tiempo de ejecución, añade un `fn inc(&mut "
#~ "self)` que incremente `self.value` y llame al mismo método en sus hijos. "
@@ -25063,31 +24615,29 @@ msgstr ""
#~ msgstr "[Slices: &\\[T\\]](./slices-and-lifetimes/slices.md) (10 minutos)"
#~ msgid "[String References](./slices-and-lifetimes/str.md) (10 minutes)"
-#~ msgstr ""
-#~ "[Referencias de cadenas](./slices-and-lifetimes/str.md) (10 minutos)"
+#~ msgstr "[Referencias de cadenas](./slices-and-lifetimes/str.md) (10 minutos)"
#~ msgid ""
-#~ "[Lifetime Annotations](./slices-and-lifetimes/lifetime-annotations.md) "
-#~ "(10 minutes)"
+#~ "[Lifetime Annotations](./slices-and-lifetimes/lifetime-annotations.md) (10 "
+#~ "minutes)"
#~ msgstr ""
-#~ "[Anotaciones de tiempos de vida](./slices-and-lifetimes/lifetime-"
-#~ "annotations.md) (10 minutos)"
+#~ "[Anotaciones de tiempos de vida](./slices-and-lifetimes/lifetime-annotations."
+#~ "md) (10 minutos)"
#~ msgid ""
#~ "[Lifetime Elision](./slices-and-lifetimes/lifetime-elision.md) (5 minutes)"
#~ msgstr ""
-#~ "[Omisión de tiempos de vida](./slices-and-lifetimes/lifetime-elision.md) "
-#~ "(5 minutos)"
+#~ "[Omisión de tiempos de vida](./slices-and-lifetimes/lifetime-elision.md) (5 "
+#~ "minutos)"
#~ msgid ""
#~ "[Struct Lifetimes](./slices-and-lifetimes/struct-lifetimes.md) (5 minutes)"
#~ msgstr ""
-#~ "[Tiempos de vida de structs](./slices-and-lifetimes/struct-lifetimes.md) "
-#~ "(5 minutos)"
+#~ "[Tiempos de vida de structs](./slices-and-lifetimes/struct-lifetimes.md) (5 "
+#~ "minutos)"
#~ msgid ""
-#~ "[Exercise: Protobuf Parsing](./slices-and-lifetimes/exercise.md) (30 "
-#~ "minutes)"
+#~ "[Exercise: Protobuf Parsing](./slices-and-lifetimes/exercise.md) (30 minutes)"
#~ msgstr ""
#~ "[Ejercicio: análisis de Protobuf](./slices-and-lifetimes/exercise.md) (30 "
#~ "minutos)"
@@ -25139,8 +24689,8 @@ msgstr ""
#~ msgid ""
#~ "[Exercise: Iterator Method Chaining](./iterators/exercise.md) (30 minutes)"
#~ msgstr ""
-#~ "[Ejercicio: encadenamiento de métodos del iterador](./iterators/exercise."
-#~ "md) (30 minutos)"
+#~ "[Ejercicio: encadenamiento de métodos del iterador](./iterators/exercise.md) "
+#~ "(30 minutos)"
#~ msgid "[Modules](./modules/modules.md) (5 minutes)"
#~ msgstr "[Módulos](./modules/modules.md) (5 minutos)"
@@ -25185,21 +24735,19 @@ msgstr ""
#~ msgid "Rust comes with only basic support for writing tests."
#~ msgstr "Rust solo incluye asistencia básica para las pruebas de escritura."
-#~ msgid ""
-#~ "Here are some additional crates which we recommend for writing tests:"
+#~ msgid "Here are some additional crates which we recommend for writing tests:"
#~ msgstr ""
-#~ "A continuación, se indican algunos crates adicionales que recomendamos "
-#~ "para escribir pruebas:"
+#~ "A continuación, se indican algunos crates adicionales que recomendamos para "
+#~ "escribir pruebas:"
#~ msgid ""
#~ "[googletest](https://docs.rs/googletest): Comprehensive test assertion "
#~ "library in the tradition of GoogleTest for C++."
#~ msgstr ""
-#~ "[googletest](https://docs.rs/googletest): biblioteca completa de aserción "
-#~ "de pruebas en la tradición de GoogleTest para C++."
+#~ "[googletest](https://docs.rs/googletest): biblioteca completa de aserción de "
+#~ "pruebas en la tradición de GoogleTest para C++."
-#~ msgid ""
-#~ "[proptest](https://docs.rs/proptest): Property-based testing for Rust."
+#~ msgid "[proptest](https://docs.rs/proptest): Property-based testing for Rust."
#~ msgstr ""
#~ "[proptest](https://docs.rs/proptest): pruebas basadas en propiedades para "
#~ "Rust."
@@ -25225,8 +24773,8 @@ msgstr ""
#~ msgid "Including 10 minute breaks, this session should take about 2 hours"
#~ msgstr ""
-#~ "Contando con los descansos de 10 minutos, la duración prevista de la "
-#~ "sesión es de unas 2 horas."
+#~ "Contando con los descansos de 10 minutos, la duración prevista de la sesión "
+#~ "es de unas 2 horas."
#~ msgid "[Panics](./error-handling/panics.md) (3 minutes)"
#~ msgstr "[Pánicos](./error-handling/panics.md) (3 minutos)"
@@ -25241,17 +24789,14 @@ msgstr ""
#~ msgstr "[Trait Error](./error-handling/error.md) (5 minutos)"
#~ msgid ""
-#~ "[thiserror and anyhow](./error-handling/thiserror-and-anyhow.md) (5 "
-#~ "minutes)"
+#~ "[thiserror and anyhow](./error-handling/thiserror-and-anyhow.md) (5 minutes)"
#~ msgstr ""
#~ "[thiserror y anyhow](./error-handling/thiserror-and-anyhow.md) (5 minutos)"
#~ msgid ""
-#~ "[Exercise: Rewriting with Result](./error-handling/exercise.md) (20 "
-#~ "minutes)"
+#~ "[Exercise: Rewriting with Result](./error-handling/exercise.md) (20 minutes)"
#~ msgstr ""
-#~ "[Ejercicio: reescribir con Result](./error-handling/exercise.md) (20 "
-#~ "minutos)"
+#~ "[Ejercicio: reescribir con Result](./error-handling/exercise.md) (20 minutos)"
#~ msgid "[Unsafe](./unsafe-rust/unsafe.md) (5 minutes)"
#~ msgstr "[Inseguro](./unsafe-rust/unsafe.md) (5 minutos)"
@@ -25262,25 +24807,21 @@ msgstr ""
#~ "[Desreferenciar punteros sin formato](./unsafe-rust/dereferencing.md) (10 "
#~ "minutos)"
-#~ msgid ""
-#~ "[Mutable Static Variables](./unsafe-rust/mutable-static.md) (5 minutes)"
+#~ msgid "[Mutable Static Variables](./unsafe-rust/mutable-static.md) (5 minutes)"
#~ msgstr ""
-#~ "[Variables estáticas mutables](./unsafe-rust/mutable-static.md) (5 "
-#~ "minutos)"
+#~ "[Variables estáticas mutables](./unsafe-rust/mutable-static.md) (5 minutos)"
#~ msgid "[Unions](./unsafe-rust/unions.md) (5 minutes)"
#~ msgstr "[Uniones](./unsafe-rust/unions.md) (5 minutos)"
#~ msgid "[Unsafe Functions](./unsafe-rust/unsafe-functions.md) (5 minutes)"
-#~ msgstr ""
-#~ "[Funciones inseguras](./unsafe-rust/unsafe-functions.md) (5 minutos)"
+#~ msgstr "[Funciones inseguras](./unsafe-rust/unsafe-functions.md) (5 minutos)"
#~ msgid "[Unsafe Traits](./unsafe-rust/unsafe-traits.md) (5 minutes)"
#~ msgstr "[Traits inseguros](./unsafe-rust/unsafe-traits.md) (5 minutos)"
#~ msgid "[Exercise: FFI Wrapper](./unsafe-rust/exercise.md) (30 minutes)"
-#~ msgstr ""
-#~ "[Ejercicio: envoltorio de FFI](./unsafe-rust/exercise.md) (30 minutos)"
+#~ msgstr "[Ejercicio: envoltorio de FFI](./unsafe-rust/exercise.md) (30 minutos)"
#, fuzzy
#~ msgid "// Undefined behavior if abs misbehaves.\n"
@@ -25293,17 +24834,15 @@ msgstr ""
#~ "Add `vendor_available: true` if your AIDL file is used by a binary in the "
#~ "vendor partition."
#~ msgstr ""
-#~ "Añade `vendor_available: true` si un binario de la partición del "
-#~ "proveedor utiliza tu archivo de AIDL."
+#~ "Añade `vendor_available: true` si un binario de la partición del proveedor "
+#~ "utiliza tu archivo de AIDL."
#~ msgid "/// Connect to the BirthdayService.\n"
#~ msgstr "/// Conecta con el servicio de felicitación de cumpleaños.\n"
-#~ msgid ""
-#~ "// SAFETY: `print_card` is safe to call with a valid `card` pointer.\n"
+#~ msgid "// SAFETY: `print_card` is safe to call with a valid `card` pointer.\n"
#~ msgstr ""
-#~ "// SEGURIDAD: es seguro llamar a `print_card` con un puntero `card` "
-#~ "válido.\n"
+#~ "// SEGURIDAD: es seguro llamar a `print_card` con un puntero `card` válido.\n"
#~ msgid "ADC"
#~ msgstr "ADC"
@@ -25324,8 +24863,8 @@ msgstr ""
#~ "There is work in progress on an `async` version of `embedded-hal`, but it "
#~ "isn't stable yet."
#~ msgstr ""
-#~ "Se está trabajando en una versión `async` de `embedded-hal`, pero aún no "
-#~ "es estable."
+#~ "Se está trabajando en una versión `async` de `embedded-hal`, pero aún no es "
+#~ "estable."
#~ msgid ""
#~ "// Set up the I2C controller and Inertial Measurement Unit.\n"
@@ -25360,16 +24899,14 @@ msgstr ""
#~ "//\n"
#~ "// Unless required by applicable law or agreed to in writing, software\n"
#~ "// distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ "// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ "// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ "// See the License for the specific language governing permissions and\n"
#~ "// limitations under the License.\n"
#~ msgstr ""
#~ "// Copyright 2023 Google LLC\n"
#~ "//\n"
#~ "// Con licencia Apache, versión 2.0 (la \"Licencia\");\n"
-#~ "// Este archivo solo se puede utilizar según lo estipulado en la "
-#~ "Licencia.\n"
+#~ "// Este archivo solo se puede utilizar según lo estipulado en la Licencia.\n"
#~ "// Puedes obtener una copia de la Licencia en\n"
#~ "//\n"
#~ "// http://www.apache.org/licenses/LICENSE-2.0\n"
@@ -25425,8 +24962,8 @@ msgstr ""
#~ msgid ""
#~ "/// Flags from the UART Receive Status Register / Error Clear Register.\n"
#~ msgstr ""
-#~ "/// Marcas del registro de estado de recepción de UART/Registro de "
-#~ "borrado de errores.\n"
+#~ "/// Marcas del registro de estado de recepción de UART/Registro de borrado "
+#~ "de errores.\n"
#~ msgid "/// Framing error.\n"
#~ msgstr "/// Error de encuadre.\n"
@@ -25454,26 +24991,25 @@ msgstr ""
#~ "/// Controlador para un UART PL011.\n"
#~ msgid ""
-#~ "/// Constructs a new instance of the UART driver for a PL011 device at "
-#~ "the\n"
+#~ "/// Constructs a new instance of the UART driver for a PL011 device at the\n"
#~ " /// given base address.\n"
#~ " ///\n"
#~ " /// # Safety\n"
#~ " ///\n"
-#~ " /// The given base address must point to the MMIO control registers "
-#~ "of a\n"
+#~ " /// The given base address must point to the MMIO control registers of "
+#~ "a\n"
#~ " /// PL011 device, which must be mapped into the address space of the "
#~ "process\n"
#~ " /// as device memory and not have any other aliases.\n"
#~ msgstr ""
-#~ "/// Crea una instancia nueva del controlador UART para un dispositivo "
-#~ "PL011 en la\n"
+#~ "/// Crea una instancia nueva del controlador UART para un dispositivo PL011 "
+#~ "en la\n"
#~ " /// dirección base proporcionada.\n"
#~ " ///\n"
#~ " /// # Seguridad\n"
#~ " ///\n"
-#~ " /// El objeto la dirección base debe apuntar a los registros de "
-#~ "control MMIO de un dispositivo\n"
+#~ " /// El objeto la dirección base debe apuntar a los registros de control "
+#~ "MMIO de un dispositivo\n"
#~ " /// PL011, que debe asignarse al espacio de direcciones del proceso\n"
#~ " /// como memoria del dispositivo y no tener ningún otro alias.\n"
@@ -25517,8 +25053,7 @@ msgstr ""
#~ " *\n"
#~ " * Unless required by applicable law or agreed to in writing, software\n"
#~ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ " * See the License for the specific language governing permissions and\n"
#~ " * limitations under the License.\n"
#~ " */\n"
@@ -25549,14 +25084,14 @@ msgstr ""
#~ "/* Translation table walks for TTBR0_EL1 are inner sharable. */\n"
#~ ".set .L_TCR_SH_INNER, 0x3 << 12\n"
#~ "/*\n"
-#~ " * Translation table walks for TTBR0_EL1 are outer write-back read-"
-#~ "allocate write-allocate\n"
+#~ " * Translation table walks for TTBR0_EL1 are outer write-back read-allocate "
+#~ "write-allocate\n"
#~ " * cacheable.\n"
#~ " */\n"
#~ ".set .L_TCR_RGN_OWB, 0x1 << 10\n"
#~ "/*\n"
-#~ " * Translation table walks for TTBR0_EL1 are inner write-back read-"
-#~ "allocate write-allocate\n"
+#~ " * Translation table walks for TTBR0_EL1 are inner write-back read-allocate "
+#~ "write-allocate\n"
#~ " * cacheable.\n"
#~ " */\n"
#~ ".set .L_TCR_RGN_IWB, 0x1 << 8\n"
@@ -25575,8 +25110,7 @@ msgstr ""
#~ ".set .L_SCTLR_ELx_C, 0x1 << 2\n"
#~ "/* EL0 and EL1 stage 1 MMU enabled. */\n"
#~ ".set .L_SCTLR_ELx_M, 0x1 << 0\n"
-#~ "/* Privileged Access Never is unchanged on taking an exception to EL1. "
-#~ "*/\n"
+#~ "/* Privileged Access Never is unchanged on taking an exception to EL1. */\n"
#~ ".set .L_SCTLR_EL1_SPAN, 0x1 << 23\n"
#~ "/* SETEND instruction disabled at EL0 in aarch32 mode. */\n"
#~ ".set .L_SCTLR_EL1_SED, 0x1 << 8\n"
@@ -25590,8 +25124,8 @@ msgstr ""
#~ "L_SCTLR_EL1_RES1\n"
#~ "\n"
#~ "/**\n"
-#~ " * This is a generic entry point for an image. It carries out the "
-#~ "operations required to prepare the\n"
+#~ " * This is a generic entry point for an image. It carries out the operations "
+#~ "required to prepare the\n"
#~ " * loaded image to be run. Specifically, it zeroes the bss section using "
#~ "registers x25 and above,\n"
#~ " * prepares the stack, enables floating point, and sets up the exception "
@@ -25601,8 +25135,8 @@ msgstr ""
#~ ".section .init.entry, \"ax\"\n"
#~ ".global entry\n"
#~ "entry:\n"
-#~ "\t/* Load and apply the memory management configuration, ready to enable "
-#~ "MMU and caches. */\n"
+#~ "\t/* Load and apply the memory management configuration, ready to enable MMU "
+#~ "and caches. */\n"
#~ "\tadrp x30, idmap\n"
#~ "\tmsr ttbr0_el1, x30\n"
#~ "\n"
@@ -25619,8 +25153,8 @@ msgstr ""
#~ "\tmov_i x30, .Lsctlrval\n"
#~ "\n"
#~ "\t/*\n"
-#~ "\t * Ensure everything before this point has completed, then invalidate "
-#~ "any potentially stale\n"
+#~ "\t * Ensure everything before this point has completed, then invalidate any "
+#~ "potentially stale\n"
#~ "\t * local TLB entries before they start being used.\n"
#~ "\t */\n"
#~ "\tisb\n"
@@ -25678,8 +25212,7 @@ msgstr ""
#~ " *\n"
#~ " * Unless required by applicable law or agreed to in writing, software\n"
#~ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ " * See the License for the specific language governing permissions and\n"
#~ " * limitations under the License.\n"
#~ " */\n"
@@ -25710,14 +25243,14 @@ msgstr ""
#~ "/* Translation table walks for TTBR0_EL1 are inner sharable. */\n"
#~ ".set .L_TCR_SH_INNER, 0x3 << 12\n"
#~ "/*\n"
-#~ " * Translation table walks for TTBR0_EL1 are outer write-back read-"
-#~ "allocate write-allocate\n"
+#~ " * Translation table walks for TTBR0_EL1 are outer write-back read-allocate "
+#~ "write-allocate\n"
#~ " * cacheable.\n"
#~ " */\n"
#~ ".set .L_TCR_RGN_OWB, 0x1 << 10\n"
#~ "/*\n"
-#~ " * Translation table walks for TTBR0_EL1 are inner write-back read-"
-#~ "allocate write-allocate\n"
+#~ " * Translation table walks for TTBR0_EL1 are inner write-back read-allocate "
+#~ "write-allocate\n"
#~ " * cacheable.\n"
#~ " */\n"
#~ ".set .L_TCR_RGN_IWB, 0x1 << 8\n"
@@ -25736,8 +25269,7 @@ msgstr ""
#~ ".set .L_SCTLR_ELx_C, 0x1 << 2\n"
#~ "/* EL0 and EL1 stage 1 MMU enabled. */\n"
#~ ".set .L_SCTLR_ELx_M, 0x1 << 0\n"
-#~ "/* Privileged Access Never is unchanged on taking an exception to EL1. "
-#~ "*/\n"
+#~ "/* Privileged Access Never is unchanged on taking an exception to EL1. */\n"
#~ ".set .L_SCTLR_EL1_SPAN, 0x1 << 23\n"
#~ "/* SETEND instruction disabled at EL0 in aarch32 mode. */\n"
#~ ".set .L_SCTLR_EL1_SED, 0x1 << 8\n"
@@ -25762,8 +25294,8 @@ msgstr ""
#~ ".section .init.entry, \"ax\"\n"
#~ ".global entry\n"
#~ "entry:\n"
-#~ "\t/* Load and apply the memory management configuration, ready to enable "
-#~ "MMU and caches. */\n"
+#~ "\t/* Load and apply the memory management configuration, ready to enable MMU "
+#~ "and caches. */\n"
#~ "\tadrp x30, idmap\n"
#~ "\tmsr ttbr0_el1, x30\n"
#~ "\n"
@@ -25780,8 +25312,8 @@ msgstr ""
#~ "\tmov_i x30, .Lsctlrval\n"
#~ "\n"
#~ "\t/*\n"
-#~ "\t * Ensure everything before this point has completed, then invalidate "
-#~ "any potentially stale\n"
+#~ "\t * Ensure everything before this point has completed, then invalidate any "
+#~ "potentially stale\n"
#~ "\t * local TLB entries before they start being used.\n"
#~ "\t */\n"
#~ "\tisb\n"
@@ -25840,8 +25372,7 @@ msgstr ""
#~ " *\n"
#~ " * Unless required by applicable law or agreed to in writing, software\n"
#~ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ " * See the License for the specific language governing permissions and\n"
#~ " * limitations under the License.\n"
#~ " */\n"
@@ -25872,8 +25403,7 @@ msgstr ""
#~ "\tstp x29, x30, [sp, #8 * 20]\n"
#~ "\n"
#~ "\t/*\n"
-#~ "\t * Save elr_el1 & spsr_el1. This such that we can take nested "
-#~ "exception\n"
+#~ "\t * Save elr_el1 & spsr_el1. This such that we can take nested exception\n"
#~ "\t * and still be able to unwind.\n"
#~ "\t */\n"
#~ "\tmrs x0, elr_el1\n"
@@ -25882,10 +25412,9 @@ msgstr ""
#~ ".endm\n"
#~ "\n"
#~ "/**\n"
-#~ " * Restores the volatile registers from the stack. This currently takes "
-#~ "14\n"
-#~ " * instructions, so it can be used in exception handlers while still "
-#~ "leaving 18\n"
+#~ " * Restores the volatile registers from the stack. This currently takes 14\n"
+#~ " * instructions, so it can be used in exception handlers while still leaving "
+#~ "18\n"
#~ " * instructions left; if paired with save_volatile_to_stack, there are 4\n"
#~ " * instructions to spare.\n"
#~ " */\n"
@@ -25918,8 +25447,7 @@ msgstr ""
#~ "doing\n"
#~ " * the work, then switching back to SP0 before returning.\n"
#~ " *\n"
-#~ " * Switching to SPx and calling the Rust handler takes 16 instructions. "
-#~ "To\n"
+#~ " * Switching to SPx and calling the Rust handler takes 16 instructions. To\n"
#~ " * restore and return we need an additional 16 instructions, so we can "
#~ "implement\n"
#~ " * the whole handler within the allotted 32 instructions.\n"
@@ -25943,8 +25471,7 @@ msgstr ""
#~ " * This also works for exceptions taken from EL0, if we don't care about\n"
#~ " * non-volatile registers.\n"
#~ " *\n"
-#~ " * Saving state and jumping to the Rust handler takes 15 instructions, "
-#~ "and\n"
+#~ " * Saving state and jumping to the Rust handler takes 15 instructions, and\n"
#~ " * restoring and returning also takes 15 instructions, so we can fit the "
#~ "whole\n"
#~ " * handler in 30 instructions, under the limit of 32.\n"
@@ -26036,8 +25563,7 @@ msgstr ""
#~ " *\n"
#~ " * Unless required by applicable law or agreed to in writing, software\n"
#~ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ " * See the License for the specific language governing permissions and\n"
#~ " * limitations under the License.\n"
#~ " */\n"
@@ -26068,8 +25594,7 @@ msgstr ""
#~ "\tstp x29, x30, [sp, #8 * 20]\n"
#~ "\n"
#~ "\t/*\n"
-#~ "\t * Save elr_el1 & spsr_el1. This such that we can take nested "
-#~ "exception\n"
+#~ "\t * Save elr_el1 & spsr_el1. This such that we can take nested exception\n"
#~ "\t * and still be able to unwind.\n"
#~ "\t */\n"
#~ "\tmrs x0, elr_el1\n"
@@ -26078,10 +25603,9 @@ msgstr ""
#~ ".endm\n"
#~ "\n"
#~ "/**\n"
-#~ " * Restores the volatile registers from the stack. This currently takes "
-#~ "14\n"
-#~ " * instructions, so it can be used in exception handlers while still "
-#~ "leaving 18\n"
+#~ " * Restores the volatile registers from the stack. This currently takes 14\n"
+#~ " * instructions, so it can be used in exception handlers while still leaving "
+#~ "18\n"
#~ " * instructions left; if paired with save_volatile_to_stack, there are 4\n"
#~ " * instructions to spare.\n"
#~ " */\n"
@@ -26114,8 +25638,7 @@ msgstr ""
#~ "doing\n"
#~ " * the work, then switching back to SP0 before returning.\n"
#~ " *\n"
-#~ " * Switching to SPx and calling the Rust handler takes 16 instructions. "
-#~ "To\n"
+#~ " * Switching to SPx and calling the Rust handler takes 16 instructions. To\n"
#~ " * restore and return we need an additional 16 instructions, so we can "
#~ "implement\n"
#~ " * the whole handler within the allotted 32 instructions.\n"
@@ -26139,8 +25662,7 @@ msgstr ""
#~ " * This also works for exceptions taken from EL0, if we don't care about\n"
#~ " * non-volatile registers.\n"
#~ " *\n"
-#~ " * Saving state and jumping to the Rust handler takes 15 instructions, "
-#~ "and\n"
+#~ " * Saving state and jumping to the Rust handler takes 15 instructions, and\n"
#~ " * restoring and returning also takes 15 instructions, so we can fit the "
#~ "whole\n"
#~ " * handler in 30 instructions, under the limit of 32.\n"
@@ -26233,8 +25755,7 @@ msgstr ""
#~ " *\n"
#~ " * Unless required by applicable law or agreed to in writing, software\n"
#~ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ " * See the License for the specific language governing permissions and\n"
#~ " * limitations under the License.\n"
#~ " */\n"
@@ -26280,8 +25801,7 @@ msgstr ""
#~ " *\n"
#~ " * Unless required by applicable law or agreed to in writing, software\n"
#~ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ " * See the License for the specific language governing permissions and\n"
#~ " * limitations under the License.\n"
#~ " */\n"
@@ -26328,8 +25848,7 @@ msgstr ""
#~ " *\n"
#~ " * Unless required by applicable law or agreed to in writing, software\n"
#~ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ " * See the License for the specific language governing permissions and\n"
#~ " * limitations under the License.\n"
#~ " */\n"
@@ -26374,8 +25893,7 @@ msgstr ""
#~ "\trodata_end = .;\n"
#~ "\n"
#~ "\t/*\n"
-#~ "\t * Collect together the read-write data including .bss at the end "
-#~ "which\n"
+#~ "\t * Collect together the read-write data including .bss at the end which\n"
#~ "\t * will be zero'd by the entry code.\n"
#~ "\t */\n"
#~ "\t.data : ALIGN(4096) {\n"
@@ -26438,8 +25956,7 @@ msgstr ""
#~ " *\n"
#~ " * Unless required by applicable law or agreed to in writing, software\n"
#~ " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
-#~ "implied.\n"
+#~ " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
#~ " * See the License for the specific language governing permissions and\n"
#~ " * limitations under the License.\n"
#~ " */\n"
@@ -26484,8 +26001,7 @@ msgstr ""
#~ "\trodata_end = .;\n"
#~ "\n"
#~ "\t/*\n"
-#~ "\t * Collect together the read-write data including .bss at the end "
-#~ "which\n"
+#~ "\t * Collect together the read-write data including .bss at the end which\n"
#~ "\t * will be zero'd by the entry code.\n"
#~ "\t */\n"
#~ "\t.data : ALIGN(4096) {\n"
@@ -26552,18 +26068,18 @@ msgstr ""
#~ msgstr "cargo clean"
#~ msgid ""
-#~ "Notice that the thread is stopped before it reaches 10 --- the main "
-#~ "thread is not waiting."
+#~ "Notice that the thread is stopped before it reaches 10 --- the main thread "
+#~ "is not waiting."
#~ msgstr ""
#~ "Observa que el hilo se detiene antes de llegar a 10; el hilo principal no "
#~ "está esperando."
#~ msgid ""
-#~ "Rust uses the type system to enforce synchronization of shared data. This "
-#~ "is primarily done via two types:"
+#~ "Rust uses the type system to enforce synchronization of shared data. This is "
+#~ "primarily done via two types:"
#~ msgstr ""
-#~ "Rust utiliza el sistema de tipos para implementar la sincronización de "
-#~ "los datos compartidos. Esto se hace principalmente a través de dos tipos:"
+#~ "Rust utiliza el sistema de tipos para implementar la sincronización de los "
+#~ "datos compartidos. Esto se hace principalmente a través de dos tipos:"
#~ msgid ""
#~ "[`Arc`](https://doc.rust-lang.org/std/sync/struct.Arc.html), atomic "
@@ -26575,11 +26091,11 @@ msgstr ""
#~ "encarga de desasignar `T` cuando se elimina la última referencia."
#~ msgid ""
-#~ "[`Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex.html): "
-#~ "ensures mutually exclusive access to the `T` value."
+#~ "[`Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex.html): ensures "
+#~ "mutually exclusive access to the `T` value."
#~ msgstr ""
-#~ "[`Mutex