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`](https://doc.rust-lang.org/std/sync/struct.Mutex.html): " -#~ "asegura el acceso mutuamente excluyente al valor `T`." +#~ "[`Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex.html): asegura " +#~ "el acceso mutuamente excluyente al valor `T`." #~ msgid "Let us practice our new concurrency skills with" #~ msgstr "Vamos a practicar nuestras nuevas habilidades de concurrencia con" @@ -26591,25 +26107,23 @@ msgstr "" #~ "Multi-threaded link checker: a larger project where you'll use Cargo to " #~ "download dependencies and then check links in parallel." #~ msgstr "" -#~ "El comprobador de enlaces multihilo: un proyecto más grande donde " -#~ "utilizarás Cargo para descargar dependencias y luego comprobar los " -#~ "enlaces en paralelo." +#~ "El comprobador de enlaces multihilo: un proyecto más grande donde utilizarás " +#~ "Cargo para descargar dependencias y luego comprobar los enlaces en paralelo." #~ msgid "" -#~ "For this, you will need an HTTP client such as [`reqwest`](https://docs." -#~ "rs/reqwest/). Create a new Cargo project and `reqwest` it as a dependency " -#~ "with:" +#~ "For this, you will need an HTTP client such as [`reqwest`](https://docs.rs/" +#~ "reqwest/). Create a new Cargo project and `reqwest` it as a dependency with:" #~ msgstr "" #~ "Para ello, necesitarás un cliente HTTP como [`reqwest`](https://docs.rs/" -#~ "reqwest/). Crea un proyecto de Cargo y aplica `reqwest` como una " -#~ "dependencia con:" +#~ "reqwest/). Crea un proyecto de Cargo y aplica `reqwest` como una dependencia " +#~ "con:" #~ msgid "" -#~ "You will also need a way to find links. We can use [`scraper`](https://" -#~ "docs.rs/scraper/) for that:" +#~ "You will also need a way to find links. We can use [`scraper`](https://docs." +#~ "rs/scraper/) for that:" #~ msgstr "" -#~ "También necesitarás una forma de encontrar enlaces. Podemos usar " -#~ "[`scraper`](https://docs.rs/scraper/) para eso:" +#~ "También necesitarás una forma de encontrar enlaces. Podemos usar [`scraper`]" +#~ "(https://docs.rs/scraper/) para eso:" #~ msgid "" #~ "Finally, we'll need some way of handling errors. We use [`thiserror`]" @@ -26634,13 +26148,13 @@ msgstr "" #~ msgstr "Flujo de Control de Futuros" #~ msgid "" -#~ "Futures can be combined together to produce concurrent compute flow " -#~ "graphs. We have already seen tasks, that function as independent threads " -#~ "of execution." +#~ "Futures can be combined together to produce concurrent compute flow graphs. " +#~ "We have already seen tasks, that function as independent threads of " +#~ "execution." #~ msgstr "" -#~ "Los futuros pueden combinarse para producir gráficos de flujo de " -#~ "computación simultáneos. Ya hemos visto tareas que funcionan como hilos " -#~ "de ejecución independientes." +#~ "Los futuros pueden combinarse para producir gráficos de flujo de computación " +#~ "simultáneos. Ya hemos visto tareas que funcionan como hilos de ejecución " +#~ "independientes." #~ msgid "[Join](control-flow/join.md)" #~ msgstr "[Join](control-flow/join.md)" @@ -26665,9 +26179,9 @@ msgstr "" #~ msgid "" #~ "Async methods in traits are not yet supported in the stable channel ([An " -#~ "experimental feature exists in nightly and should be stabilized in the " -#~ "mid term.](https://blog.rust-lang.org/inside-rust/2022/11/17/async-fn-in-" -#~ "trait-nightly.html))" +#~ "experimental feature exists in nightly and should be stabilized in the mid " +#~ "term.](https://blog.rust-lang.org/inside-rust/2022/11/17/async-fn-in-trait-" +#~ "nightly.html))" #~ msgstr "" #~ "Los métodos asíncronos en traits todavía no son compatibles con el canal " #~ "estable. ([Existe una característica experimental en nightly que debería " @@ -26677,23 +26191,22 @@ msgstr "" #~ msgid "" #~ "To practice your Async Rust skills, we have again two exercises for you:" #~ msgstr "" -#~ "Para practicar tus habilidades con async de Rust, tenemos otros dos " -#~ "nuevos ejercicios:" +#~ "Para practicar tus habilidades con async de Rust, tenemos otros dos nuevos " +#~ "ejercicios:" #~ msgid "" -#~ "Dining philosophers: we already saw this problem in the morning. This " -#~ "time you are going to implement it with Async Rust." +#~ "Dining philosophers: we already saw this problem in the morning. This time " +#~ "you are going to implement it with Async Rust." #~ msgstr "" -#~ "La cena de los filósofos: ya hemos visto este problema por la mañana. " -#~ "Esta vez vas a implementarlo con async de Rust." +#~ "La cena de los filósofos: ya hemos visto este problema por la mañana. Esta " +#~ "vez vas a implementarlo con async de Rust." #~ msgid "" #~ "A Broadcast Chat Application: this is a larger project that allows you " #~ "experiment with more advanced Async Rust features." #~ msgstr "" -#~ "Una aplicación de chat de difusión: se trata de un proyecto más grande " -#~ "que te permite experimentar con características más avanzadas de async de " -#~ "Rust." +#~ "Una aplicación de chat de difusión: se trata de un proyecto más grande que " +#~ "te permite experimentar con características más avanzadas de async de Rust." #~ msgid "Concurrency Afternoon Exercise" #~ msgstr "Concurrencia: Ejercicios de la Tarde" @@ -26711,13 +26224,12 @@ msgstr "" #~ msgid "" #~ "// To avoid a deadlock, we have to break the symmetry\n" -#~ " // somewhere. This will swap the forks without " -#~ "deinitializing\n" +#~ " // somewhere. This will swap the forks without deinitializing\n" #~ " // either of them.\n" #~ msgstr "" #~ "// Para evitar un interbloqueo, tenemos que romper la simetría\n" -#~ " // en algún lugar. De este modo, se cambiarán los tenedores " -#~ "sin desinicializar\n" +#~ " // en algún lugar. De este modo, se cambiarán los tenedores sin " +#~ "desinicializar\n" #~ " // ninguno de ellos.\n" #~ msgid "([back to exercise](chat-app.md))" @@ -26928,15 +26440,14 @@ msgstr "" #~ msgid "Concurrency Afternoon" #~ msgstr "Concurrencia: tarde" -#~ msgid "" -#~ "Day 1: Basic Rust, syntax, control flow, creating and consuming values." +#~ msgid "Day 1: Basic Rust, syntax, control flow, creating and consuming values." #~ msgstr "" #~ "Día 1: Rust Básico, sintaxis, control de flujo, creación y consumo de " #~ "valores." #~ msgid "" -#~ "Day 2: Memory management, ownership, compound data types, and the " -#~ "standard library." +#~ "Day 2: Memory management, ownership, compound data types, and the standard " +#~ "library." #~ msgstr "" #~ "Día 2: Gestión de memoria, _ownership_ (propiedad), tipos de datos " #~ "compuestos y la biblioteca estándar." @@ -26972,27 +26483,27 @@ msgstr "" #, fuzzy #~ msgid "" -#~ "We suggest using [VS Code](https://code.visualstudio.com/) to edit the " -#~ "code (but any LSP compatible editor works with rust-analyzer[3](https://" -#~ "rust-analyzer.github.io/))." +#~ "We suggest using [VS Code](https://code.visualstudio.com/) to edit the code " +#~ "(but any LSP compatible editor works with rust-analyzer[3](https://rust-" +#~ "analyzer.github.io/))." #~ msgstr "" -#~ "Recomendamos usar [VS Code](https://code.visualstudio.com/) para editar " -#~ "el código (aunque cualquier editor compatible con LSP funciona con [rust-" +#~ "Recomendamos usar [VS Code](https://code.visualstudio.com/) para editar el " +#~ "código (aunque cualquier editor compatible con LSP funciona con [rust-" #~ "analyzer](https://rust-analyzer.github.io/))." #~ msgid "" #~ "Some folks also like to use the [JetBrains](https://www.jetbrains.com/" #~ "clion/) family of IDEs, which do their own analysis but have their own " -#~ "tradeoffs. If you prefer them, you can install the [Rust Plugin](https://" -#~ "www.jetbrains.com/rust/). Please take note that as of January 2023 " -#~ "debugging only works on the CLion version of the JetBrains IDEA suite." +#~ "tradeoffs. If you prefer them, you can install the [Rust Plugin](https://www." +#~ "jetbrains.com/rust/). Please take note that as of January 2023 debugging " +#~ "only works on the CLion version of the JetBrains IDEA suite." #~ msgstr "" -#~ "A algunos compañeros también les gusta usar la familia [JetBrains]" -#~ "(https://www.jetbrains.com/clion/) de IDEs, que hacen sus propios " -#~ "análisis, pero también tienen inconvenientes. Si lo prefieres, puedes " -#~ "instalar el [Rust Plugin](https://www.jetbrains.com/rust/). Ten en cuenta " -#~ "que, a partir de enero del 2023, la depuración solo funciona en la " -#~ "versión CLion del paquete de JetBrains IDEA." +#~ "A algunos compañeros también les gusta usar la familia [JetBrains](https://" +#~ "www.jetbrains.com/clion/) de IDEs, que hacen sus propios análisis, pero " +#~ "también tienen inconvenientes. Si lo prefieres, puedes instalar el [Rust " +#~ "Plugin](https://www.jetbrains.com/rust/). Ten en cuenta que, a partir de " +#~ "enero del 2023, la depuración solo funciona en la versión CLion del paquete " +#~ "de JetBrains IDEA." #~ msgid "" #~ "```rust,editable\n" @@ -27083,8 +26594,8 @@ msgstr "" #~ "```" #~ msgid "" -#~ "Control flow constructs: `if`, `if let`, `while`, `while let`, `break`, " -#~ "and `continue`." +#~ "Control flow constructs: `if`, `if let`, `while`, `while let`, `break`, and " +#~ "`continue`." #~ msgstr "" #~ "Control de flujo: `if`, `if let`, `while`, `while let`, `break`, y " #~ "`continue`." @@ -27095,18 +26606,17 @@ msgstr "" #~ "major feature and we should show students this right away." #~ msgstr "" #~ "La idea del primer día es mostrar _lo suficiente_ de Rustcomo para poder " -#~ "hablar del famoso _borrow checker_. La forma en que Rust gestiona la " -#~ "memoria es una característica importante y debemos mostrarla a los " -#~ "estudiantes desde el principio." +#~ "hablar del famoso _borrow checker_. La forma en que Rust gestiona la memoria " +#~ "es una característica importante y debemos mostrarla a los estudiantes desde " +#~ "el principio." #~ msgid "" -#~ "If you're teaching this in a classroom, this is a good place to go over " -#~ "the schedule. We suggest splitting the day into two parts (following the " -#~ "slides):" +#~ "If you're teaching this in a classroom, this is a good place to go over the " +#~ "schedule. We suggest splitting the day into two parts (following the slides):" #~ msgstr "" -#~ "Si estás impartiendo el curso en un aula, este es un buen lugar para " -#~ "repasar el calendario. Te recomendamos que dividas el día en dos partes " -#~ "(siguiendo las diapositivas):" +#~ "Si estás impartiendo el curso en un aula, este es un buen lugar para repasar " +#~ "el calendario. Te recomendamos que dividas el día en dos partes (siguiendo " +#~ "las diapositivas):" #~ msgid "Morning: 9:00 to 12:00," #~ msgstr "Mañana: 9:00 to 12:00," @@ -27159,8 +26669,7 @@ msgstr "" #~ " let mut x: i32 = 6; // Variable mutable vinculante\n" #~ " print!(\"{x}\"); // Macro para printing, como printf\n" #~ " while x != 1 { // Sin paréntesis alrededor de las expresiones\n" -#~ " if x % 2 == 0 { // Operaciones matemáticas como en otros " -#~ "lenguajes\n" +#~ " if x % 2 == 0 { // Operaciones matemáticas como en otros lenguajes\n" #~ " x = x / 2;\n" #~ " } else {\n" #~ " x = 3 * x + 1;\n" @@ -27176,25 +26685,25 @@ msgstr "" #~ "will always end, but this is not yet proved. Edit the code and play with " #~ "different inputs." #~ msgstr "" -#~ "El código implementa la conjetura de Collatz: se cree que el bucle " -#~ "terminará siempre, pero aún no se ha demostrado. Edita el código y prueba " -#~ "con diferentes entradas." +#~ "El código implementa la conjetura de Collatz: se cree que el bucle terminará " +#~ "siempre, pero aún no se ha demostrado. Edita el código y prueba con " +#~ "diferentes entradas." #~ msgid "" #~ "Explain that all variables are statically typed. Try removing `i32` to " -#~ "trigger type inference. Try with `i8` instead and trigger a runtime " -#~ "integer overflow." +#~ "trigger type inference. Try with `i8` instead and trigger a runtime integer " +#~ "overflow." #~ msgstr "" -#~ "Explica que todas las variables están tipadas estáticamente. Prueba a " -#~ "quitar `i32` para activar la inferencia de tipos. Prueba con `i8` y " -#~ "provoca un desbordamiento de enteros en _runtime_." +#~ "Explica que todas las variables están tipadas estáticamente. Prueba a quitar " +#~ "`i32` para activar la inferencia de tipos. Prueba con `i8` y provoca un " +#~ "desbordamiento de enteros en _runtime_." #~ msgid "Change `let mut x` to `let x`, discuss the compiler error." #~ msgstr "Cambia `let mut x` por `let x` y discute el error del compilador." #~ msgid "" -#~ "Show how `print!` gives a compilation error if the arguments don't match " -#~ "the format string." +#~ "Show how `print!` gives a compilation error if the arguments don't match the " +#~ "format string." #~ msgstr "" #~ "Muestra cómo `print!` da un error de compilación si los argumentos no " #~ "coinciden con la cadena de formato." @@ -27203,24 +26712,24 @@ msgstr "" #~ "Show how you need to use `{}` as a placeholder if you want to print an " #~ "expression which is more complex than just a single variable." #~ msgstr "" -#~ "Muestra cómo se debe usar `{}` como marcador de posición para poder " -#~ "imprimir una expresión más compleja que una sola variable." +#~ "Muestra cómo se debe usar `{}` como marcador de posición para poder imprimir " +#~ "una expresión más compleja que una sola variable." #~ msgid "" #~ "Show the students the standard library, show them how to search for `std::" #~ "fmt` which has the rules of the formatting mini-language. It's important " #~ "that the students become familiar with searching in the standard library." #~ msgstr "" -#~ "Muestra a los alumnos la biblioteca estándar y cómo buscar `std::fmt`, " -#~ "que tiene las reglas del mini-lenguaje de formato. Es importante que los " -#~ "alumnos se familiaricen con la búsqueda en la biblioteca estándar." +#~ "Muestra a los alumnos la biblioteca estándar y cómo buscar `std::fmt`, que " +#~ "tiene las reglas del mini-lenguaje de formato. Es importante que los alumnos " +#~ "se familiaricen con la búsqueda en la biblioteca estándar." #~ msgid "" -#~ "In a shell `rustup doc std::fmt` will open a browser on the local std::" -#~ "fmt documentation" +#~ "In a shell `rustup doc std::fmt` will open a browser on the local std::fmt " +#~ "documentation" #~ msgstr "" -#~ "En un shell, `rustup doc std::fmt` abrirá un navegador en la " -#~ "documentación local de std::fmt." +#~ "En un shell, `rustup doc std::fmt` abrirá un navegador en la documentación " +#~ "local de std::fmt." #~ msgid "Compile time memory safety." #~ msgstr "Seguridad de la memoria en tiempo de compilación." @@ -27240,44 +26749,44 @@ msgstr "" #~ msgid "" #~ "It is possible to produce memory leaks in (safe) Rust. Some examples are:" #~ msgstr "" -#~ "Es posible producir pérdidas de memoria en (_safe_) Rust. Estos son " -#~ "algunos ejemplos:" +#~ "Es posible producir pérdidas de memoria en (_safe_) Rust. Estos son algunos " +#~ "ejemplos:" #~ msgid "" #~ "You can use [`Box::leak`](https://doc.rust-lang.org/std/boxed/struct.Box." -#~ "html#method.leak) to leak a pointer. A use of this could be to get " -#~ "runtime-initialized and runtime-sized static variables" +#~ "html#method.leak) to leak a pointer. A use of this could be to get runtime-" +#~ "initialized and runtime-sized static variables" #~ msgstr "" #~ "Puedes usar [`Box::leak`](https://doc.rust-lang.org/std/boxed/struct.Box." #~ "html#method.leak) para perder un puntero. Esto podría usarse para obtener " #~ "variables estáticas iniciadas y medidas en _runtime_." #~ msgid "" -#~ "You can use [`std::mem::forget`](https://doc.rust-lang.org/std/mem/fn." -#~ "forget.html) to make the compiler \"forget\" about a value (meaning the " -#~ "destructor is never run)." +#~ "You can use [`std::mem::forget`](https://doc.rust-lang.org/std/mem/fn.forget." +#~ "html) to make the compiler \"forget\" about a value (meaning the destructor " +#~ "is never run)." #~ msgstr "" -#~ "Puedes usar [`std::mem::forget`](https://doc.rust-lang.org/std/mem/fn." -#~ "forget.html) para que el compilador \"olvide\" un valor (lo que significa " -#~ "que el destructor nunca se ejecuta)." +#~ "Puedes usar [`std::mem::forget`](https://doc.rust-lang.org/std/mem/fn.forget." +#~ "html) para que el compilador \"olvide\" un valor (lo que significa que el " +#~ "destructor nunca se ejecuta)." #~ msgid "" -#~ "You can also accidentally create a [reference cycle](https://doc.rust-" -#~ "lang.org/book/ch15-06-reference-cycles.html) with `Rc` or `Arc`." +#~ "You can also accidentally create a [reference cycle](https://doc.rust-lang." +#~ "org/book/ch15-06-reference-cycles.html) with `Rc` or `Arc`." #~ msgstr "" #~ "También puedes crear por accidente una [referencia circular](https://doc." #~ "rust-lang.org/book/ch15-06-reference-cycles.html) con `Rc` o `Arc`." #~ msgid "" -#~ "In fact, some will consider infinitely populating a collection a memory " -#~ "leak and Rust does not protect from those." +#~ "In fact, some will consider infinitely populating a collection a memory leak " +#~ "and Rust does not protect from those." #~ msgstr "" -#~ "De hecho, algunos consideran que poblar de forma infinita una colección " -#~ "es una fuga de memoria y Rust no protege de ellas." +#~ "De hecho, algunos consideran que poblar de forma infinita una colección es " +#~ "una fuga de memoria y Rust no protege de ellas." #~ msgid "" -#~ "For the purpose of this course, \"No memory leaks\" should be understood " -#~ "as \"Pretty much no _accidental_ memory leaks\"." +#~ "For the purpose of this course, \"No memory leaks\" should be understood as " +#~ "\"Pretty much no _accidental_ memory leaks\"." #~ msgstr "" #~ "En este curso, \"sin pérdidas de memoria\" debe entenderse como\n" #~ " \"casi ninguna pérdida de memoria _accidental_\"." @@ -27287,25 +26796,24 @@ msgstr "" #~ "lang.org/rustc/codegen-options/index.html#overflow-checks) compile-time " #~ "flag. If enabled, the program will panic (a controlled crash of the " #~ "program), otherwise you get wrap-around semantics. By default, you get " -#~ "panics in debug mode (`cargo build`) and wrap-around in release mode " -#~ "(`cargo build --release`)." +#~ "panics in debug mode (`cargo build`) and wrap-around in release mode (`cargo " +#~ "build --release`)." #~ msgstr "" -#~ "El overflow en Integer es definido vía un _flag_ en tiempo de " -#~ "compilación. Las opciones son alertas panic (un crash controlado del " -#~ "programa) o una semántica de _wrap-around_. Por defecto, obtienes el " -#~ "alerta en modo depuración (`cargo build`) y _wrap-around_ en el modo " -#~ "release (`cargo build —" +#~ "El overflow en Integer es definido vía un _flag_ en tiempo de compilación. " +#~ "Las opciones son alertas panic (un crash controlado del programa) o una " +#~ "semántica de _wrap-around_. Por defecto, obtienes el alerta en modo " +#~ "depuración (`cargo build`) y _wrap-around_ en el modo release (`cargo build —" #~ msgid "" -#~ "Bounds checking cannot be disabled with a compiler flag. It can also not " -#~ "be disabled directly with the `unsafe` keyword. However, `unsafe` allows " -#~ "you to call functions such as `slice::get_unchecked` which does not do " -#~ "bounds checking." +#~ "Bounds checking cannot be disabled with a compiler flag. It can also not be " +#~ "disabled directly with the `unsafe` keyword. However, `unsafe` allows you to " +#~ "call functions such as `slice::get_unchecked` which does not do bounds " +#~ "checking." #~ msgstr "" #~ "La comprobación de límites no se puede deshabilitar con una bandera de " -#~ "compilador. Tampoco se puede inhabilitar directamente con la palabra " -#~ "clave `unsafe`. Sin embargo, `unsafe` te permite llamar a funciones como " -#~ "`slice::get_unchecked`, que no realiza comprobaciones de límites." +#~ "compilador. Tampoco se puede inhabilitar directamente con la palabra clave " +#~ "`unsafe`. Sin embargo, `unsafe` te permite llamar a funciones como `slice::" +#~ "get_unchecked`, que no realiza comprobaciones de límites." #~ msgid "Rust is built with all the experience gained in the last decades." #~ msgstr "" @@ -27319,21 +26827,21 @@ msgstr "" #~ msgstr "Herramientas" #~ msgid "" -#~ "Zero-cost abstractions, similar to C++, means that you don't have to " -#~ "'pay' for higher-level programming constructs with memory or CPU. For " -#~ "example, writing a loop using `for` should result in roughly the same low " -#~ "level instructions as using the `.iter().fold()` construct." +#~ "Zero-cost abstractions, similar to C++, means that you don't have to 'pay' " +#~ "for higher-level programming constructs with memory or CPU. For example, " +#~ "writing a loop using `for` should result in roughly the same low level " +#~ "instructions as using the `.iter().fold()` construct." #~ msgstr "" #~ "Las abstracciones sin coste, similares a las de C++, significan que no " #~ "tienes que 'pagar' por construcciones de programación de alto nivel con " -#~ "memoria o CPU. Por ejemplo, escribir un bucle utilizando `for` debería " -#~ "dar como resultado prácticamente las mismas instrucciones de bajo nivel " -#~ "que con la construcción `.iter().fold()`." +#~ "memoria o CPU. Por ejemplo, escribir un bucle utilizando `for` debería dar " +#~ "como resultado prácticamente las mismas instrucciones de bajo nivel que con " +#~ "la construcción `.iter().fold()`." #~ msgid "" -#~ "It may be worth mentioning that Rust enums are 'Algebraic Data Types', " -#~ "also known as 'sum types', which allow the type system to express things " -#~ "like `Option` and `Result`." +#~ "It may be worth mentioning that Rust enums are 'Algebraic Data Types', also " +#~ "known as 'sum types', which allow the type system to express things like " +#~ "`Option` and `Result`." #~ msgstr "" #~ "Merece la pena mencionar que los enums de Rust son tipos de datos " #~ "algebraicos, también denominados 'tipos suma', que permiten al sistema de " @@ -27342,23 +26850,23 @@ msgstr "" #~ msgid "" #~ "Remind people to read the errors --- many developers have gotten used to " #~ "ignore lengthy compiler output. The Rust compiler is significantly more " -#~ "talkative than other compilers. It will often provide you with " -#~ "_actionable_ feedback, ready to copy-paste into your code." +#~ "talkative than other compilers. It will often provide you with _actionable_ " +#~ "feedback, ready to copy-paste into your code." #~ msgstr "" -#~ "Recuerda a los alumnos que lean los errores, ya que muchos " -#~ "desarrolladores se han acostumbrado a ignorar los largos resultados del " -#~ "compilador. El compilador de Rust es mucho más comunicativo que otros. A " -#~ "menudo, te proporcionará sugerencias _prácticas_, que puedes copiar y " -#~ "pegar en tu código." +#~ "Recuerda a los alumnos que lean los errores, ya que muchos desarrolladores " +#~ "se han acostumbrado a ignorar los largos resultados del compilador. El " +#~ "compilador de Rust es mucho más comunicativo que otros. A menudo, te " +#~ "proporcionará sugerencias _prácticas_, que puedes copiar y pegar en tu " +#~ "código." #~ msgid "" -#~ "The Rust standard library is small compared to languages like Java, " -#~ "Python, and Go. Rust does not come with several things you might consider " -#~ "standard and essential:" +#~ "The Rust standard library is small compared to languages like Java, Python, " +#~ "and Go. Rust does not come with several things you might consider standard " +#~ "and essential:" #~ msgstr "" -#~ "La biblioteca estándar de Rust es pequeña en comparación con la de " -#~ "lenguajes como Java, Python o Go. Rust no incluye elementos que se " -#~ "podrían considerar estándar o esenciales:" +#~ "La biblioteca estándar de Rust es pequeña en comparación con la de lenguajes " +#~ "como Java, Python o Go. Rust no incluye elementos que se podrían considerar " +#~ "estándar o esenciales:" #~ msgid "a random number generator, but see [rand](https://docs.rs/rand/)." #~ msgstr "" @@ -27378,28 +26886,28 @@ msgstr "" #~ msgid "" #~ "The reasoning behind this is that functionality in the standard library " #~ "cannot go away, so it has to be very stable. For the examples above, the " -#~ "Rust community is still working on finding the best solution --- and " -#~ "perhaps there isn't a single \"best solution\" for some of these things." +#~ "Rust community is still working on finding the best solution --- and perhaps " +#~ "there isn't a single \"best solution\" for some of these things." #~ msgstr "" #~ "La razón es que la funcionalidad de la biblioteca estándar no puede " #~ "desaparecer, por lo que tiene que ser muy estable. En los ejemplos " -#~ "anteriores, la comunidad de Rust todavía está trabajando para encontrar " -#~ "la mejor solución, y puede que no exista una única \"mejor solución\" " -#~ "para algunas de estas cuestiones." +#~ "anteriores, la comunidad de Rust todavía está trabajando para encontrar la " +#~ "mejor solución, y puede que no exista una única \"mejor solución\" para " +#~ "algunas de estas cuestiones." #~ msgid "" #~ "Rust comes with a built-in package manager in the form of Cargo and this " -#~ "makes it trivial to download and compile third-party crates. A " -#~ "consequence of this is that the standard library can be smaller." +#~ "makes it trivial to download and compile third-party crates. A consequence " +#~ "of this is that the standard library can be smaller." #~ msgstr "" -#~ "Rust incluye un gestor de paquetes integrado con la forma de Cargo, lo " -#~ "que hace que resulte sencillo descargar y compilar crates de terceros. " -#~ "Como consecuencia, la biblioteca estándar puede ser más pequeña." +#~ "Rust incluye un gestor de paquetes integrado con la forma de Cargo, lo que " +#~ "hace que resulte sencillo descargar y compilar crates de terceros. Como " +#~ "consecuencia, la biblioteca estándar puede ser más pequeña." #~ msgid "" #~ "Discovering good third-party crates can be a problem. Sites like help with this by letting you compare health metrics for crates " -#~ "to find a good and trusted one." +#~ "lib.rs/> help with this by letting you compare health metrics for crates to " +#~ "find a good and trusted one." #~ msgstr "" #~ "Encontrar buenos crates de terceros puede ser un problema. Sitios como " #~ " te ayudan a comparar métricas de salud de crates para " @@ -27409,9 +26917,8 @@ msgstr "" #~ "[rust-analyzer](https://rust-analyzer.github.io/) is a well supported LSP " #~ "implementation used in major IDEs and text editors." #~ msgstr "" -#~ "[rust-analyzer](https://rust-analyzer.github.io/) es una implementación " -#~ "de LSP bien respaldada y utilizada en los principales IDE y editores de " -#~ "texto." +#~ "[rust-analyzer](https://rust-analyzer.github.io/) es una implementación de " +#~ "LSP bien respaldada y utilizada en los principales IDE y editores de texto." #~ msgid "Like C++, Rust has references:" #~ msgstr "Al igual que C++, Rust tiene referencias:" @@ -27420,20 +26927,19 @@ msgstr "" #~ "We must dereference `ref_x` when assigning to it, similar to C and C++ " #~ "pointers." #~ msgstr "" -#~ "Debemos desreferenciar `ref_x` al asignarle un valor, de forma similar a " -#~ "los punteros de C y C++." +#~ "Debemos desreferenciar `ref_x` al asignarle un valor, de forma similar a los " +#~ "punteros de C y C++." #~ msgid "" -#~ "References that are declared as `mut` can be bound to different values " -#~ "over their lifetime." +#~ "References that are declared as `mut` can be bound to different values over " +#~ "their lifetime." #~ msgstr "" #~ "Las referencias que se declaran como `mut` se pueden vincular a distintos " #~ "valores durante su tiempo de vida." #~ msgid "A reference is said to \"borrow\" the value it refers to." #~ msgstr "" -#~ "Se dice que una referencia \"toma prestado\" el valor al que hace " -#~ "referencia." +#~ "Se dice que una referencia \"toma prestado\" el valor al que hace referencia." #~ msgid "" #~ "Rust is tracking the lifetimes of all references to ensure they live long " @@ -27460,8 +26966,8 @@ msgstr "" #~ "(https://es.wikipedia.org/wiki/Fizz_buzz):" #~ msgid "" -#~ "We refer in `main` to a function written below. Neither forward " -#~ "declarations nor headers are necessary. " +#~ "We refer in `main` to a function written below. Neither forward declarations " +#~ "nor headers are necessary. " #~ msgstr "" #~ "En `main` hacemos referencia a una función escrita más abajo. No se " #~ "necesitan declaraciones de redirección ni encabezados. " @@ -27480,27 +26986,27 @@ msgstr "" #~ "sintaxis especial `///`." #~ msgid "" -#~ "This course does not include rustdoc on slides, just to save space, but " -#~ "in real code they should be present." +#~ "This course does not include rustdoc on slides, just to save space, but in " +#~ "real code they should be present." #~ msgstr "" -#~ "Este curso no incluye diapositivas sobre rustdoc para ahorrar espacio, " -#~ "pero deben aparecer en el código real." +#~ "Este curso no incluye diapositivas sobre rustdoc para ahorrar espacio, pero " +#~ "deben aparecer en el código real." #~ msgid "" -#~ "Inner doc comments are discussed later (in the page on modules) and need " -#~ "not be addressed here." +#~ "Inner doc comments are discussed later (in the page on modules) and need not " +#~ "be addressed here." #~ msgstr "" -#~ "Los comentarios internos de los documentos se tratarán más adelante (en " -#~ "la página de módulos), no es necesario tratarlos aquí." +#~ "Los comentarios internos de los documentos se tratarán más adelante (en la " +#~ "página de módulos), no es necesario tratarlos aquí." #~ msgid "" #~ "Rustdoc comments can contain code snippets that we can run and test using " #~ "`cargo test`. We will discuss these tests in the [Testing section](../" #~ "testing/doc-tests.html)." #~ msgstr "" -#~ "Los comentarios de rustdoc pueden contener fragmentos de código que " -#~ "podemos ejecutar y probar utilizando `cargo test`. Hablaremos de esto en " -#~ "la [sección de pruebas](../testing/doc-tests.html)." +#~ "Los comentarios de rustdoc pueden contener fragmentos de código que podemos " +#~ "ejecutar y probar utilizando `cargo test`. Hablaremos de esto en la [sección " +#~ "de pruebas](../testing/doc-tests.html)." #~ msgid "" #~ "Methods are functions associated with a type. The `self` argument of a " @@ -27513,14 +27019,12 @@ msgstr "" #~ "We will look much more at methods in today's exercise and in tomorrow's " #~ "class." #~ msgstr "" -#~ "Abordaremos en mayor profundidad los métodos en el ejercicio de hoy y en " -#~ "la clase de mañana." +#~ "Abordaremos en mayor profundidad los métodos en el ejercicio de hoy y en la " +#~ "clase de mañana." -#~ msgid "" -#~ "Add a static method called `Rectangle::new` and call this from `main`:" +#~ msgid "Add a static method called `Rectangle::new` and call this from `main`:" #~ msgstr "" -#~ "Añade un método estático denominado `Rectangle::new` y llámalo desde " -#~ "`main`:" +#~ "Añade un método estático denominado `Rectangle::new` y llámalo desde `main`:" #~ msgid "" #~ "```rust,editable,compile_fail\n" @@ -27536,24 +27040,23 @@ msgstr "" #~ "```" #~ msgid "" -#~ "While _technically_, Rust does not have custom constructors, static " -#~ "methods are commonly used to initialize structs (but don't have to). The " -#~ "actual constructor, `Rectangle { width, height }`, could be called " -#~ "directly. See the [Rustnomicon](https://doc.rust-lang.org/nomicon/" -#~ "constructors.html)." +#~ "While _technically_, Rust does not have custom constructors, static methods " +#~ "are commonly used to initialize structs (but don't have to). The actual " +#~ "constructor, `Rectangle { width, height }`, could be called directly. See " +#~ "the [Rustnomicon](https://doc.rust-lang.org/nomicon/constructors.html)." #~ msgstr "" #~ "Aunque _técnicamente_ Rust no tiene constructores personalizados, los " #~ "métodos estáticos se utilizan habitualmente para inicializar estructuras, " -#~ "pero no es obligatorio. El constructor real, `Rectangle { width, height }" -#~ "`, podría llamarse directamente. Consulta el [Rustnomicon](https://doc." -#~ "rust-lang.org/nomicon/constructors.html)." +#~ "pero no es obligatorio. El constructor real, `Rectangle { width, height }`, " +#~ "podría llamarse directamente. Consulta el [Rustnomicon](https://doc.rust-" +#~ "lang.org/nomicon/constructors.html)." #~ msgid "" #~ "Add a `Rectangle::square(width: u32)` constructor to illustrate that such " #~ "static methods can take arbitrary parameters." #~ msgstr "" -#~ "Añade un constructor `Rectangle::square(width: u32)` para mostrar que " -#~ "esos métodos estáticos puede utilizar parámetros arbitrarios." +#~ "Añade un constructor `Rectangle::square(width: u32)` para mostrar que esos " +#~ "métodos estáticos puede utilizar parámetros arbitrarios." #~ msgid "Function Overloading" #~ msgstr "Sobrecarga de funciones" @@ -27577,12 +27080,12 @@ msgstr "" #~ msgstr "Sin embargo, los parámetros de función pueden ser genéricos:" #~ msgid "" -#~ "When using generics, the standard library's `Into` can provide a kind " -#~ "of limited polymorphism on argument types. We will see more details in a " -#~ "later section." +#~ "When using generics, the standard library's `Into` can provide a kind of " +#~ "limited polymorphism on argument types. We will see more details in a later " +#~ "section." #~ msgstr "" -#~ "Cuando se utilizan genéricos, el `Into` de la biblioteca estándar " -#~ "puede proporcionar una especie de polimorfismo limitado en los tipos de " +#~ "Cuando se utilizan genéricos, el `Into` de la biblioteca estándar puede " +#~ "proporcionar una especie de polimorfismo limitado en los tipos de " #~ "argumentos. Veremos más información al respecto en una sección posterior." #~ msgid "Day 1: Morning Exercises" @@ -27602,19 +27105,19 @@ msgstr "" #~ msgid "" #~ "Use a local Rust installation, if possible. This way you can get auto-" -#~ "completion in your editor. See the page about [Using Cargo](../../cargo." -#~ "md) for details on installing Rust." +#~ "completion in your editor. See the page about [Using Cargo](../../cargo.md) " +#~ "for details on installing Rust." #~ msgstr "" -#~ "Si es posible, utiliza una instalación local de Rust. De esta forma, " -#~ "podrás autocompletar datos en tu editor. Consulta la página sobre \\[cómo " -#~ "usar Cargo\\] para obtener más información sobre cómo instalar Rust." +#~ "Si es posible, utiliza una instalación local de Rust. De esta forma, podrás " +#~ "autocompletar datos en tu editor. Consulta la página sobre \\[cómo usar " +#~ "Cargo\\] para obtener más información sobre cómo instalar Rust." #~ msgid "Alternatively, use the Rust Playground." #~ msgstr "También puedes usar el playground de Rust." #~ msgid "" -#~ "The code snippets are not editable on purpose: the inline code snippets " -#~ "lose their state if you navigate away from the page." +#~ "The code snippets are not editable on purpose: the inline code snippets lose " +#~ "their state if you navigate away from the page." #~ msgstr "" #~ "Los fragmentos de código no son editables a propósito: los que están " #~ "insertados pierden su estado si se sale de la página." @@ -27624,47 +27127,47 @@ msgstr "" #~ "([unlike C++](https://en.cppreference.com/w/cpp/language/" #~ "implicit_conversion)). You can see this in a program like this:" #~ msgstr "" -#~ "Rust no aplicará automáticamente _conversiones implícitas_ entre tipos " -#~ "([a diferencia de C++](https://en.cppreference.com/w/cpp/language/" +#~ "Rust no aplicará automáticamente _conversiones implícitas_ entre tipos ([a " +#~ "diferencia de C++](https://en.cppreference.com/w/cpp/language/" #~ "implicit_conversion)). Puedes ver un ejemplo de esto en el siguiente " #~ "programa:" #~ msgid "" -#~ "The Rust integer types all implement the [`From`](https://doc.rust-" -#~ "lang.org/std/convert/trait.From.html) and [`Into`](https://doc.rust-" -#~ "lang.org/std/convert/trait.Into.html) traits to let us convert between " -#~ "them. The `From` trait has a single `from()` method and similarly, the " -#~ "`Into` trait has a single `into()` method. Implementing these traits " -#~ "is how a type expresses that it can be converted into another type." +#~ "The Rust integer types all implement the [`From`](https://doc.rust-lang." +#~ "org/std/convert/trait.From.html) and [`Into`](https://doc.rust-lang.org/" +#~ "std/convert/trait.Into.html) traits to let us convert between them. The " +#~ "`From` trait has a single `from()` method and similarly, the `Into` " +#~ "trait has a single `into()` method. Implementing these traits is how a type " +#~ "expresses that it can be converted into another type." #~ msgstr "" #~ "Todos los tipos de enteros de Rust implementan los traits [`From`]" #~ "(https://doc.rust-lang.org/std/convert/trait.From.html) y [`Into`]" #~ "(https://doc.rust-lang.org/std/convert/trait.Into.html) para permitirnos " -#~ "realizar conversiones entre ellos. El trait `From` tiene un único " -#~ "método `from()` y, del mismo modo, el trait `Into` tiene un único " -#~ "método `into()`. Un tipo expresa que se puede convertir en otro tipo " -#~ "implementando estos traits." +#~ "realizar conversiones entre ellos. El trait `From` tiene un único método " +#~ "`from()` y, del mismo modo, el trait `Into` tiene un único método " +#~ "`into()`. Un tipo expresa que se puede convertir en otro tipo implementando " +#~ "estos traits." #~ msgid "" #~ "The standard library has an implementation of `From for i16`, which " #~ "means that we can convert a variable `x` of type `i8` to an `i16` by " -#~ "calling `i16::from(x)`. Or, simpler, with `x.into()`, because `From " -#~ "for i16` implementation automatically create an implementation of " -#~ "`Into for i8`." +#~ "calling `i16::from(x)`. Or, simpler, with `x.into()`, because `From for " +#~ "i16` implementation automatically create an implementation of `Into for " +#~ "i8`." #~ msgstr "" -#~ "La biblioteca estándar implementa `From for i16`, lo que significa " -#~ "que podemos convertir una variable `x` del tipo `i8` a `i16` llamando a " -#~ "`i16::from(x)`. O, más sencillo, con `x.into()`, ya que la implementación " -#~ "de `From for i16` crea automáticamente una implementación de " -#~ "`Into for i8`." +#~ "La biblioteca estándar implementa `From for i16`, lo que significa que " +#~ "podemos convertir una variable `x` del tipo `i8` a `i16` llamando a `i16::" +#~ "from(x)`. O, más sencillo, con `x.into()`, ya que la implementación de " +#~ "`From for i16` crea automáticamente una implementación de `Into for " +#~ "i8`." #~ msgid "" -#~ "The same applies for your own `From` implementations for your own types, " -#~ "so it is sufficient to only implement `From` to get a respective `Into` " +#~ "The same applies for your own `From` implementations for your own types, so " +#~ "it is sufficient to only implement `From` to get a respective `Into` " #~ "implementation automatically." #~ msgstr "" -#~ "Lo mismo se aplica a tus implementaciones `From` para tus propios tipos, " -#~ "por lo que basta con implementar `From` para obtener la respectiva " +#~ "Lo mismo se aplica a tus implementaciones `From` para tus propios tipos, por " +#~ "lo que basta con implementar `From` para obtener la respectiva " #~ "implementación `Into` de forma automática." #~ msgid "Execute the above program and look at the compiler error." @@ -27678,16 +27181,14 @@ msgstr "" #~ "Change the types of `x` and `y` to other things (such as `f32`, `bool`, " #~ "`i128`) to see which types you can convert to which other types. Try " #~ "converting small types to big types and the other way around. Check the " -#~ "[standard library documentation](https://doc.rust-lang.org/std/convert/" -#~ "trait.From.html) to see if `From` is implemented for the pairs you " -#~ "check." +#~ "[standard library documentation](https://doc.rust-lang.org/std/convert/trait." +#~ "From.html) to see if `From` is implemented for the pairs you check." #~ msgstr "" -#~ "Cambia los tipos de `x` e `y` a otros elementos (por ejemplo, `f32`, " -#~ "`bool`, `i128`) para ver qué tipos puedes convertir. Prueba a convertir " -#~ "tipos pequeños en tipos grandes y viceversa. Consulta la [documentación " -#~ "de la biblioteca estándar](https://doc.rust-lang.org/std/convert/trait." -#~ "From.html) para comprobar si se ha implementado `From` en los pares " -#~ "que elijas." +#~ "Cambia los tipos de `x` e `y` a otros elementos (por ejemplo, `f32`, `bool`, " +#~ "`i128`) para ver qué tipos puedes convertir. Prueba a convertir tipos " +#~ "pequeños en tipos grandes y viceversa. Consulta la [documentación de la " +#~ "biblioteca estándar](https://doc.rust-lang.org/std/convert/trait.From.html) " +#~ "para comprobar si se ha implementado `From` en los pares que elijas." #~ msgid "Arrays and `for` Loops" #~ msgstr "Arrays y bucles`for`" @@ -27696,11 +27197,11 @@ msgstr "" #~ msgstr "Hemos visto que un array se puede declarar de la siguiente manera:" #~ msgid "" -#~ "You can print such an array by asking for its debug representation with " -#~ "`{:?}`:" +#~ "You can print such an array by asking for its debug representation with `{:?}" +#~ "`:" #~ msgstr "" -#~ "Puedes imprimir dicho array solicitando su representación de depuración " -#~ "con `{:?}`:" +#~ "Puedes imprimir dicho array solicitando su representación de depuración con " +#~ "`{:?}`:" #~ msgid "" #~ "Rust lets you iterate over things like arrays and ranges using the `for` " @@ -27713,18 +27214,18 @@ msgstr "" #~ msgstr "Pregunta Extra" #~ msgid "" -#~ "Could you use `&[i32]` slices instead of hard-coded 3 × 3 matrices for " -#~ "your argument and return types? Something like `&[&[i32]]` for a two-" -#~ "dimensional slice-of-slices. Why or why not?" +#~ "Could you use `&[i32]` slices instead of hard-coded 3 × 3 matrices for your " +#~ "argument and return types? Something like `&[&[i32]]` for a two-dimensional " +#~ "slice-of-slices. Why or why not?" #~ msgstr "" -#~ "¿Se podrían usar slices `&[i32]` en lugar de matrices de 3 × 3 " -#~ "predefinidas en el código para tus argumentos y tipos de resultados " -#~ "devueltos? Por ejemplo, `&[&[i32]]` para un slice de slices de dos " -#~ "dimensiones. ¿Por qué? ¿Por qué no?" +#~ "¿Se podrían usar slices `&[i32]` en lugar de matrices de 3 × 3 predefinidas " +#~ "en el código para tus argumentos y tipos de resultados devueltos? Por " +#~ "ejemplo, `&[&[i32]]` para un slice de slices de dos dimensiones. ¿Por qué? " +#~ "¿Por qué no?" #~ msgid "" -#~ "See the [`ndarray` crate](https://docs.rs/ndarray/) for a production " -#~ "quality implementation." +#~ "See the [`ndarray` crate](https://docs.rs/ndarray/) for a production quality " +#~ "implementation." #~ msgstr "" #~ "Consulta el [crate `ndarray`](https://docs.rs/ndarray/) para obtener una " #~ "implementación con calidad de producción." @@ -27741,8 +27242,8 @@ msgstr "" #~ "preview of issues of ownership that will come later in the afternoon." #~ msgstr "" #~ "El uso de la referencia `&array` dentro de `for n in &array` es una vista " -#~ "previa sutil de los problemas de propiedad que se tratarán más tarde por " -#~ "la tarde." +#~ "previa sutil de los problemas de propiedad que se tratarán más tarde por la " +#~ "tarde." #~ msgid "Without the `&`..." #~ msgstr "Sin el `&`..." @@ -27753,21 +27254,21 @@ msgstr "" #~ "rust-2021/IntoIterator-for-arrays.html)." #~ msgstr "" #~ "El bucle habría sido uno que consume el array. Este es un cambio " -#~ "[introducido en la edición de 2021](https://doc.rust-lang.org/edition-" -#~ "guide/rust-2021/IntoIterator-for-arrays.html)." +#~ "[introducido en la edición de 2021](https://doc.rust-lang.org/edition-guide/" +#~ "rust-2021/IntoIterator-for-arrays.html)." #~ msgid "" #~ "An implicit array copy would have occurred. Since `i32` is a copy type, " #~ "then `[i32; 3]` is also a copy type." #~ msgstr "" -#~ "Se habría producido una copia implícita del array. Dado que `i32` es un " -#~ "tipo de copia, `[i32; 3]` también es un tipo de copia." +#~ "Se habría producido una copia implícita del array. Dado que `i32` es un tipo " +#~ "de copia, `[i32; 3]` también es un tipo de copia." #~ msgid "" -#~ "As we have seen, `if` is an expression in Rust. It is used to " -#~ "conditionally evaluate one of two blocks, but the blocks can have a value " -#~ "which then becomes the value of the `if` expression. Other control flow " -#~ "expressions work similarly in Rust." +#~ "As we have seen, `if` is an expression in Rust. It is used to conditionally " +#~ "evaluate one of two blocks, but the blocks can have a value which then " +#~ "becomes the value of the `if` expression. Other control flow expressions " +#~ "work similarly in Rust." #~ msgstr "" #~ "Como hemos visto, `if` es una expresión de Rust. Se utiliza para realizar " #~ "una evaluación condicional de uno de los dos bloques, aunque estos pueden " @@ -27775,8 +27276,8 @@ msgstr "" #~ "Otras expresiones del flujo de control funcionan de forma similar en Rust." #~ msgid "" -#~ "The same rule is used for functions: the value of the function body is " -#~ "the return value:" +#~ "The same rule is used for functions: the value of the function body is the " +#~ "return value:" #~ msgstr "" #~ "Se utiliza la misma regla para las funciones: el valor del cuerpo de la " #~ "función es el valor devuelto:" @@ -27785,19 +27286,18 @@ msgstr "" #~ "The point of this slide is to show that blocks have a type and value in " #~ "Rust. " #~ msgstr "" -#~ "El objetivo de esta diapositiva es mostrar que los bloques tienen un tipo " -#~ "y un valor en Rust. " +#~ "El objetivo de esta diapositiva es mostrar que los bloques tienen un tipo y " +#~ "un valor en Rust. " #~ msgid "" -#~ "The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) is " -#~ "closely related to the [`while let` loop](while-let-expressions.md). It " -#~ "will automatically call `into_iter()` on the expression and then iterate " -#~ "over it:" +#~ "The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) is closely " +#~ "related to the [`while let` loop](while-let-expressions.md). It will " +#~ "automatically call `into_iter()` on the expression and then iterate over it:" #~ msgstr "" #~ "El [bucle `for`](https://doc.rust-lang.org/std/keyword.for.html) está " -#~ "estrechamente relacionado con el [bucle `while let`](while-let-" -#~ "expressions.md). Llamará automáticamente a `into_iter()` en la expresión " -#~ "y después iterará sobre ella:" +#~ "estrechamente relacionado con el [bucle `while let`](while-let-expressions." +#~ "md). Llamará automáticamente a `into_iter()` en la expresión y después " +#~ "iterará sobre ella:" #~ msgid "You can use `break` and `continue` here as usual." #~ msgstr "Aquí puedes usar `break` y `continue` como de costumbre." @@ -27810,8 +27310,8 @@ msgstr "" #~ msgstr "`(0..10)` es un rango que implementa un `Iterator` trait." #~ msgid "" -#~ "`step_by` is a method that returns another `Iterator` that skips every " -#~ "other element. " +#~ "`step_by` is a method that returns another `Iterator` that skips every other " +#~ "element. " #~ msgstr "" #~ "`step_by` es un método que devuelve otro `Iterator` que salta cada otro " #~ "elemento." @@ -27821,8 +27321,7 @@ msgstr "" #~ "vector `v` to be mutable and the for loop to `for x in v.iter_mut()`." #~ msgstr "" #~ "Modifica los elementos del vector y explica los errores del compilador. " -#~ "Cambia el vector `v` para que sea mutable y el bucle `for x in v." -#~ "iter_mut()`." +#~ "Cambia el vector `v` para que sea mutable y el bucle `for x in v.iter_mut()`." #~ msgid "`loop` expressions" #~ msgstr "Expresiones `loop`" @@ -27838,15 +27337,14 @@ msgstr "" #~ msgstr "Para detener el bucle, debes usar `break` o `return`:" #~ msgid "Break the `loop` with a value (e.g. `break 8`) and print it out." -#~ msgstr "" -#~ "Interrumpe `loop` con un valor (por ejemplo, `break 8`) e imprímelo." +#~ msgstr "Interrumpe `loop` con un valor (por ejemplo, `break 8`) e imprímelo." #~ msgid "" #~ "Due to type inference the `i32` is optional. We will gradually show the " #~ "types less and less as the course progresses." #~ msgstr "" -#~ "Debido a la inferencia de tipos, `i32` es opcional. A medida que avance " -#~ "el curso, iremos mostrando cada vez menos los tipos." +#~ "Debido a la inferencia de tipos, `i32` es opcional. A medida que avance el " +#~ "curso, iremos mostrando cada vez menos los tipos." #~ msgid "" #~ "The following code tells the compiler to copy into a certain generic " @@ -27854,33 +27352,33 @@ msgstr "" #~ "using `_` as a placeholder:" #~ msgstr "" #~ "El siguiente fragmento de código le indica al compilador que copie en un " -#~ "determinado contenedor genérico sin que el código especifique " -#~ "explícitamente el tipo contenido utilizando `_` como marcador de posición:" +#~ "determinado contenedor genérico sin que el código especifique explícitamente " +#~ "el tipo contenido utilizando `_` como marcador de posición:" #~ msgid "" #~ "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator." #~ "html#method.collect) relies on [`FromIterator`](https://doc.rust-lang.org/" -#~ "std/iter/trait.FromIterator.html), which [`HashSet`](https://doc.rust-" -#~ "lang.org/std/collections/struct.HashSet.html#impl-FromIterator%3CT%3E-for-" +#~ "std/iter/trait.FromIterator.html), which [`HashSet`](https://doc.rust-lang." +#~ "org/std/collections/struct.HashSet.html#impl-FromIterator%3CT%3E-for-" #~ "HashSet%3CT,+S%3E) implements." #~ msgstr "" #~ "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator." -#~ "html#method.collect) se basa en [`FromIterator`](https://doc.rust-lang." -#~ "org/std/iter/trait.FromIterator.html), que implementa [`HashSet`](https://" -#~ "doc.rust-lang.org/std/collections/struct.HashSet.html#impl-" -#~ "FromIterator%3CT%3E-for-HashSet%3CT,+S%3E)." +#~ "html#method.collect) se basa en [`FromIterator`](https://doc.rust-lang.org/" +#~ "std/iter/trait.FromIterator.html), que implementa [`HashSet`](https://doc." +#~ "rust-lang.org/std/collections/struct.HashSet.html#impl-FromIterator%3CT%3E-" +#~ "for-HashSet%3CT,+S%3E)." #~ msgid "Static and Constant Variables" #~ msgstr "Variables Estáticas y Constantes" #~ msgid "" -#~ "The following code demonstrates why the compiler can't simply reuse " -#~ "memory locations when shadowing an immutable variable in a scope, even if " -#~ "the type does not change." +#~ "The following code demonstrates why the compiler can't simply reuse memory " +#~ "locations when shadowing an immutable variable in a scope, even if the type " +#~ "does not change." #~ msgstr "" #~ "El siguiente fragmento de código demuestra por qué el compilador no puede " -#~ "reutilizar ubicaciones de memoria cuando sombrea una variable inmutable " -#~ "en un ámbito, incluso si el tipo no cambia." +#~ "reutilizar ubicaciones de memoria cuando sombrea una variable inmutable en " +#~ "un ámbito, incluso si el tipo no cambia." #~ msgid "" #~ "```rust,editable\n" @@ -27948,16 +27446,16 @@ msgstr "" #~ "En ambos casos, las funciones asociadas se definen en un bloque `impl`." #~ msgid "" -#~ "You can define richer enums where the variants carry data. You can then " -#~ "use the `match` statement to extract the data from each variant:" +#~ "You can define richer enums where the variants carry data. You can then use " +#~ "the `match` statement to extract the data from each variant:" #~ msgstr "" #~ "Puedes definir enumeraciones más completas en las que las variantes " #~ "contienen datos. Después, puedes usar la instrucción `match` para extraer " #~ "los datos de cada variante:" #~ msgid "" -#~ "The expression is matched against the patterns from top to bottom. There " -#~ "is no fall-through like in C or C++." +#~ "The expression is matched against the patterns from top to bottom. There is " +#~ "no fall-through like in C or C++." #~ msgstr "" #~ "La expresión se coteja con los patrones de arriba abajo. No hay ningún " #~ "sistema de respaldo, como en C o C++." @@ -27966,16 +27464,16 @@ msgstr "" #~ "The match expression has a value. The value is the last expression in the " #~ "match arm which was executed." #~ msgstr "" -#~ "La expresión de coincidencia tiene un valor. El valor es la última " -#~ "expresión en el brazo de coincidencia que se ha ejecutado." +#~ "La expresión de coincidencia tiene un valor. El valor es la última expresión " +#~ "en el brazo de coincidencia que se ha ejecutado." #~ msgid "" #~ "Starting from the top we look for what pattern matches the value then run " #~ "the code following the arrow. Once we find a match, we stop. " #~ msgstr "" #~ "Empezando por la parte superior, buscaremos el patrón que coincide con el " -#~ "valor y, a continuación, ejecutaremos el fragmento de código que sigue a " -#~ "la flecha. Cuando encontremos una coincidencia, pararemos. " +#~ "valor y, a continuación, ejecutaremos el fragmento de código que sigue a la " +#~ "flecha. Cuando encontremos una coincidencia, pararemos. " #~ msgid "`match` inspects a hidden discriminant field in the `enum`." #~ msgstr "`match` inspecciona un campo discriminante oculto en `enum`." @@ -27987,17 +27485,16 @@ msgstr "" #~ "Se puede obtener el discriminante llamando a `std::mem::discriminant()`." #~ msgid "" -#~ "This is useful, for example, if implementing `PartialEq` for structs " -#~ "where comparing field values doesn't affect equality." +#~ "This is useful, for example, if implementing `PartialEq` for structs where " +#~ "comparing field values doesn't affect equality." #~ msgstr "" -#~ "Esto resulta útil si, por ejemplo, se implementa `PartialEq` en " -#~ "estructuras en las que la comparación de valores de campos no afecta a la " -#~ "igualdad." +#~ "Esto resulta útil si, por ejemplo, se implementa `PartialEq` en estructuras " +#~ "en las que la comparación de valores de campos no afecta a la igualdad." #~ msgid "" #~ "`WebEvent::Click { ... }` is not exactly the same as `WebEvent::" -#~ "Click(Click)` with a top level `struct Click { ... }`. The inlined " -#~ "version cannot implement traits, for example." +#~ "Click(Click)` with a top level `struct Click { ... }`. The inlined version " +#~ "cannot implement traits, for example." #~ msgstr "" #~ "`WebEvent::Click { ... }` no es exactamente lo mismo que `WebEvent::" #~ "Click(Click)` con un nivel superior `struct Click { ... }`. La versión " @@ -28024,17 +27521,16 @@ msgstr "" #~ msgstr "`dbg_size!(bool)`: tamaño de 1 byte, alineación de 1 byte," #~ msgid "" -#~ "`dbg_size!(Option)`: size 1 bytes, align: 1 bytes (niche " -#~ "optimization, see below)," +#~ "`dbg_size!(Option)`: size 1 bytes, align: 1 bytes (niche optimization, " +#~ "see below)," #~ msgstr "" #~ "`dbg_size!(Option)`: tamaño de 1 byte, alineación de 1 byte " #~ "(optimización de nichos, consulta más abajo)," -#~ msgid "" -#~ "`dbg_size!(&i32)`: size 8 bytes, align: 8 bytes (on a 64-bit machine)," +#~ msgid "`dbg_size!(&i32)`: size 8 bytes, align: 8 bytes (on a 64-bit machine)," #~ msgstr "" -#~ "`dbg_size!(&i32)`: tamaño de 8 bytes, alineación de 8 bytes (en una " -#~ "máquina de 64 bits)," +#~ "`dbg_size!(&i32)`: tamaño de 8 bytes, alineación de 8 bytes (en una máquina " +#~ "de 64 bits)," #~ msgid "" #~ "`dbg_size!(Option<&i32>)`: size 8 bytes, align: 8 bytes (null pointer " @@ -28047,22 +27543,21 @@ msgstr "" #~ "Niche optimization: Rust will merge unused bit patterns for the enum " #~ "discriminant." #~ msgstr "" -#~ "Optimización de nichos: Rust combina los patrones de bits no utilizados " -#~ "para el discriminante de enumeración." +#~ "Optimización de nichos: Rust combina los patrones de bits no utilizados para " +#~ "el discriminante de enumeración." #~ msgid "" -#~ "More complex example if you want to discuss what happens when we chain " -#~ "more than 256 `Option`s together." +#~ "More complex example if you want to discuss what happens when we chain more " +#~ "than 256 `Option`s together." #~ msgstr "" -#~ "Ejemplo más complejo si quieres hablar de lo que pasa cuando encadenamos " -#~ "más de 256 `Option`." +#~ "Ejemplo más complejo si quieres hablar de lo que pasa cuando encadenamos más " +#~ "de 256 `Option`." #~ msgid "" -#~ "Since 1.65, a similar [let-else](https://doc.rust-lang.org/rust-by-" -#~ "example/flow_control/let_else.html) construct allows to do a " -#~ "destructuring assignment, or if it fails, execute a block which is " -#~ "required to abort normal control flow (with `panic`/`return`/`break`/" -#~ "`continue`):" +#~ "Since 1.65, a similar [let-else](https://doc.rust-lang.org/rust-by-example/" +#~ "flow_control/let_else.html) construct allows to do a destructuring " +#~ "assignment, or if it fails, execute a block which is required to abort " +#~ "normal control flow (with `panic`/`return`/`break`/`continue`):" #~ msgstr "" #~ "A partir de la versión 1.65, una construcción [let-else](https://doc.rust-" #~ "lang.org/rust-by-example/flow_control/let_else.html) similar permite " @@ -28071,14 +27566,14 @@ msgstr "" #~ "`break`/`continue`)::" #~ msgid "" -#~ "The [`match` keyword](https://doc.rust-lang.org/reference/expressions/" -#~ "match-expr.html) is used to match a value against one or more patterns. " -#~ "In that sense, it works like a series of `if let` expressions:" +#~ "The [`match` keyword](https://doc.rust-lang.org/reference/expressions/match-" +#~ "expr.html) is used to match a value against one or more patterns. In that " +#~ "sense, it works like a series of `if let` expressions:" #~ msgstr "" #~ "La \\[palabra clave `match`\\][`match` keyword](https://doc.rust-lang.org/" -#~ "reference/expressions/match-expr.html) se usa para comparar un valor con " -#~ "uno o varios patrones. En ese sentido, funciona como una serie de " -#~ "expresiones `if let`:" +#~ "reference/expressions/match-expr.html) se usa para comparar un valor con uno " +#~ "o varios patrones. En ese sentido, funciona como una serie de expresiones " +#~ "`if let`:" #~ msgid "Save the match expression to a variable and print it out." #~ msgstr "Guarda la expresión de coincidencia en una variable e imprímela." @@ -28087,25 +27582,24 @@ msgstr "" #~ msgstr "Elimina `.as_deref()` y explica el error." #~ msgid "" -#~ "`std::env::args().next()` returns an `Option`, but we cannot " -#~ "match against `String`." +#~ "`std::env::args().next()` returns an `Option`, but we cannot match " +#~ "against `String`." #~ msgstr "" #~ "`std::env::args().next()` devuelve `Option`, pero no podemos " #~ "encontrar coincidencias con `String`." #~ msgid "" -#~ "`as_deref()` transforms an `Option` to `Option<&T::Target>`. In our " -#~ "case, this turns `Option` into `Option<&str>`." +#~ "`as_deref()` transforms an `Option` to `Option<&T::Target>`. In our case, " +#~ "this turns `Option` into `Option<&str>`." #~ msgstr "" #~ "`as_deref()` transforma `Option` en `Option<&T::Target>`. En nuestro " #~ "caso, esto convierte `Option` en `Option<&str>`." #~ msgid "" -#~ "We can now use pattern matching to match against the `&str` inside " -#~ "`Option`." +#~ "We can now use pattern matching to match against the `&str` inside `Option`." #~ msgstr "" -#~ "Ahora podemos usar la coincidencia de patrones para encontrar " -#~ "coincidencias con `&str` dentro de `Option`." +#~ "Ahora podemos usar la coincidencia de patrones para encontrar coincidencias " +#~ "con `&str` dentro de `Option`." #~ msgid "The `_` pattern is a wildcard pattern which matches any value." #~ msgstr "`_` es un patrón comodín que coincide con cualquier valor." @@ -28114,16 +27608,16 @@ msgstr "" #~ "It can be useful to show how binding works, by for instance replacing a " #~ "wildcard character with a variable, or removing the quotes around `q`." #~ msgstr "" -#~ "Puede ser útil para mostrar cómo funciona un enlace, por ejemplo, " -#~ "cambiando un carácter comodín por una variable o quitando las comillas " -#~ "alrededor de `q`. " +#~ "Puede ser útil para mostrar cómo funciona un enlace, por ejemplo, cambiando " +#~ "un carácter comodín por una variable o quitando las comillas alrededor de " +#~ "`q`. " #~ msgid "You can demonstrate matching on a reference." #~ msgstr "Puedes mostrar la coincidencia con una referencia." #~ msgid "" -#~ "This might be a good time to bring up the concept of irrefutable " -#~ "patterns, as the term can show up in error messages." +#~ "This might be a good time to bring up the concept of irrefutable patterns, " +#~ "as the term can show up in error messages." #~ msgstr "" #~ "Este puede ser un buen momento para mencionar el concepto de patrones " #~ "irrefutables, ya que el término puede aparecer en mensajes de error." @@ -28132,11 +27626,11 @@ msgstr "" #~ msgstr "También puedes desestructurar `structs`:" #~ msgid "" -#~ "Destructuring of slices of unknown length also works with patterns of " -#~ "fixed length." +#~ "Destructuring of slices of unknown length also works with patterns of fixed " +#~ "length." #~ msgstr "" -#~ "La desestructuración de slices de longitud desconocida también funciona " -#~ "con patrones de longitud fija." +#~ "La desestructuración de slices de longitud desconocida también funciona con " +#~ "patrones de longitud fija." #~ msgid "" #~ "When matching, you can add a _guard_ to a pattern. This is an arbitrary " @@ -28146,10 +27640,8 @@ msgstr "" #~ "trata de una expresión booleana arbitraria que se ejecutará si el patrón " #~ "coincide:" -#~ msgid "" -#~ "You can use the variables defined in the pattern in your if expression." -#~ msgstr "" -#~ "Puedes usar las variables definidas en el patrón en tu expresión if." +#~ msgid "You can use the variables defined in the pattern in your if expression." +#~ msgstr "Puedes usar las variables definidas en el patrón en tu expresión if." #~ msgid "Day 1: Afternoon Exercises" #~ msgstr "Día 1: Ejercicios de la Tarde" @@ -28165,20 +27657,19 @@ msgstr "" #~ msgid "" #~ "Try to solve the problem the \"simple\" way first, using `for` loops and " -#~ "integers. Then, revisit the solution and try to implement it with " -#~ "iterators." +#~ "integers. Then, revisit the solution and try to implement it with iterators." #~ msgstr "" -#~ "Intenta resolver el problema de la forma \"sencilla\" primero, usando " -#~ "bucles `for` e enteros. Luego, vuelve a la solución e intenta " -#~ "implementarla con iteradores." +#~ "Intenta resolver el problema de la forma \"sencilla\" primero, usando bucles " +#~ "`for` e enteros. Luego, vuelve a la solución e intenta implementarla con " +#~ "iteradores." #~ msgid "" #~ "Memory management: stack vs heap, manual memory management, scope-based " #~ "memory management, and garbage collection." #~ msgstr "" -#~ "Gestión de la memoria: _stack_ (pila) vs _heap_ (montículo), gestión " -#~ "manual de la memoria, gestión de la memoria basada en ámbitos y _garbage " -#~ "collector_ (recolección de memoria residual)." +#~ "Gestión de la memoria: _stack_ (pila) vs _heap_ (montículo), gestión manual " +#~ "de la memoria, gestión de la memoria basada en ámbitos y _garbage collector_ " +#~ "(recolección de memoria residual)." #~ msgid "" #~ "Ownership: move semantics, copying and cloning, borrowing, and lifetimes." @@ -28193,8 +27684,8 @@ msgstr "" #~ "The Standard Library: `String`, `Option` and `Result`, `Vec`, `HashMap`, " #~ "`Rc` and `Arc`." #~ msgstr "" -#~ "La Biblioteca Estándar (_Standard Library_): `String`, `Option` y " -#~ "`Result`, `Vec`, `HashMap`, `Rc` y `Arc`." +#~ "La Biblioteca Estándar (_Standard Library_): `String`, `Option` y `Result`, " +#~ "`Vec`, `HashMap`, `Rc` y `Arc`." #~ msgid "Modules: visibility, paths, and filesystem hierarchy." #~ msgstr "Módulos: visibilidad, rutas y jerarquía del sistema de archivos." @@ -28225,16 +27716,16 @@ msgstr "" #~ msgstr "Debes llamar a `free` en cada puntero que asignes con `malloc`:" #~ msgid "" -#~ "Memory is leaked if the function returns early between `malloc` and " -#~ "`free`: the pointer is lost and we cannot deallocate the memory. Worse, " -#~ "freeing the pointer twice, or accessing a freed pointer can lead to " -#~ "exploitable security vulnerabilities." +#~ "Memory is leaked if the function returns early between `malloc` and `free`: " +#~ "the pointer is lost and we cannot deallocate the memory. Worse, freeing the " +#~ "pointer twice, or accessing a freed pointer can lead to exploitable security " +#~ "vulnerabilities." #~ msgstr "" #~ "La memoria se pierde si la función devuelve un resultado antes de tiempo " #~ "entre `malloc` y `free`: el puntero se pierde y no podemos anular la " -#~ "asignación de la memoria. Peor aún, si se libera el puntero dos veces o " -#~ "si se accede a uno liberado, pueden producirse vulnerabilidades de " -#~ "seguridad de las que otros podrían aprovecharse." +#~ "asignación de la memoria. Peor aún, si se libera el puntero dos veces o si " +#~ "se accede a uno liberado, pueden producirse vulnerabilidades de seguridad de " +#~ "las que otros podrían aprovecharse." #~ msgid "" #~ "Constructors and destructors let you hook into the lifetime of an object." @@ -28243,13 +27734,13 @@ msgstr "" #~ "objeto." #~ msgid "" -#~ "By wrapping a pointer in an object, you can free memory when the object " -#~ "is destroyed. The compiler guarantees that this happens, even if an " -#~ "exception is raised." +#~ "By wrapping a pointer in an object, you can free memory when the object is " +#~ "destroyed. The compiler guarantees that this happens, even if an exception " +#~ "is raised." #~ msgstr "" -#~ "Al envolver un puntero en un objeto, puedes liberar memoria cuando el " -#~ "objeto se destruya. El compilador asegura que esto ocurra, aunque se " -#~ "genere una excepción." +#~ "Al envolver un puntero en un objeto, puedes liberar memoria cuando el objeto " +#~ "se destruya. El compilador asegura que esto ocurra, aunque se genere una " +#~ "excepción." #~ msgid "" #~ "This is often called _resource acquisition is initialization_ (RAII) and " @@ -28272,16 +27763,14 @@ msgstr "" #~ "```" #~ msgid "" -#~ "The `std::unique_ptr` object is allocated on the stack, and points to " -#~ "memory allocated on the heap." +#~ "The `std::unique_ptr` object is allocated on the stack, and points to memory " +#~ "allocated on the heap." #~ msgstr "" -#~ "El objeto `std::unique_ptr` se reserva en el _stack_ y apunta a la " -#~ "memoria asignada en el _heap_." +#~ "El objeto `std::unique_ptr` se reserva en el _stack_ y apunta a la memoria " +#~ "asignada en el _heap_." -#~ msgid "" -#~ "At the end of `say_hello`, the `std::unique_ptr` destructor will run." -#~ msgstr "" -#~ "Al final de `say_hello`, se ejecuta el destructor `std::unique_ptr`." +#~ msgid "At the end of `say_hello`, the `std::unique_ptr` destructor will run." +#~ msgstr "Al final de `say_hello`, se ejecuta el destructor `std::unique_ptr`." #~ msgid "The destructor frees the `Person` object it points to." #~ msgstr "El destructor libera el objeto `Person` al que apunta." @@ -28296,8 +27785,8 @@ msgstr "" #~ "An alternative to manual and scope-based memory management is automatic " #~ "memory management:" #~ msgstr "" -#~ "Una alternativa a la gestión manual de la memoria basada en el ámbito es " -#~ "la gestión automática de la memoria:" +#~ "Una alternativa a la gestión manual de la memoria basada en el ámbito es la " +#~ "gestión automática de la memoria:" #~ msgid "The programmer never allocates or deallocates memory explicitly." #~ msgstr "" @@ -28307,8 +27796,8 @@ msgstr "" #~ "A garbage collector finds unused memory and deallocates it for the " #~ "programmer." #~ msgstr "" -#~ "Un _garbage collector_ (recolector de memoria residual) encuentra la que " -#~ "no se utiliza y la desasigna para el programador." +#~ "Un _garbage collector_ (recolector de memoria residual) encuentra la que no " +#~ "se utiliza y la desasigna para el programador." #~ msgid "Java Example" #~ msgstr "Ejemplo en Java" @@ -28342,15 +27831,15 @@ msgstr "" #~ msgid "Scope-based like C++, but the compiler enforces full adherence." #~ msgstr "" -#~ "Está basada en el ámbito, como C++, pero el compilador cumple con todas " -#~ "las normas." +#~ "Está basada en el ámbito, como C++, pero el compilador cumple con todas las " +#~ "normas." #~ msgid "" #~ "A Rust user can choose the right abstraction for the situation, some even " #~ "have no cost at runtime like C." #~ msgstr "" -#~ "Un usuario de Rust puede elegir la abstracción adecuada para cada " -#~ "situación, algunas ni siquiera tienen coste en _runtime_, como C." +#~ "Un usuario de Rust puede elegir la abstracción adecuada para cada situación, " +#~ "algunas ni siquiera tienen coste en _runtime_, como C." #~ msgid "Rust achieves this by modeling _ownership_ explicitly." #~ msgstr "Rust lo consigue modelando explícitamente el _ownership_." @@ -28358,26 +27847,26 @@ msgstr "" #~ msgid "" #~ "If asked how at this point, you can mention that in Rust this is usually " #~ "handled by RAII wrapper types such as [Box](https://doc.rust-lang.org/std/" -#~ "boxed/struct.Box.html), [Vec](https://doc.rust-lang.org/std/vec/struct." -#~ "Vec.html), [Rc](https://doc.rust-lang.org/std/rc/struct.Rc.html), or [Arc]" +#~ "boxed/struct.Box.html), [Vec](https://doc.rust-lang.org/std/vec/struct.Vec." +#~ "html), [Rc](https://doc.rust-lang.org/std/rc/struct.Rc.html), or [Arc]" #~ "(https://doc.rust-lang.org/std/sync/struct.Arc.html). These encapsulate " -#~ "ownership and memory allocation via various means, and prevent the " -#~ "potential errors in C." +#~ "ownership and memory allocation via various means, and prevent the potential " +#~ "errors in C." #~ msgstr "" -#~ "Si en este momento te preguntan cómo, puedes mencionar que en Rust se " -#~ "suele gestionar con tipos de envoltorios RAII, como [Box](https://doc." -#~ "rust-lang.org/std/boxed/struct.Box.html), [Vec]https://doc.rust-lang.org/" -#~ "std/vec/struct.Vec.html), [Rc](https://doc.rust-lang.org/std/rc/struct.Rc." -#~ "html) o [Arc](https://doc.rust-lang.org/std/sync/struct.Arc.html). Estos " -#~ "encapsulan el _ownership_ y la asignación de memoria a través de diversos " -#~ "medios, evitando así los posibles errores en C." +#~ "Si en este momento te preguntan cómo, puedes mencionar que en Rust se suele " +#~ "gestionar con tipos de envoltorios RAII, como [Box](https://doc.rust-lang." +#~ "org/std/boxed/struct.Box.html), [Vec]https://doc.rust-lang.org/std/vec/" +#~ "struct.Vec.html), [Rc](https://doc.rust-lang.org/std/rc/struct.Rc.html) o " +#~ "[Arc](https://doc.rust-lang.org/std/sync/struct.Arc.html). Estos encapsulan " +#~ "el _ownership_ y la asignación de memoria a través de diversos medios, " +#~ "evitando así los posibles errores en C." #~ msgid "" #~ "You may be asked about destructors here, the [Drop](https://doc.rust-lang." #~ "org/std/ops/trait.Drop.html) trait is the Rust equivalent." #~ msgstr "" -#~ "Puede que aquí te pregunten por los destructores, así que debes saber que " -#~ "el trait [Drop](https://doc.rust-lang.org/std/ops/trait.Drop.html) es el " +#~ "Puede que aquí te pregunten por los destructores, así que debes saber que el " +#~ "trait [Drop](https://doc.rust-lang.org/std/ops/trait.Drop.html) es el " #~ "equivalente en Rust." #~ msgid "A destructor can run here to free up resources." @@ -28408,8 +27897,7 @@ msgstr "" #~ msgid "The heap data from `s1` is reused for `s2`." #~ msgstr "Los datos del _heap_ de `s1` se reutilizan en `s2`." -#~ msgid "" -#~ "When `s1` goes out of scope, nothing happens (it has been moved from)." +#~ msgid "When `s1` goes out of scope, nothing happens (it has been moved from)." #~ msgstr "Cuando `s1` sale del ámbito, no ocurre nada (ha sido movida)." #~ msgid "" @@ -28496,20 +27984,19 @@ msgstr "" #~ "```" #~ msgid "" -#~ "If students ask about `derive`, it is sufficient to say that this is a " -#~ "way to generate code in Rust at compile time. In this case the default " +#~ "If students ask about `derive`, it is sufficient to say that this is a way " +#~ "to generate code in Rust at compile time. In this case the default " #~ "implementations of `Copy` and `Clone` traits are generated." #~ msgstr "" -#~ "Si los alumnos preguntan por `derive`, basta con decir que se trata de " -#~ "una forma de generar código en Rust durante el tiempo de compilación. En " -#~ "este caso, se generan las implementaciones predeterminadas de los traits " -#~ "`Copy` y `Clone`." +#~ "Si los alumnos preguntan por `derive`, basta con decir que se trata de una " +#~ "forma de generar código en Rust durante el tiempo de compilación. En este " +#~ "caso, se generan las implementaciones predeterminadas de los traits `Copy` y " +#~ "`Clone`." #~ msgid "A borrowed value has a _lifetime_:" #~ msgstr "Un valor que se toma prestado tiene un _tiempo de vida_:" -#~ msgid "" -#~ "The lifetime can be implicit: `add(p1: &Point, p2: &Point) -> Point`." +#~ msgid "The lifetime can be implicit: `add(p1: &Point, p2: &Point) -> Point`." #~ msgstr "" #~ "El tiempo de vida puede ser implícito: `add(p1: &Point, p2: &Point) -> " #~ "Point`." @@ -28522,12 +28009,12 @@ msgstr "" #~ "Read `&'a Point` as \"a borrowed `Point` which is valid for at least the " #~ "lifetime `a`\"." #~ msgstr "" -#~ "Lee `&'a Point` como \"un `Point` prestado que es válido al menos durante " -#~ "el tiempo de vida de `a`\"." +#~ "Lee `&'a Point` como \"un `Point` prestado que es válido al menos durante el " +#~ "tiempo de vida de `a`\"." #~ msgid "" -#~ "Lifetimes are always inferred by the compiler: you cannot assign a " -#~ "lifetime yourself." +#~ "Lifetimes are always inferred by the compiler: you cannot assign a lifetime " +#~ "yourself." #~ msgstr "" #~ "El compilador siempre infiere el tiempo de vida: no puedes asignarlos tú." @@ -28561,14 +28048,12 @@ msgstr "" #~ msgid "Note how this does not compile since `p3` outlives `p2`." #~ msgstr "" -#~ "Ten en cuenta que no se puede compilar, ya que `p3` dura más tiempo que " -#~ "`p2`." +#~ "Ten en cuenta que no se puede compilar, ya que `p3` dura más tiempo que `p2`." #~ msgid "" -#~ "Reset the workspace and change the function signature to `fn " -#~ "left_most<'a, 'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`. This will " -#~ "not compile because the relationship between the lifetimes `'a` and `'b` " -#~ "is unclear." +#~ "Reset the workspace and change the function signature to `fn left_most<'a, " +#~ "'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`. This will not compile " +#~ "because the relationship between the lifetimes `'a` and `'b` is unclear." #~ msgstr "" #~ "Restablece el espacio de trabajo y cambia la firma de la función a `fn " #~ "left_most<'a, 'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`. No se " @@ -28586,8 +28071,7 @@ msgstr "" #~ "referencia." #~ msgid "" -#~ "It must have come from one of those two inputs (or from a global " -#~ "variable)." +#~ "It must have come from one of those two inputs (or from a global variable)." #~ msgstr "" #~ "Esta debe proceder de una de esas dos entradas (o de una variable global)." @@ -28611,22 +28095,22 @@ msgstr "" #~ "The `new` function could be written using `Self` as a type, as it is " #~ "interchangeable with the struct type name" #~ msgstr "" -#~ "La función `new` se podría escribir utilizando `Self` como tipo, ya que " -#~ "es intercambiable con el nombre de tipo de estructura." +#~ "La función `new` se podría escribir utilizando `Self` como tipo, ya que es " +#~ "intercambiable con el nombre de tipo de estructura." #~ msgid "" -#~ "Implement the `Default` trait for the struct. Define some fields and use " -#~ "the default values for the other fields." +#~ "Implement the `Default` trait for the struct. Define some fields and use the " +#~ "default values for the other fields." #~ msgstr "" -#~ "Implementa el trait `Default` en la estructura. Define algunos campos y " -#~ "usa los valores predeterminados para el resto de los campos." +#~ "Implementa el trait `Default` en la estructura. Define algunos campos y usa " +#~ "los valores predeterminados para el resto de los campos." #~ msgid "Methods are defined in the `impl` block." #~ msgstr "Los métodos se definen en el bloque `impl`." #~ msgid "" -#~ "Use struct update syntax to define a new structure using `peter`. Note " -#~ "that the variable `peter` will no longer be accessible afterwards." +#~ "Use struct update syntax to define a new structure using `peter`. Note that " +#~ "the variable `peter` will no longer be accessible afterwards." #~ msgstr "" #~ "Utiliza la sintaxis de actualización de estructuras para definir una " #~ "estructura nueva con `peter`. Ten en cuenta que, después, ya no podrás " @@ -28635,19 +28119,17 @@ msgstr "" #~ msgid "" #~ "Use `{:#?}` when printing structs to request the `Debug` representation." #~ msgstr "" -#~ "Utiliza `{:#?}` al imprimir estructuras para solicitar la representación " -#~ "de `Debug`." +#~ "Utiliza `{:#?}` al imprimir estructuras para solicitar la representación de " +#~ "`Debug`." #~ msgid "We describe the distinction between method receivers next." -#~ msgstr "" -#~ "A continuación, se describe la diferencia entre receptores de métodos." +#~ msgstr "A continuación, se describe la diferencia entre receptores de métodos." #~ msgid "" #~ "Consider emphasizing \"shared and immutable\" and \"unique and mutable\". " -#~ "These constraints always come together in Rust due to borrow checker " -#~ "rules, and `self` is no exception. It isn't possible to reference a " -#~ "struct from multiple locations and call a mutating (`&mut self`) method " -#~ "on it." +#~ "These constraints always come together in Rust due to borrow checker rules, " +#~ "and `self` is no exception. It isn't possible to reference a struct from " +#~ "multiple locations and call a mutating (`&mut self`) method on it." #~ msgstr "" #~ "Considera recalcar los conceptos \"compartido e inmutable\" y \"único y " #~ "mutable\". Estas restricciones siempre vienen juntas en Rust debido a las " @@ -28663,30 +28145,26 @@ msgstr "" #~ "You can point out how that changes what the function can do with the " #~ "variable values and if/how it can be used again in `main`." #~ msgstr "" -#~ "Puedes indicar cómo eso cambia lo que la función puede hacer con los " -#~ "valores de las variables y si se puede utilizar de nuevo en `main` y, en " -#~ "caso afirmativo, cómo." +#~ "Puedes indicar cómo eso cambia lo que la función puede hacer con los valores " +#~ "de las variables y si se puede utilizar de nuevo en `main` y, en caso " +#~ "afirmativo, cómo." #~ msgid "" -#~ "You can showcase the error that appears when trying to call `finish` " -#~ "twice." +#~ "You can showcase the error that appears when trying to call `finish` twice." #~ msgstr "" -#~ "Puedes mostrar el error que aparece al intentar llamar a `finish` dos " -#~ "veces." +#~ "Puedes mostrar el error que aparece al intentar llamar a `finish` dos veces." #~ msgid "" #~ "Note that although the method receivers are different, the non-static " -#~ "functions are called the same way in the main body. Rust enables " -#~ "automatic referencing and dereferencing when calling methods. Rust " -#~ "automatically adds in the `&`, `*`, `muts` so that that object matches " -#~ "the method signature." +#~ "functions are called the same way in the main body. Rust enables automatic " +#~ "referencing and dereferencing when calling methods. Rust automatically adds " +#~ "in the `&`, `*`, `muts` so that that object matches the method signature." #~ msgstr "" -#~ "Ten en cuenta que, aunque los receptores de los métodos sean diferentes, " -#~ "las funciones no estáticas se llaman del mismo modo en el cuerpo " -#~ "principal. Rust habilita la referenciación y desreferenciación " -#~ "automáticas al llamar a los métodos. Además, añade automáticamente los " -#~ "caracteres `&`, `*` y `muts` para que el objeto coincida con la firma del " -#~ "método." +#~ "Ten en cuenta que, aunque los receptores de los métodos sean diferentes, las " +#~ "funciones no estáticas se llaman del mismo modo en el cuerpo principal. Rust " +#~ "habilita la referenciación y desreferenciación automáticas al llamar a los " +#~ "métodos. Además, añade automáticamente los caracteres `&`, `*` y `muts` para " +#~ "que el objeto coincida con la firma del método." #~ msgid "" #~ "You might point out that `print_laps` is using a vector that is iterated " @@ -28711,16 +28189,16 @@ msgstr "" #~ "We will learn much more about structs and the `Vec` type tomorrow. For " #~ "now, you just need to know part of its API:" #~ msgstr "" -#~ "Mañana conoceremos mucho mejor _structs_ y el tipo `Vec`. Por ahora, " -#~ "solo debes conocer parte de su API:" +#~ "Mañana conoceremos mucho mejor _structs_ y el tipo `Vec`. Por ahora, solo " +#~ "debes conocer parte de su API:" #~ msgid "" #~ "Use this to model a library's book collection. Copy the code below to " #~ " and update the types to make it compile:" #~ msgstr "" -#~ "Crea un modelo de la colección de libros de una biblioteca con esta " -#~ "opción. Copia el código que aparece abajo en y actualiza los tipos para que compile:" +#~ "Crea un modelo de la colección de libros de una biblioteca con esta opción. " +#~ "Copia el código que aparece abajo en y " +#~ "actualiza los tipos para que compile:" #~ msgid "[Solution](solutions-afternoon.md#designing-a-library)" #~ msgstr "[Soluciones](solutions-afternoon.md#designing-a-library)" @@ -28733,14 +28211,13 @@ msgstr "" #~ "[`Option` and `Result`](std/option-result.md) types: used for optional " #~ "values and [error handling](error-handling.md)." #~ msgstr "" -#~ "Tipos [`Option` y `Result`](std/option-result.md): se utilizan para " -#~ "valores opcionales y [gestión de errores](error-handling.md)." +#~ "Tipos [`Option` y `Result`](std/option-result.md): se utilizan para valores " +#~ "opcionales y [gestión de errores](error-handling.md)." -#~ msgid "" -#~ "[`String`](std/string.md): the default string type used for owned data." +#~ msgid "[`String`](std/string.md): the default string type used for owned data." #~ msgstr "" -#~ "[`String`](std/string.md): el tipo de cadena predeterminado que se usa " -#~ "para los datos propios." +#~ "[`String`](std/string.md): el tipo de cadena predeterminado que se usa para " +#~ "los datos propios." #~ msgid "[`Vec`](std/vec.md): a standard extensible vector." #~ msgstr "[`Vec`](std/vec.md): un vector estándar extensible." @@ -28749,8 +28226,7 @@ msgstr "" #~ "[`HashMap`](std/hashmap.md): a hash map type with a configurable hashing " #~ "algorithm." #~ msgstr "" -#~ "[`HashMap`](std/hashmap.md): un mapa hash con un algoritmo hash " -#~ "configurable." +#~ "[`HashMap`](std/hashmap.md): un mapa hash con un algoritmo hash configurable." #~ msgid "[`Box`](std/box.md): an owned pointer for heap-allocated data." #~ msgstr "" @@ -28760,8 +28236,8 @@ msgstr "" #~ "[`Rc`](std/rc.md): a shared reference-counted pointer for heap-allocated " #~ "data." #~ msgstr "" -#~ "[`Rc`](std/rc.md): un puntero compartido de conteo de referencias para " -#~ "datos asignados a _heap_." +#~ "[`Rc`](std/rc.md): un puntero compartido de conteo de referencias para datos " +#~ "asignados a _heap_." #~ msgid "`Option` and `Result`" #~ msgstr "`Option` y `Result`" @@ -28777,22 +28253,21 @@ msgstr "" #~ msgid "If found, `Result::Ok` holds the index where the element is found." #~ msgstr "" -#~ "Si se encuentra, `Result::Ok` contiene el índice donde se halla el " -#~ "elemento." +#~ "Si se encuentra, `Result::Ok` contiene el índice donde se halla el elemento." #~ msgid "" -#~ "Otherwise, `Result::Err` contains the index where such an element should " -#~ "be inserted." +#~ "Otherwise, `Result::Err` contains the index where such an element should be " +#~ "inserted." #~ msgstr "" #~ "De lo contrario, `Result::Err` contendrá el índice donde se debe insertar " #~ "dicho elemento." #~ msgid "" -#~ "Show iterating over a vector and mutating the value: `for e in &mut v " -#~ "{ *e += 50; }`" +#~ "Show iterating over a vector and mutating the value: `for e in &mut v { *e " +#~ "+= 50; }`" #~ msgstr "" -#~ "Muestra la iteración sobre un vector y la mutación del valor: `for e in " -#~ "&mut v { *e += 50; }`." +#~ "Muestra la iteración sobre un vector y la mutación del valor: `for e in &mut " +#~ "v { *e += 50; }`." #~ msgid "" #~ "```bob\n" @@ -28825,8 +28300,8 @@ msgstr "" #~ "In the above example, you can even leave out the `*` in the `println!` " #~ "statement thanks to `Deref`. " #~ msgstr "" -#~ "En el ejemplo anterior, incluso puedes omitir `*` en la instrucción " -#~ "`println!` gracias a `Deref`. " +#~ "En el ejemplo anterior, incluso puedes omitir `*` en la instrucción `println!" +#~ "` gracias a `Deref`. " #~ msgid "Box with Recursive Data Structures" #~ msgstr "Box con Estructuras de Datos Recursivos" @@ -28835,38 +28310,36 @@ msgstr "" #~ msgstr "`Cell` y `RefCell`" #~ msgid "" -#~ "[`Cell`](https://doc.rust-lang.org/std/cell/struct.Cell.html) and " -#~ "[`RefCell`](https://doc.rust-lang.org/std/cell/struct.RefCell.html) " -#~ "implement what Rust calls _interior mutability:_ mutation of values in an " -#~ "immutable context." +#~ "[`Cell`](https://doc.rust-lang.org/std/cell/struct.Cell.html) and [`RefCell`]" +#~ "(https://doc.rust-lang.org/std/cell/struct.RefCell.html) implement what Rust " +#~ "calls _interior mutability:_ mutation of values in an immutable context." #~ msgstr "" -#~ "[`Cell`](https://doc.rust-lang.org/std/cell/struct.Cell.html) y " -#~ "[`RefCell`](https://doc.rust-lang.org/std/cell/struct.RefCell.html) " -#~ "implementan lo que Rust llama _mutabilidad interna_: mutación de valores " -#~ "en un contexto inmutable." +#~ "[`Cell`](https://doc.rust-lang.org/std/cell/struct.Cell.html) y [`RefCell`]" +#~ "(https://doc.rust-lang.org/std/cell/struct.RefCell.html) implementan lo que " +#~ "Rust llama _mutabilidad interna_: mutación de valores en un contexto " +#~ "inmutable." #~ msgid "" -#~ "`Cell` is typically used for simple types, as it requires copying or " -#~ "moving values. More complex interior types typically use `RefCell`, which " -#~ "tracks shared and exclusive references at runtime and panics if they are " -#~ "misused." +#~ "`Cell` is typically used for simple types, as it requires copying or moving " +#~ "values. More complex interior types typically use `RefCell`, which tracks " +#~ "shared and exclusive references at runtime and panics if they are misused." #~ msgstr "" -#~ "Normalmente, `Cell` se utiliza para tipos simples, ya que requiere copiar " -#~ "o mover valores. Los tipos internos más complejos normalmente utilizan " +#~ "Normalmente, `Cell` se utiliza para tipos simples, ya que requiere copiar o " +#~ "mover valores. Los tipos internos más complejos normalmente utilizan " #~ "`RefCell`, que realiza un seguimiento de las referencias compartidas y " -#~ "exclusivas en tiempo de ejecución y entra en pánico si se utilizan de " -#~ "forma incorrecta." +#~ "exclusivas en tiempo de ejecución y entra en pánico si se utilizan de forma " +#~ "incorrecta." #~ msgid "" -#~ "If we were using `Cell` instead of `RefCell` in this example, we would " -#~ "have to move the `Node` out of the `Rc` to push children, then move it " -#~ "back in. This is safe because there's always one, un-referenced value in " -#~ "the cell, but it's not ergonomic." +#~ "If we were using `Cell` instead of `RefCell` in this example, we would have " +#~ "to move the `Node` out of the `Rc` to push children, then move it back in. " +#~ "This is safe because there's always one, un-referenced value in the cell, " +#~ "but it's not ergonomic." #~ msgstr "" #~ "Si estuviéramos utilizando `Cell` en lugar de `RefCell` en este ejemplo, " #~ "tendríamos que mover el `Node` fuera del `Rc` para insertar hijos y luego " -#~ "volver a moverlo. Esto es seguro porque siempre hay un valor sin " -#~ "referenciar en la celda, pero no es ergonómico." +#~ "volver a moverlo. Esto es seguro porque siempre hay un valor sin referenciar " +#~ "en la celda, pero no es ergonómico." #~ msgid "" #~ "To do anything with a Node, you must call a `RefCell` method, usually " @@ -28878,30 +28351,29 @@ msgstr "" #~ msgid "Day 2: Afternoon Exercises" #~ msgstr "Día 2: Ejercicios de la Tarde" -#~ msgid "" -#~ "The exercises for this afternoon will focus on strings and iterators." +#~ msgid "The exercises for this afternoon will focus on strings and iterators." #~ msgstr "" #~ "Los ejercicios de esta tarde se centrarán en las cadenas y los iteradores." #~ msgid "" #~ "The ownership model of Rust affects many APIs. An example of this is the " #~ "[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) and " -#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator." -#~ "html) traits." +#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator.html) " +#~ "traits." #~ msgstr "" -#~ "El modelo de _ownership_ de Rust afecta a muchas APIs. Un ejemplo serían " -#~ "los traits [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator." -#~ "html) y [`IntoIterator`](https://doc.rust-lang.org/std/iter/trait." -#~ "IntoIterator.html)." +#~ "El modelo de _ownership_ de Rust afecta a muchas APIs. Un ejemplo serían los " +#~ "traits [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) " +#~ "y [`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator." +#~ "html)." #~ msgid "" -#~ "Traits are like interfaces: they describe behavior (methods) for a type. " -#~ "The `Iterator` trait simply says that you can call `next` until you get " -#~ "`None` back:" +#~ "Traits are like interfaces: they describe behavior (methods) for a type. The " +#~ "`Iterator` trait simply says that you can call `next` until you get `None` " +#~ "back:" #~ msgstr "" -#~ "Los _traits_ son como las interfaces: describen el comportamiento " -#~ "(métodos) de un tipo. El trait `Iterator` indica que se puede llamar a " -#~ "`next` hasta que se obtenga `None`:" +#~ "Los _traits_ son como las interfaces: describen el comportamiento (métodos) " +#~ "de un tipo. El trait `Iterator` indica que se puede llamar a `next` hasta " +#~ "que se obtenga `None`:" #~ msgid "You use this trait like this:" #~ msgstr "Utiliza este trait de la siguiente forma:" @@ -28920,34 +28392,34 @@ msgstr "" #~ "loops. They call `into_iter()` on an expression and iterates over the " #~ "resulting iterator:" #~ msgstr "" -#~ "Ahora que conocemos `Iterator` e `IntoIterator`, podemos crear bucles " -#~ "`for`. Llaman a `into_iter()` sobre una expresión e iteran sobre el " -#~ "iterador resultante:" +#~ "Ahora que conocemos `Iterator` e `IntoIterator`, podemos crear bucles `for`. " +#~ "Llaman a `into_iter()` sobre una expresión e iteran sobre el iterador " +#~ "resultante:" #~ msgid "" -#~ "Experiment with the code above and then consult the documentation for " -#~ "[`impl IntoIterator for &Vec`](https://doc.rust-lang.org/std/vec/" -#~ "struct.Vec.html#impl-IntoIterator-for-%26'a+Vec%3CT,+A%3E) and [`impl " -#~ "IntoIterator for Vec`](https://doc.rust-lang.org/std/vec/struct.Vec." -#~ "html#impl-IntoIterator-for-Vec%3CT,+A%3E) to check your answers." +#~ "Experiment with the code above and then consult the documentation for [`impl " +#~ "IntoIterator for &Vec`](https://doc.rust-lang.org/std/vec/struct.Vec." +#~ "html#impl-IntoIterator-for-%26'a+Vec%3CT,+A%3E) and [`impl IntoIterator for " +#~ "Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-" +#~ "for-Vec%3CT,+A%3E) to check your answers." #~ msgstr "" -#~ "Experimenta con el código anterior y consulta la documentación sobre " -#~ "[`impl IntoIterator for &Vec`](https://doc.rust-lang.org/std/vec/" -#~ "struct.Vec.html#impl-IntoIterator-for-%26'a+Vec%3CT,+A%3E) y sobre [`impl " -#~ "IntoIterator for Vec`](https://doc.rust-lang.org/std/vec/struct.Vec." -#~ "html#impl-IntoIterator-for-Vec%3CT,+A%3E) para comprobar las respuestas." +#~ "Experimenta con el código anterior y consulta la documentación sobre [`impl " +#~ "IntoIterator for &Vec`](https://doc.rust-lang.org/std/vec/struct.Vec." +#~ "html#impl-IntoIterator-for-%26'a+Vec%3CT,+A%3E) y sobre [`impl IntoIterator " +#~ "for Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-" +#~ "IntoIterator-for-Vec%3CT,+A%3E) para comprobar las respuestas." #~ msgid "" -#~ "In this exercise, you are implementing a routing component of a web " -#~ "server. The server is configured with a number of _path prefixes_ which " -#~ "are matched against _request paths_. The path prefixes can contain a " -#~ "wildcard character which matches a full segment. See the unit tests below." +#~ "In this exercise, you are implementing a routing component of a web server. " +#~ "The server is configured with a number of _path prefixes_ which are matched " +#~ "against _request paths_. The path prefixes can contain a wildcard character " +#~ "which matches a full segment. See the unit tests below." #~ msgstr "" #~ "En este ejercicio se va a implementar un componente de enrutamiento de un " #~ "servidor web. El servidor está configurado con un número de _prefijos de " #~ "ruta_ que se comparan con las _rutas de solicitud_. Los prefijos de ruta " -#~ "pueden contener un carácter comodín que coincida con un segmento " -#~ "completo. Consulta las pruebas unitarias más abajo." +#~ "pueden contener un carácter comodín que coincida con un segmento completo. " +#~ "Consulta las pruebas unitarias más abajo." #~ msgid "" #~ "Traits: deriving traits, default methods, and important standard library " @@ -28957,8 +28429,8 @@ msgstr "" #~ "importantes de la _standard library_ (biblioteca estándar)." #~ msgid "" -#~ "Generics: generic data types, generic methods, monomorphization, and " -#~ "trait objects." +#~ "Generics: generic data types, generic methods, monomorphization, and trait " +#~ "objects." #~ msgstr "" #~ "_Generics_ (Genéricos): tipos de datos genéricos, métodos genéricos, " #~ "monomorfización y objetos de _traits_." @@ -28987,8 +28459,7 @@ msgstr "" #~ msgid "You can declare a generic type on your `impl` block:" #~ msgstr "Puedes declarar un tipo genérico en tu bloque `impl`:" -#~ msgid "" -#~ "Generic code is turned into non-generic code based on the call sites:" +#~ msgid "Generic code is turned into non-generic code based on the call sites:" #~ msgstr "" #~ "El código genérico se convierte en código no genérico en función de los " #~ "sitios de llamada:" @@ -28997,22 +28468,21 @@ msgstr "" #~ msgstr "se comporta como si se hubiera escrito" #~ msgid "" -#~ "Rust derive macros work by automatically generating code that implements " -#~ "the specified traits for a data structure." +#~ "Rust derive macros work by automatically generating code that implements the " +#~ "specified traits for a data structure." #~ msgstr "" -#~ "Las macros de derivación de Rust funcionan generando automáticamente " -#~ "código que implementa los _traits_ especificados para una estructura de " -#~ "datos." +#~ "Las macros de derivación de Rust funcionan generando automáticamente código " +#~ "que implementa los _traits_ especificados para una estructura de datos." #~ msgid "You can let the compiler derive a number of traits as follows:" #~ msgstr "" -#~ "Puedes dejar que el compilador derive una serie de _traits_ de la " -#~ "siguiente manera:" +#~ "Puedes dejar que el compilador derive una serie de _traits_ de la siguiente " +#~ "manera:" #~ msgid "Traits can implement behavior in terms of other trait methods:" #~ msgstr "" -#~ "Los _traits_ pueden implementar comportamientos en función de otros " -#~ "métodos de _traits_:" +#~ "Los _traits_ pueden implementar comportamientos en función de otros métodos " +#~ "de _traits_:" #~ msgid "Move method `not_equals` to a new trait `NotEquals`." #~ msgstr "Mueve el método `not_equals` a un nuevo trait `NotEquals`." @@ -29038,59 +28508,58 @@ msgstr "" #~ "```" #~ msgid "Provide a blanket implementation of `NotEquals` for `Equals`." -#~ msgstr "" -#~ "Proporciona una implementación general de `NotEquals` para `Equals`." +#~ msgstr "Proporciona una implementación general de `NotEquals` para `Equals`." #~ msgid "" #~ "With the blanket implementation, you no longer need `Equals` as a super " #~ "trait for `NotEqual`." #~ msgstr "" -#~ "Con la implementación general, ya no necesitas `Equals` como supertrait " -#~ "para `NotEqual`." +#~ "Con la implementación general, ya no necesitas `Equals` como supertrait para " +#~ "`NotEqual`." #~ msgid "`impl Trait` allows you to work with types which you cannot name." #~ msgstr "" -#~ "`impl Trait` permite trabajar con tipos a los que no se les puede asignar " -#~ "un nombre." +#~ "`impl Trait` permite trabajar con tipos a los que no se les puede asignar un " +#~ "nombre." #~ msgid "" #~ "This example is great, because it uses `impl Display` twice. It helps to " #~ "explain that nothing here enforces that it is _the same_ `impl Display` " #~ "type. If we used a single `T: Display`, it would enforce the constraint " -#~ "that input `T` and return `T` type are the same type. It would not work " -#~ "for this particular function, as the type we expect as input is likely " -#~ "not what `format!` returns. If we wanted to do the same via `: Display` " -#~ "syntax, we'd need two independent generic parameters." +#~ "that input `T` and return `T` type are the same type. It would not work for " +#~ "this particular function, as the type we expect as input is likely not what " +#~ "`format!` returns. If we wanted to do the same via `: Display` syntax, we'd " +#~ "need two independent generic parameters." #~ msgstr "" #~ "Este ejemplo es fantástico porque usa `impl Display` dos veces. Nos ayuda " #~ "explicar que no hay nada que obligue a que sea _el mismo_ tipo `impl " -#~ "Display`. Si se utiliza un solo `T: Display`, se aplicaría la restricción " -#~ "de que el tipo de entrada `T` y el tipo de retorno `T` son iguales. No " -#~ "funcionaría para esta función en concreto, ya que el tipo que esperamos " -#~ "como entrada probablemente no sea el que devuelve `format!`. Si " -#~ "quisiéramos hacer lo mismo a través de la sintaxis `: Display`, " -#~ "necesitaríamos dos parámetros genéricos independientes." +#~ "Display`. Si se utiliza un solo `T: Display`, se aplicaría la restricción de " +#~ "que el tipo de entrada `T` y el tipo de retorno `T` son iguales. No " +#~ "funcionaría para esta función en concreto, ya que el tipo que esperamos como " +#~ "entrada probablemente no sea el que devuelve `format!`. Si quisiéramos hacer " +#~ "lo mismo a través de la sintaxis `: Display`, necesitaríamos dos parámetros " +#~ "genéricos independientes." #~ msgid "" #~ "We will now look at some of the most common traits of the Rust standard " #~ "library:" #~ msgstr "" -#~ "A continuación, veremos algunos de los _traits_ más comunes de la " -#~ "biblioteca estándar de Rust:" +#~ "A continuación, veremos algunos de los _traits_ más comunes de la biblioteca " +#~ "estándar de Rust:" #~ msgid "" #~ "[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) and " -#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator." -#~ "html) used in `for` loops," +#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator.html) " +#~ "used in `for` loops," #~ msgstr "" #~ "[`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) y " -#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator." -#~ "html) se usan en los bucles `for`." +#~ "[`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator.html) " +#~ "se usan en los bucles `for`." #~ msgid "" -#~ "[`From`](https://doc.rust-lang.org/std/convert/trait.From.html) and " -#~ "[`Into`](https://doc.rust-lang.org/std/convert/trait.Into.html) used to " -#~ "convert values," +#~ "[`From`](https://doc.rust-lang.org/std/convert/trait.From.html) and [`Into`]" +#~ "(https://doc.rust-lang.org/std/convert/trait.Into.html) used to convert " +#~ "values," #~ msgstr "" #~ "[`From`](https://doc.rust-lang.org/std/convert/trait.From.html) y [`Into`]" #~ "(https://doc.rust-lang.org/std/convert/trait.Into.html) se usan para " @@ -29104,20 +28573,20 @@ msgstr "" #~ "(https://doc.rust-lang.org/std/io/trait.Write.html) se usan para E/S." #~ msgid "" -#~ "[`Add`](https://doc.rust-lang.org/std/ops/trait.Add.html), [`Mul`]" -#~ "(https://doc.rust-lang.org/std/ops/trait.Mul.html), ... used for operator " +#~ "[`Add`](https://doc.rust-lang.org/std/ops/trait.Add.html), [`Mul`](https://" +#~ "doc.rust-lang.org/std/ops/trait.Mul.html), ... used for operator " #~ "overloading, and" #~ msgstr "" -#~ "[`Add`](https://doc.rust-lang.org/std/ops/trait.Add.html), [`Mul`]" -#~ "(https://doc.rust-lang.org/std/ops/trait.Mul.html), ... se usan para " -#~ "sobrecargar operadores, y" +#~ "[`Add`](https://doc.rust-lang.org/std/ops/trait.Add.html), [`Mul`](https://" +#~ "doc.rust-lang.org/std/ops/trait.Mul.html), ... se usan para sobrecargar " +#~ "operadores, y" #~ msgid "" -#~ "`Iterator` implements `fn collect(self) -> B where B: " -#~ "FromIterator, Self: Sized`" +#~ "`Iterator` implements `fn collect(self) -> B where B: FromIterator, Self: Sized`" #~ msgstr "" -#~ "`Iterator` implementa `fn collect(self) -> B where B: " -#~ "FromIterator, Self: Sized`." +#~ "`Iterator` implementa `fn collect(self) -> B where B: FromIterator, Self: Sized`." #~ msgid "`Add`, `Mul`, ..." #~ msgstr "`Add`, `Mul`, etc." @@ -29125,10 +28594,8 @@ msgstr "" #~ msgid "Day 3: Morning Exercises" #~ msgstr "Día 3: Ejercicios de la Mañana" -#~ msgid "" -#~ "We will design a classical GUI library using traits and trait objects." -#~ msgstr "" -#~ "Diseñaremos una biblioteca GUI clásica de _traits_ y objetos _trait_." +#~ msgid "We will design a classical GUI library using traits and trait objects." +#~ msgstr "Diseñaremos una biblioteca GUI clásica de _traits_ y objetos _trait_." #~ msgid "" #~ "We will also look at enum dispatch with an exercise involving points and " @@ -29138,8 +28605,8 @@ msgstr "" #~ "involucra puntos y polígonos." #~ msgid "" -#~ "Let us design a classical GUI library using our new knowledge of traits " -#~ "and trait objects." +#~ "Let us design a classical GUI library using our new knowledge of traits and " +#~ "trait objects." #~ msgstr "" #~ "Vamos a diseñar una biblioteca GUI clásica con nuestro recién adquirido " #~ "conocimiento sobre _traits_ y objetos trait." @@ -29161,58 +28628,56 @@ msgstr "" #~ msgstr "`Label`: tiene una `label`." #~ msgid "The widgets will implement a `Widget` trait, see below." -#~ msgstr "" -#~ "Los widgets implementarán un trait `Widget`, como se indica más abajo." +#~ msgstr "Los widgets implementarán un trait `Widget`, como se indica más abajo." #~ msgid "" #~ "Copy the code below to , fill in the missing " #~ "`draw_into` methods so that you implement the `Widget` trait:" #~ msgstr "" -#~ "Copia el siguiente fragmento de código en la página y rellena los métodos `draw_into` que faltan para implementar " -#~ "el trait `Widget`:" +#~ "Copia el siguiente fragmento de código en la página y rellena los métodos `draw_into` que faltan para implementar el trait " +#~ "`Widget`:" #~ msgid "The output of the above program can be something simple like this:" #~ msgstr "La salida del programa anterior puede ser algo sencillo como esto:" #~ msgid "" -#~ "If you want to draw aligned text, you can use the [fill/alignment]" -#~ "(https://doc.rust-lang.org/std/fmt/index.html#fillalignment) formatting " -#~ "operators. In particular, notice how you can pad with different " -#~ "characters (here a `'/'`) and how you can control alignment:" +#~ "If you want to draw aligned text, you can use the [fill/alignment](https://" +#~ "doc.rust-lang.org/std/fmt/index.html#fillalignment) formatting operators. In " +#~ "particular, notice how you can pad with different characters (here a `'/'`) " +#~ "and how you can control alignment:" #~ msgstr "" #~ "Si quieres trazar texto alineado, puedes usar los operadores de formato " #~ "[relleno/alineación](https://doc.rust-lang.org/std/fmt/index." -#~ "html#fillalignment). En concreto, observa cómo puedes rellenar con " -#~ "distintos caracteres (en este caso, `'/'`) y cómo puedes controlar la " -#~ "alineación:" +#~ "html#fillalignment). En concreto, observa cómo puedes rellenar con distintos " +#~ "caracteres (en este caso, `'/'`) y cómo puedes controlar la alineación:" #~ msgid "" #~ "Using such alignment tricks, you can for example produce output like this:" #~ msgstr "" -#~ "Con estos trucos de alineación puedes, por ejemplo, obtener resultados " -#~ "como el siguiente:" +#~ "Con estos trucos de alineación puedes, por ejemplo, obtener resultados como " +#~ "el siguiente:" #~ msgid "Polygon Struct" #~ msgstr "Estructura de polígono" #~ msgid "" -#~ "We will create a `Polygon` struct which contain some points. Copy the " -#~ "code below to and fill in the missing " -#~ "methods to make the tests pass:" +#~ "We will create a `Polygon` struct which contain some points. Copy the code " +#~ "below to and fill in the missing methods to " +#~ "make the tests pass:" #~ msgstr "" #~ "Crearemos una estructura `Polygon` que contenga algunos puntos. Copia el " -#~ "siguiente fragmento de código en la página " -#~ "y rellena los métodos que faltan para pasar las pruebas:" +#~ "siguiente fragmento de código en la página y " +#~ "rellena los métodos que faltan para pasar las pruebas:" #~ msgid "" -#~ "Since the method signatures are missing from the problem statements, the " -#~ "key part of the exercise is to specify those correctly. You don't have to " -#~ "modify the tests." +#~ "Since the method signatures are missing from the problem statements, the key " +#~ "part of the exercise is to specify those correctly. You don't have to modify " +#~ "the tests." #~ msgstr "" -#~ "Dado que faltan las firmas de los métodos en las instrucciones del " -#~ "problema, la parte clave del ejercicio consiste en especificarlas " -#~ "correctamente. No tienes que modificar las pruebas." +#~ "Dado que faltan las firmas de los métodos en las instrucciones del problema, " +#~ "la parte clave del ejercicio consiste en especificarlas correctamente. No " +#~ "tienes que modificar las pruebas." #~ msgid "Other interesting parts of the exercise:" #~ msgstr "Otras partes interesantes del ejercicio:" @@ -29221,16 +28686,16 @@ msgstr "" #~ "Derive a `Copy` trait for some structs, as in tests the methods sometimes " #~ "don't borrow their arguments." #~ msgstr "" -#~ "Deriva un trait `Copy` en algunas estructuras, ya que, en las pruebas, " -#~ "los métodos a veces no toman prestados sus argumentos." +#~ "Deriva un trait `Copy` en algunas estructuras, ya que, en las pruebas, los " +#~ "métodos a veces no toman prestados sus argumentos." #~ msgid "" -#~ "Discover that `Add` trait must be implemented for two objects to be " -#~ "addable via \"+\". Note that we do not discuss generics until Day 3." +#~ "Discover that `Add` trait must be implemented for two objects to be addable " +#~ "via \"+\". Note that we do not discuss generics until Day 3." #~ msgstr "" -#~ "Descubrir que hay que implementar el trait `Add` para que se puedan " -#~ "añadir dos objetos mediante \"+\". Ten en cuenta que no hablaremos de los " -#~ "genéricos hasta el día 3." +#~ "Descubrir que hay que implementar el trait `Add` para que se puedan añadir " +#~ "dos objetos mediante \"+\". Ten en cuenta que no hablaremos de los genéricos " +#~ "hasta el día 3." #~ msgid "Error handling in Rust is done using explicit control flow:" #~ msgstr "" @@ -29249,11 +28714,11 @@ msgstr "" #~ msgstr "Capturar el Desenrrollado de la _Stack_" #~ msgid "" -#~ "We have already seen the `Result` enum. This is used pervasively when " -#~ "errors are expected as part of normal operation:" +#~ "We have already seen the `Result` enum. This is used pervasively when errors " +#~ "are expected as part of normal operation:" #~ msgstr "" -#~ "Ya hemos visto la _enum_ `Result`. Se utiliza normalmente cuando se " -#~ "esperan errores como parte del funcionamiento normal:" +#~ "Ya hemos visto la _enum_ `Result`. Se utiliza normalmente cuando se esperan " +#~ "errores como parte del funcionamiento normal:" #~ msgid "Propagating Errors with `?`" #~ msgstr "Propagar errores con `?`" @@ -29262,8 +28727,8 @@ msgstr "" #~ "The try-operator `?` is used to return errors to the caller. It lets you " #~ "turn the common" #~ msgstr "" -#~ "El operador try `?` se utiliza para devolver errores al llamador. Te " -#~ "permite convertir" +#~ "El operador try `?` se utiliza para devolver errores al llamador. Te permite " +#~ "convertir" #~ msgid "" #~ "The return type of the function has to be compatible with the nested " @@ -29278,55 +28743,52 @@ msgstr "" #~ "funciones anidadas que llama. Por ejemplo, una función que devuelve un " #~ "`Result` solo puede aplicar el operador `?` a una función que " #~ "devuelve un `Result`. No puede aplicar el operador `?` a una " -#~ "función que devuelve un `Option` o `Result` a menos " -#~ "que `OtherErr` implemente `From`. Recíprocamente, una función que " -#~ "devuelve un `Option` solo puede aplicar el operador `?` a una función " -#~ "que devuelve un `Option`." +#~ "función que devuelve un `Option` o `Result` a menos que " +#~ "`OtherErr` implemente `From`. Recíprocamente, una función que devuelve " +#~ "un `Option` solo puede aplicar el operador `?` a una función que devuelve " +#~ "un `Option`." #~ msgid "" #~ "You can convert incompatible types into one another with the different " #~ "`Option` and `Result` methods such as `Option::ok_or`, `Result::ok`, " #~ "`Result::err`." #~ msgstr "" -#~ "Puedes convertir tipos incompatibles entre sí con los distintos métodos " -#~ "de `Option` y `Result` como `Option::ok_or`, `Result::ok`, `Result::err`." +#~ "Puedes convertir tipos incompatibles entre sí con los distintos métodos de " +#~ "`Option` y `Result` como `Option::ok_or`, `Result::ok`, `Result::err`." #~ msgid "" #~ "It is good practice for all error types that don't need to be `no_std` to " #~ "implement `std::error::Error`, which requires `Debug` and `Display`. The " -#~ "`Error` crate for `core` is only available in [nightly](https://github." -#~ "com/rust-lang/rust/issues/103765), so not fully `no_std` compatible yet." +#~ "`Error` crate for `core` is only available in [nightly](https://github.com/" +#~ "rust-lang/rust/issues/103765), so not fully `no_std` compatible yet." #~ msgstr "" -#~ "Se recomienda que todos los tipos de errores que no necesitan ser " -#~ "`no_std` implementen `std::error::Error`, que requiere `Debug` y " -#~ "`Display`. El crate `Error` para `core` solo está disponible en [nightly]" -#~ "(https://github.com/rust-lang/rust/issues/103765), por lo que aún no es " -#~ "totalmente compatible con `no_std`." +#~ "Se recomienda que todos los tipos de errores que no necesitan ser `no_std` " +#~ "implementen `std::error::Error`, que requiere `Debug` y `Display`. El crate " +#~ "`Error` para `core` solo está disponible en [nightly](https://github.com/" +#~ "rust-lang/rust/issues/103765), por lo que aún no es totalmente compatible " +#~ "con `no_std`." #~ msgid "" #~ "It's generally helpful for them to implement `Clone` and `Eq` too where " #~ "possible, to make life easier for tests and consumers of your library. In " -#~ "this case we can't easily do so, because `io::Error` doesn't implement " -#~ "them." +#~ "this case we can't easily do so, because `io::Error` doesn't implement them." #~ msgstr "" -#~ "Por lo general, es útil que también implementen `Clone` y `Eq`, siempre " -#~ "que sea posible, para facilitar las cosas a las pruebas y a los " -#~ "consumidores de tu biblioteca. En este caso, no podemos hacerlo de forma " -#~ "sencilla porque `io::Error` no los implementa." +#~ "Por lo general, es útil que también implementen `Clone` y `Eq`, siempre que " +#~ "sea posible, para facilitar las cosas a las pruebas y a los consumidores de " +#~ "tu biblioteca. En este caso, no podemos hacerlo de forma sencilla porque " +#~ "`io::Error` no los implementa." #~ msgid "" -#~ "`thiserror`'s derive macro automatically implements `std::error::Error`, " -#~ "and optionally `Display` (if the `#[error(...)]` attributes are provided) " -#~ "and `From` (if the `#[from]` attribute is added). It also works for " -#~ "structs." +#~ "`thiserror`'s derive macro automatically implements `std::error::Error`, and " +#~ "optionally `Display` (if the `#[error(...)]` attributes are provided) and " +#~ "`From` (if the `#[from]` attribute is added). It also works for structs." #~ msgstr "" #~ "La macro de derivación de `thiserror` implementa automáticamente `std::" #~ "error::Error` y, de forma opcional, `Display` (si se proporcionan los " #~ "atributos `#[error(...)]`) y `From` (si se añade el atributo `#[from]`). " #~ "También funciona con estructuras." -#~ msgid "" -#~ "It doesn't affect your public API, which makes it good for libraries." +#~ msgid "It doesn't affect your public API, which makes it good for libraries." #~ msgstr "" #~ "No afecta a tu API pública, lo que la hace idónea para las bibliotecas." @@ -29335,9 +28797,9 @@ msgstr "" #~ "contextual information to your errors and allows you to have fewer custom " #~ "error types:" #~ msgstr "" -#~ "El crate [anyhow](https://docs.rs/anyhow/), que se utiliza con " -#~ "frecuencia, puede ayudar a añadir información contextual a los errores y " -#~ "permite tener menos tipos de errores personalizados:" +#~ "El crate [anyhow](https://docs.rs/anyhow/), que se utiliza con frecuencia, " +#~ "puede ayudar a añadir información contextual a los errores y permite tener " +#~ "menos tipos de errores personalizados:" #~ msgid "Mark unit tests with `#[test]`:" #~ msgstr "Marca pruebas unitarias con `#[test]`:" @@ -29359,11 +28821,11 @@ msgstr "" #~ msgstr "Llamar a código externo" #~ msgid "" -#~ "Functions from other languages might violate the guarantees of Rust. " -#~ "Calling them is thus unsafe:" +#~ "Functions from other languages might violate the guarantees of Rust. Calling " +#~ "them is thus unsafe:" #~ msgstr "" -#~ "Es posible que las funciones de otros lenguajes infrinjan las garantías " -#~ "de Rust. Por lo tanto, no es seguro llamarlas:" +#~ "Es posible que las funciones de otros lenguajes infrinjan las garantías de " +#~ "Rust. Por lo tanto, no es seguro llamarlas:" #~ msgid "Day 3: Afternoon Exercises" #~ msgstr "Día 3: ejercicios de la tarde" @@ -29373,17 +28835,16 @@ msgstr "" #~ "Vamos a crear un envoltorio seguro para leer el contenido del directorio." #~ msgid "" -#~ "For this exercise, we suggest using a local dev environment instead of " -#~ "the Playground. This will allow you to run your binary on your own " -#~ "machine." +#~ "For this exercise, we suggest using a local dev environment instead of the " +#~ "Playground. This will allow you to run your binary on your own machine." #~ msgstr "" -#~ "Para este ejercicio, recomendamos utilizar un entorno de desarrollo " -#~ "local, en lugar del playground. De este modo, podrás ejecutar tu binario " -#~ "en tu propia máquina." +#~ "Para este ejercicio, recomendamos utilizar un entorno de desarrollo local, " +#~ "en lugar del playground. De este modo, podrás ejecutar tu binario en tu " +#~ "propia máquina." #~ msgid "" -#~ "To get started, follow the [running locally](../../cargo/running-locally." -#~ "md) instructions." +#~ "To get started, follow the [running locally](../../cargo/running-locally.md) " +#~ "instructions." #~ msgstr "" #~ "Para empezar, sigue las instrucciones para [ejecutar a nivel local](../../" #~ "cargo/running-locally.md)." @@ -29392,8 +28853,8 @@ msgstr "" #~ "After looking at the exercise, you can look at the [solution](solutions-" #~ "afternoon.md) provided." #~ msgstr "" -#~ "Después de realizar el ejercicio, puedes consultar la [solución]" -#~ "(solutions-afternoon.md) proporcionada." +#~ "Después de realizar el ejercicio, puedes consultar la [solución](solutions-" +#~ "afternoon.md) proporcionada." #~ msgid "" #~ "```javascript\n" @@ -29540,8 +29001,8 @@ msgstr "" #~ "Highlight how CXX presents a clean interface without unsafe code in _both " #~ "languages_." #~ msgstr "" -#~ "Destaca cómo CXX presenta una interfaz limpia sin código inseguro en " -#~ "_ambos lenguajes_." +#~ "Destaca cómo CXX presenta una interfaz limpia sin código inseguro en _ambos " +#~ "lenguajes_." #~ msgid "" #~ "Explain how a Rust `String` cannot map to a C++ `std::string` (the latter " @@ -29549,23 +29010,22 @@ msgstr "" #~ "types, `rust::String` in C++ can be easily constructed from a C++ `std::" #~ "string`, making it very ergonomic to use." #~ msgstr "" -#~ "Explica que una `String` de Rust no puede asignarse a una `std::string` " -#~ "de C++ (esta última no mantiene la invariante UTF-8). Muestra que, a " -#~ "pesar de ser tipos diferentes, `rust::String` en C++ se puede construir " -#~ "fácilmente a partir de una `std::string` de C++, lo que la hace muy " -#~ "ergonómica de usar." +#~ "Explica que una `String` de Rust no puede asignarse a una `std::string` de C+" +#~ "+ (esta última no mantiene la invariante UTF-8). Muestra que, a pesar de ser " +#~ "tipos diferentes, `rust::String` en C++ se puede construir fácilmente a " +#~ "partir de una `std::string` de C++, lo que la hace muy ergonómica de usar." #~ msgid "" #~ "Explain that a Rust function returning `Result` becomes a function " #~ "which throws a `E` exception in C++ (and vice versa)." #~ msgstr "" -#~ "Explica que una función de Rust que devuelve `Result` se convierte " -#~ "en una función que lanza una excepción `E` en C++ (y viceversa)." +#~ "Explica que una función de Rust que devuelve `Result` se convierte en " +#~ "una función que lanza una excepción `E` en C++ (y viceversa)." #~ msgid "" #~ "```bash\n" -#~ "sudo apt install gcc-aarch64-linux-gnu gdb-multiarch libudev-dev picocom " -#~ "pkg-config qemu-system-arm\n" +#~ "sudo apt install gcc-aarch64-linux-gnu gdb-multiarch libudev-dev picocom pkg-" +#~ "config qemu-system-arm\n" #~ "rustup update\n" #~ "rustup target add aarch64-unknown-none thumbv7em-none-eabihf\n" #~ "rustup component add llvm-tools-preview\n" @@ -29573,8 +29033,8 @@ msgstr "" #~ "```" #~ msgstr "" #~ "```bash\n" -#~ "sudo apt install gcc-aarch64-linux-gnu gdb-multiarch libudev-dev picocom " -#~ "pkg-config qemu-system-arm\n" +#~ "sudo apt install gcc-aarch64-linux-gnu gdb-multiarch libudev-dev picocom pkg-" +#~ "config qemu-system-arm\n" #~ "rustup update\n" #~ "rustup target add aarch64-unknown-none thumbv7em-none-eabihf\n" #~ "rustup component add llvm-tools-preview\n" @@ -29719,11 +29179,10 @@ msgstr "" #~ msgid " server" #~ msgstr " de Microsoft" -#~ msgid "" -#~ "`cargo-embed` is a cargo subcommand to build and flash binaries, log " +#~ msgid "`cargo-embed` is a cargo subcommand to build and flash binaries, log " #~ msgstr "" -#~ "`cargo-embed` es un subcomando de Cargo para compilar e instalar " -#~ "binarios, registrar salidas " +#~ "`cargo-embed` es un subcomando de Cargo para compilar e instalar binarios, " +#~ "registrar salidas " #~ msgid "RTT" #~ msgstr "TTR" @@ -29763,8 +29222,8 @@ msgstr "" #~ " extract_links: bool,\n" #~ "}\n" #~ "\n" -#~ "fn visit_page(client: &Client, command: &CrawlCommand) -> " -#~ "Result, Error> {\n" +#~ "fn visit_page(client: &Client, command: &CrawlCommand) -> Result, " +#~ "Error> {\n" #~ " println!(\"Checking {:#}\", command.url);\n" #~ " let response = client.get(command.url.clone()).send()?;\n" #~ " if !response.status().is_success() {\n" @@ -29829,8 +29288,8 @@ msgstr "" #~ " extract_links: bool,\n" #~ "}\n" #~ "\n" -#~ "fn visit_page(client: &Client, command: &CrawlCommand) -> " -#~ "Result, Error> {\n" +#~ "fn visit_page(client: &Client, command: &CrawlCommand) -> Result, " +#~ "Error> {\n" #~ " println!(\"Checking {:#}\", command.url);\n" #~ " let response = client.get(command.url.clone()).send()?;\n" #~ " if !response.status().is_success() {\n" @@ -29934,37 +29393,35 @@ msgstr "" #~ "invalidarse. Es una acción insegura." #~ msgid "" -#~ "Therefore, you must guarantee that the addresses your future points to " -#~ "don't change. That is why we need to `pin` futures. Using the same future " +#~ "Therefore, you must guarantee that the addresses your future points to don't " +#~ "change. That is why we need to `pin` futures. Using the same future " #~ "repeatedly in a `select!` often leads to issues with pinned values." #~ msgstr "" #~ "Por lo tanto, debes asegurarte de que las direcciones a las que apunta el " -#~ "futuro no cambien. Por ese motivo debemos fijar (`pin`) los futuros. Si " -#~ "se usa el mismo futuro varias veces en un `select!`, se suelen producir " +#~ "futuro no cambien. Por ese motivo debemos fijar (`pin`) los futuros. Si se " +#~ "usa el mismo futuro varias veces en un `select!`, se suelen producir " #~ "problemas en los valores fijados." #~ msgid "You will find solutions to the exercises on the following pages." -#~ msgstr "" -#~ "En las páginas siguientes encontrarás las soluciones a los ejercicios." +#~ msgstr "En las páginas siguientes encontrarás las soluciones a los ejercicios." #~ msgid "" #~ "Feel free to ask questions about the solutions [on GitHub](https://github." #~ "com/google/comprehensive-rust/discussions). Let us know if you have a " #~ "different or better solution than what is presented here." #~ msgstr "" -#~ "No dudes en hacer preguntas sobre las soluciones [en GitHub](https://" -#~ "github.com/google/comprehensive-rust/discussions). Ponte en contacto con " -#~ "nosotros si tienes una solución distinta o mejor de la que se presenta " -#~ "aquí." +#~ "No dudes en hacer preguntas sobre las soluciones [en GitHub](https://github." +#~ "com/google/comprehensive-rust/discussions). Ponte en contacto con nosotros " +#~ "si tienes una solución distinta o mejor de la que se presenta aquí." #~ msgid "" #~ "**Note:** Please ignore the `// ANCHOR: label` and `// ANCHOR_END: label` " -#~ "comments you see in the solutions. They are there to make it possible to " -#~ "re-use parts of the solutions as the exercises." +#~ "comments you see in the solutions. They are there to make it possible to re-" +#~ "use parts of the solutions as the exercises." #~ msgstr "" -#~ "**Nota:** Ignora los comentarios `// ANCHOR: label` y `// ANCHOR_END: " -#~ "label` que aparecen en las soluciones. Están ahí para que sea posible " -#~ "reutilizar algunas partes de las soluciones de los ejercicios." +#~ "**Nota:** Ignora los comentarios `// ANCHOR: label` y `// ANCHOR_END: label` " +#~ "que aparecen en las soluciones. Están ahí para que sea posible reutilizar " +#~ "algunas partes de las soluciones de los ejercicios." #~ msgid "Day 1 Morning Exercises" #~ msgstr "Día 1: Ejercicios de la Mañana" @@ -29976,46 +29433,43 @@ msgstr "" #~ msgstr "Pregunta extra" #~ msgid "" -#~ "It requires more advanced concepts. It might seem that we could use a " -#~ "slice-of-slices (`&[&[i32]]`) as the input type to transpose and thus " -#~ "make our function handle any size of matrix. However, this quickly breaks " -#~ "down: the return type cannot be `&[&[i32]]` since it needs to own the " -#~ "data you return." +#~ "It requires more advanced concepts. It might seem that we could use a slice-" +#~ "of-slices (`&[&[i32]]`) as the input type to transpose and thus make our " +#~ "function handle any size of matrix. However, this quickly breaks down: the " +#~ "return type cannot be `&[&[i32]]` since it needs to own the data you return." #~ msgstr "" #~ "Requiere conceptos más avanzados. Es posible que parezca que se puede " #~ "utilizar un slice de slices (`&[&[i32]]`) como tipo de entrada para hacer " -#~ "una trasposición y así lograr que nuestra función controle cualquier " -#~ "tamaño de matriz. Sin embargo, esto se viene abajo rápidamente: el tipo " -#~ "de resultado devuelto no puede ser `&[&[i32]]`, ya que necesita ser el " +#~ "una trasposición y así lograr que nuestra función controle cualquier tamaño " +#~ "de matriz. Sin embargo, esto se viene abajo rápidamente: el tipo de " +#~ "resultado devuelto no puede ser `&[&[i32]]`, ya que necesita ser el " #~ "propietario de los datos que devuelve." #~ msgid "" -#~ "You can attempt to use something like `Vec>`, but this doesn't " -#~ "work out-of-the-box either: it's hard to convert from `Vec>` to " +#~ "You can attempt to use something like `Vec>`, but this doesn't work " +#~ "out-of-the-box either: it's hard to convert from `Vec>` to " #~ "`&[&[i32]]` so now you cannot easily use `pretty_print` either." #~ msgstr "" #~ "Puedes probar a utilizar algo como `Vec>`, pero esto tampoco " #~ "funciona desde el principio: es difícil cambiar de `Vec>` a " -#~ "`&[&[i32]]`, por lo que tampoco puedes usar `pretty_print` de forma " -#~ "sencilla." +#~ "`&[&[i32]]`, por lo que tampoco puedes usar `pretty_print` de forma sencilla." #~ msgid "" -#~ "Once we get to traits and generics, we'll be able to use the [`std::" -#~ "convert::AsRef`](https://doc.rust-lang.org/std/convert/trait.AsRef.html) " -#~ "trait to abstract over anything that can be referenced as a slice." +#~ "Once we get to traits and generics, we'll be able to use the [`std::convert::" +#~ "AsRef`](https://doc.rust-lang.org/std/convert/trait.AsRef.html) trait to " +#~ "abstract over anything that can be referenced as a slice." #~ msgstr "" -#~ "Una vez que veamos los traits y los genéricos, podremos usar el trait " -#~ "[`std::convert::AsRef`](https://doc.rust-lang.org/std/convert/trait.AsRef." -#~ "html) para abstraer cualquier elemento que se pueda referenciar, como un " -#~ "slice." +#~ "Una vez que veamos los traits y los genéricos, podremos usar el trait [`std::" +#~ "convert::AsRef`](https://doc.rust-lang.org/std/convert/trait.AsRef.html) " +#~ "para abstraer cualquier elemento que se pueda referenciar, como un slice." #~ msgid "" -#~ "In addition, the type itself would not enforce that the child slices are " -#~ "of the same length, so such variable could contain an invalid matrix." +#~ "In addition, the type itself would not enforce that the child slices are of " +#~ "the same length, so such variable could contain an invalid matrix." #~ msgstr "" -#~ "Además, el propio tipo no requeriría que los slices secundarios fueran de " -#~ "la misma longitud, por lo que dicha variable podría contener una matriz " -#~ "no válida." +#~ "Además, el propio tipo no requeriría que los slices secundarios fueran de la " +#~ "misma longitud, por lo que dicha variable podría contener una matriz no " +#~ "válida." #~ msgid "Day 1 Afternoon Exercises" #~ msgstr "Día 1: Ejercicios de la Tarde" @@ -30069,13 +29523,13 @@ msgstr "" #~ msgstr "El curso es rápido y abarca muchos temas:" #~ msgid "" -#~ "Depending on which abstraction (or combination of abstractions) you " -#~ "choose, can be a single unique pointer, reference counted, or atomically " -#~ "reference counted." +#~ "Depending on which abstraction (or combination of abstractions) you choose, " +#~ "can be a single unique pointer, reference counted, or atomically reference " +#~ "counted." #~ msgstr "" -#~ "Dependiendo de la abstracción (o combinación de abstracciones) que " -#~ "elijas, puede ser un solo puntero único, de referencia contada, o de " -#~ "referencia atómica contada." +#~ "Dependiendo de la abstracción (o combinación de abstracciones) que elijas, " +#~ "puede ser un solo puntero único, de referencia contada, o de referencia " +#~ "atómica contada." #~ msgid "Here is a rough comparison of the memory management techniques." #~ msgstr "" @@ -30178,44 +29632,42 @@ msgstr "" #~ "son acerca de escribir código para Android en sí, el sistema operativo. " #~ msgid "" -#~ "Learn how to use async Rust --- we'll only mention async Rust when " -#~ "covering traditional concurrency primitives. Please see [Asynchronous " -#~ "Programming in Rust](https://rust-lang.github.io/async-book/) instead for " -#~ "details on this topic." +#~ "Learn how to use async Rust --- we'll only mention async Rust when covering " +#~ "traditional concurrency primitives. Please see [Asynchronous Programming in " +#~ "Rust](https://rust-lang.github.io/async-book/) instead for details on this " +#~ "topic." #~ msgstr "" -#~ "Aprender cómo usar Rust asincrónico —solo mencionaremos Rust async " -#~ "cuando cubramos las primitivas de concurrencia tradicional. Por favor ver " -#~ "[Asynchronous Programming in Rust](https://rust-lang.github.io/async-" -#~ "book/) para más detalles." +#~ "Aprender cómo usar Rust asincrónico —solo mencionaremos Rust async cuando " +#~ "cubramos las primitivas de concurrencia tradicional. Por favor ver " +#~ "[Asynchronous Programming in Rust](https://rust-lang.github.io/async-book/) " +#~ "para más detalles." #~ msgid "Day 1: Basic Rust, ownership and the borrow checker." #~ msgstr "Día 1: Rust Básico, propiedad y chequeo de préstamos." #~ msgid "Day 4: Concurrency in Rust and interoperability with other languages" -#~ msgstr "" -#~ "Día 4: Concurrencia en Rust e interoperatiblidad con otros lenguajes" +#~ msgstr "Día 4: Concurrencia en Rust e interoperatiblidad con otros lenguajes" #~ msgid "" #~ "**Exercise for Day 4:** Do you interface with some C/C++ code in your " -#~ "project which we could attempt to move to Rust? The fewer dependencies " -#~ "the better. Parsing code would be ideal." +#~ "project which we could attempt to move to Rust? The fewer dependencies the " +#~ "better. Parsing code would be ideal." #~ msgstr "" -#~ "**Ejecicio del Día 4:** Comunicarte con alegan código C/C++ en tu " -#~ "proyecto que podrías migrar a Rust? Con menos dependencias es lo mejor. " -#~ "Parsear el código sería lo ideal." +#~ "**Ejecicio del Día 4:** Comunicarte con alegan código C/C++ en tu proyecto " +#~ "que podrías migrar a Rust? Con menos dependencias es lo mejor. Parsear el " +#~ "código sería lo ideal." #~ msgid "Rustup (Recommended)" #~ msgstr "Rustup (Recomendado)" #~ msgid "" #~ "You can follow the instructions to install cargo and rust compiler, among " -#~ "other standard ecosystem tools with the [rustup](https://rustup.rs/) " -#~ "tool, which is maintained by the Rust Foundation." +#~ "other standard ecosystem tools with the [rustup](https://rustup.rs/) tool, " +#~ "which is maintained by the Rust Foundation." #~ msgstr "" -#~ "Puedes seguir las instrucciones para instalar cargo y el compilador de " -#~ "Rust, además de otras herramientas estándar con la herramienta [rustup]" -#~ "(https://rust-analyzer.github.io/), que es mantenida por la Fundación " -#~ "Rust." +#~ "Puedes seguir las instrucciones para instalar cargo y el compilador de Rust, " +#~ "además de otras herramientas estándar con la herramienta [rustup](https://" +#~ "rust-analyzer.github.io/), que es mantenida por la Fundación Rust." #~ msgid "Package Managers" #~ msgstr "Package Managers" @@ -30250,18 +29702,18 @@ msgstr "" #~ "(false, true) => println!(\"buzz\"), (false, false) => println!" #~ "(\"{n}\"), } }" #~ msgstr "" -#~ "fn fizzbuzz(n: u32) -> () { // No devolver valor implica devolver un " -#~ "tipo unit `()` match (is_divisible_by(n, 3), is_divisible_by(n, 5)) " -#~ "{ (true, true) => println!(\"fizzbuzz\"), (true, false) => println!" -#~ "(\"fizz\"), (false, true) => println!(\"buzz\"), (false, false) => " -#~ "println!(\"{n}\"), } }" +#~ "fn fizzbuzz(n: u32) -> () { // No devolver valor implica devolver un tipo " +#~ "unit `()` match (is_divisible_by(n, 3), is_divisible_by(n, 5)) { (true, " +#~ "true) => println!(\"fizzbuzz\"), (true, false) => println!(\"fizz\"), " +#~ "(false, true) => println!(\"buzz\"), (false, false) => println!" +#~ "(\"{n}\"), } }" #~ msgid "" #~ "fn fizzbuzz_to(n: u32) { // `-> ()` is normally omitted for i in 1..=n " #~ "{ fizzbuzz(i); } }" #~ msgstr "" -#~ "fn fizzbuzz_to(n: u32) { // `-> ()` por lo general se omite for i in 1.." -#~ "=n { fizzbuzz(i); } }" +#~ "fn fizzbuzz_to(n: u32) { // `-> ()` por lo general se omite for i in 1..=n " +#~ "{ fizzbuzz(i); } }" #~ msgid "" #~ "The `match` expression in `fizzbuzz()` is doing a lot of work. It is " @@ -30338,13 +29790,13 @@ msgstr "" #~ msgstr "Los datos se mueven de `s1` y `s2` si no se accede más." #~ msgid "" -#~ "fn main() { let p1 = Point(3, 4); let p2 = Point(10, 20); let p3 = " -#~ "add(&p1, &p2); println!(\"&p3.0: {:p}\", &p3.0); println!(\"{p1:?} + " -#~ "{p2:?} = {p3:?}\"); }" +#~ "fn main() { let p1 = Point(3, 4); let p2 = Point(10, 20); let p3 = add(&p1, " +#~ "&p2); println!(\"&p3.0: {:p}\", &p3.0); println!(\"{p1:?} + {p2:?} = " +#~ "{p3:?}\"); }" #~ msgstr "" -#~ "fn main() { let p1 = Point(3, 4); let p2 = Point(10, 20); let p3 = " -#~ "add(&p1, &p2); println!(\"&p3.0: {:p}\", &p3.0); println!(\"{p1:?} + " -#~ "{p2:?} = {p3:?}\"); }" +#~ "fn main() { let p1 = Point(3, 4); let p2 = Point(10, 20); let p3 = add(&p1, " +#~ "&p2); println!(\"&p3.0: {:p}\", &p3.0); println!(\"{p1:?} + {p2:?} = " +#~ "{p3:?}\"); }" #~ msgid "" #~ "```rust,ignore\n" @@ -30364,36 +29816,35 @@ msgstr "" #~ msgstr "Iteradores y propiedad (difícil)." #~ msgid "" -#~ "impl Book { // This is a constructor, used below. fn new(title: &str, " -#~ "year: u16) -> Book { Book { title: String::from(title), year, } } }" +#~ "impl Book { // This is a constructor, used below. fn new(title: &str, year: " +#~ "u16) -> Book { Book { title: String::from(title), year, } } }" #~ msgstr "" #~ "impl Book { // Este es el constructor, usado debajo. fn new(title: &str, " #~ "year: u16) -> Book { Book { title: String::from(title), year, } } }" #~ msgid "" #~ "// This makes it possible to print Book values with {}. impl std::fmt::" -#~ "Display for Book { fn fmt(&self, f: &mut std::fmt::Formatter\\<'\\_\\>) -" -#~ "> std::fmt::Result { write!(f, \"{} ({})\", self.title, self.year) } }" +#~ "Display for Book { fn fmt(&self, f: &mut std::fmt::Formatter\\<'\\_\\>) -> " +#~ "std::fmt::Result { write!(f, \"{} ({})\", self.title, self.year) } }" #~ msgstr "" #~ "// Esto hace posible imprimir valores del libro con {}. impl std::fmt::" -#~ "Display for Book { fn fmt(&self, f: &mut std::fmt::Formatter\\<'\\_\\>) -" -#~ "> std::fmt::Result { write!(f, \"{} ({})\", self.title, self.year) } }" +#~ "Display for Book { fn fmt(&self, f: &mut std::fmt::Formatter\\<'\\_\\>) -> " +#~ "std::fmt::Result { write!(f, \"{} ({})\", self.title, self.year) } }" #~ msgid "" #~ "// This shows the desired behavior. Uncomment the code below and // " #~ "implement the missing methods. You will need to update the // method " -#~ "signatures, including the \"self\" parameter! You may // also need to " -#~ "update the variable bindings within main. fn main() { let library = " -#~ "Library::new();" +#~ "signatures, including the \"self\" parameter! You may // also need to update " +#~ "the variable bindings within main. fn main() { let library = Library::new();" #~ msgstr "" #~ "// Esto muestra el estado deseado. Descomenta el código debajo e // " -#~ "implementa el método que falta. Puedes necesitar actualizar el // signo " -#~ "del método, incluyendo el parámetro \"self\". También fn main() { let " -#~ "library = Library::new();" +#~ "implementa el método que falta. Puedes necesitar actualizar el // signo del " +#~ "método, incluyendo el parámetro \"self\". También fn main() { let library = " +#~ "Library::new();" #~ msgid "" -#~ "impl Person { fn say_hello(&self) { println!(\"Hello, my name is {}\", " -#~ "self.name); } }" +#~ "impl Person { fn say_hello(&self) { println!(\"Hello, my name is {}\", self." +#~ "name); } }" #~ msgstr "" -#~ "impl Person { fn say_hello(&self) { println!(\"Hola, mi nombre es {}\", " -#~ "self.name); } }" +#~ "impl Person { fn say_hello(&self) { println!(\"Hola, mi nombre es {}\", self." +#~ "name); } }" diff --git a/po/pl.po b/po/pl.po index 2ff98447c4ff..1b8cc6e0186f 100644 --- a/po/pl.po +++ b/po/pl.po @@ -26052,8 +26052,8 @@ msgstr "" #~ " let Some(request_segment) = request_segments.next() else {\n" #~ " return false;\n" #~ " };\n" -#~ " if request_segment != prefix_segment && prefix_segment != \"*\" " -#~ "{\n" +#~ " if request_segment != prefix_segment && prefix_segment != " +#~ "\"*\" {\n" #~ " return false;\n" #~ " }\n" #~ " }\n"