
Caso de prueba: Límites vacíos
En este laboratorio, el código demuestra cómo se pueden utilizar los tratos como límites, incluso si los tratos no incluyen ninguna funcionalidad, tomando como ejemplo los tratos Eq y Copy.
Rust

Genéricos expresivos de Rust con cláusula where
En este laboratorio, aprendemos que una cláusula where en Rust se puede utilizar para expresar límites para tipos genéricos por separado de su declaración, lo que permite una sintaxis más clara, y también se puede aplicar a tipos arbitrarios en lugar de solo a parámetros de tipo. La cláusula where es especialmente útil cuando los límites son más expresivos que la sintaxis normal, como se muestra en el ejemplo que involucra el trato PrintInOption.
Rust

Caso de prueba: Aclaración de unidades
En este laboratorio, se examina la implementación del trato Add con un parámetro de tipo fantasma utilizando el código de ejemplo proporcionado en Rust.
Rust

Explorando los Tipos Asociados de Rust
En este laboratorio, exploramos el concepto de tipos asociados en Rust, que permite mejorar la legibilidad del código al definir tipos internos localmente dentro de un trato como tipos de salida. Esto se logra mediante el uso de la palabra clave type dentro de la definición del trato. Con tipos asociados, las funciones que usan el trato ya no necesitan expresar explícitamente los tipos A y B, lo que hace que el código sea más conciso y flexible. Reescribimos un ejemplo de la sección anterior usando tipos asociados para ilustrar su uso en la práctica.
Rust

Idioma de Nuevo Tipo
En este laboratorio, exploramos el idioma de nuevo tipo, que ofrece garantías en tiempo de compilación al permitir crear un nuevo tipo que es distinto de su tipo subyacente. Se muestra un ejemplo donde una estructura Years se utiliza para representar la edad en años y una estructura Days se utiliza para representar la edad en días. Al utilizar el idioma de nuevo tipo, podemos garantizar que se suministra el tipo correcto de valor a un programa, como en la función de verificación de edad old_enough, que requiere un valor del tipo Years. Además, aprendemos cómo obtener el valor de un nuevo tipo como su tipo subyacente utilizando la sintaxis de tuplas o de desestructuración.
Rust

Implementación de rasgos genéricos de contenedores
En este laboratorio, tenemos un rasgo llamado Contains que es genérico sobre su tipo de contenedor y requiere la especificación explícita de sus tipos genéricos cuando se implementa para el tipo Container.
Rust

Parámetros de Tipo Fantasma
En este laboratorio, exploramos el concepto de parámetros de tipo fantasma, que son parámetros de tipo que se comprueban en tiempo de compilación de manera estática y no tienen ningún comportamiento o valores en tiempo de ejecución. Demostramos su uso en Rust combinando std::marker::PhantomData con el concepto de parámetros de tipo fantasma para crear tuplas y structs que contengan diferentes tipos de datos.
Rust

Exploración de múltiples límites en Rust
En este laboratorio, el código demuestra el concepto de múltiples límites en Rust, donde un solo tipo puede tener múltiples límites aplicados utilizando el operador +.
Rust

Restricciones de Tipo de Genéricos en Rust
En este laboratorio, al trabajar con genéricos en Rust, los parámetros de tipo deben estar limitados por traits para especificar la funcionalidad que un tipo debe implementar.
Rust

Implementar el trato genérico de doble desasignación
En este laboratorio, se define un trato genérico DoubleDrop, que incluye un método double_drop que permite a un tipo desasignarse a sí mismo y un parámetro de entrada.
Rust

Explorando la funcionalidad de genéricos en Rust
En este laboratorio, exploraremos el tema de los genéricos, que implica generalizar tipos y funcionalidades para manejar una gama más amplia de casos y reducir la duplicación de código. La sintaxis de los genéricos en Rust implica especificar parámetros de tipo usando corchetes angulares, como <T>. Al usar genéricos, podemos crear funciones genéricas que pueden aceptar argumentos de cualquier tipo. Además, podemos definir tipos genéricos que pueden trabajar con diferentes tipos concretos.
Rust

Deshabilitar advertencias de código no utilizado en Rust
En este laboratorio, el compilador proporciona un lint de código muerto (dead_code) que advierte sobre funciones no utilizadas, pero puedes utilizar atributos, como #[allow(dead_code)], para deshabilitar el lint y evitar las advertencias.
Rust

Compilación de funciones condicionales en Rust
En este laboratorio, tenemos un fragmento de código que incluye una función llamada conditional_function(), pero solo se compilará y ejecutará si una condición personalizada llamada some_condition se pasa a rustc utilizando la bandera --cfg.
Rust

Compilación condicional con el atributo cfg de Rust
En este laboratorio, aprenderá sobre el atributo cfg y la macro cfg! en Rust, que permiten realizar comprobaciones condicionales en la configuración y la evaluación, respectivamente. El atributo cfg habilita la compilación condicional, mientras que la macro cfg! se evalúa a verdadero o falso en tiempo de ejecución. Los bloques de código que usan cfg! deben ser válidos independientemente del resultado de la evaluación, a diferencia de #[cfg] que puede eliminar código.
Rust

Atributos de Cargo en el Desarrollo de Rust
En este laboratorio, se explica que los atributos crate_type y crate_name en Rust no tienen efecto cuando se utiliza Cargo, el administrador de paquetes de Rust, que se utiliza ampliamente para proyectos de Rust.
Rust

Definir funciones genéricas en Rust
En este laboratorio, aprenderá a definir funciones genéricas en Rust. Para hacer una función genérica, debe agregar el tipo T precedido de <T>. A veces, es posible que tenga que especificar explícitamente los parámetros de tipo al llamar a una función genérica, lo que se puede hacer usando la sintaxis fun::<A, B,...>(). El código proporcionado demuestra el uso de funciones genéricas en Rust y incluye ejemplos de funciones que son tanto genéricas como no genéricas.
Rust

Implementar Tipos Genéricos en Rust
En este laboratorio, aprendemos cómo implementar tipos y métodos genéricos en Rust, lo que nos permite especificar diferentes parámetros de tipo cuando usamos la estructura o llamamos a los métodos.
Rust

Fundamentos de Pruebas de Software en Rust
En este laboratorio, exploraremos la importancia de las pruebas en el desarrollo de software utilizando Rust y cómo escribir diferentes tipos de pruebas, como pruebas unitarias e integrales. También aprenderemos sobre la organización de las pruebas en proyectos Rust y cómo ejecutarlas utilizando el comando cargo test. Además, discutiremos los posibles problemas que pueden surgir al ejecutar las pruebas de manera concurrente y proporcionaremos un ejemplo para ilustrarlo.
Rust