El Trait Draw
Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 49 de 61.
Desafío
Fácil¡Comencemos a construir un Sistema de Documentos! En este proyecto, crearás un marco flexible para renderizar componentes de UI utilizando objetos de rasgo (trait objects). La base comienza definiendo un trait Draw en su propio archivo de módulo.
Crearás dos archivos para organizar tu código:
draw.rs: Define un trait públicoDrawcon un único método llamadodrawque tome&selfe imprima la salida. Este trait servirá como el contrato que todos los componentes de UI deben cumplir.main.rs: Incorpora tu módulodrawy crea una estructura simple llamadaLabelcon un campo públicotext(unString). Implementa el traitDrawparaLabelde modo que al llamar adraw()se imprima el texto de la etiqueta.
En tu función principal, crea una instancia de Label y llama a su método draw() para mostrar el texto.
Se proporcionará la siguiente entrada:
- Una cadena que representa el texto de la etiqueta
Tu salida debe ser exactamente el texto de la etiqueta en una sola línea.
Pruébalo tú mismo
mod draw;
use draw::Draw;
// TODO: Definir una estructura pública llamada Label con un campo de texto público (String)
// TODO: Implementar el rasgo Draw para Label
// El método draw debe imprimir el texto de la etiqueta
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let text = input.trim().to_string();
// TODO: Crear una instancia de Label con el texto de entrada
// TODO: Llamar al método draw() en la etiqueta
}
Todas las lecciones de Object Oriented Programming
1Métodos y Comportamiento
Intro a Bloques de ImplementaciónEl Parámetro SelfMétodos MutablesFunciones AsociadasMúltiples Bloques de ImplementaciónEncadenamiento de MétodosResumen - Acciones de Rectángulo4Proyecto: Mascota virtual
Definir la mascotaAlimentar a la mascota7Traits estándar
El trait DebugEl trait DisplayClone y CopyTraits de igualdadResumen - Punto imprimible10Proyecto: Sistema de documentos
El Trait DrawComponente de texto2Encapsulamiento y módulos
Conceptos básicos de módulosLa palabra clave PublicCampos privadosGettersSettersRepaso - Casillero seguro5Genéricos
Estructuras genéricasMétodos genéricosMúltiples tipos genéricosFunciones genéricasResumen - Punto de coordenadas8Traits como límites
Sintaxis de límites de traitsLímites múltiplesLa cláusula whereRetornar tipos con traitsResumen: Impresora genérica11Patrones de diseño en Rust
Patrón NewtypeComposiciónEl Trait DropFrom e IntoResumen - Mock de Smart Pointer3Enums avanzados
Enums con datosMétodos en EnumsCoincidencia de variantes de datosEl Enum Option revisitadoResumen - Enum Shape6Definición de Traits
¿Qué es un Trait?Implementación de TraitsImplementaciones por defectoSobrescribir valores por defectoTraits con parámetrosResumen - Reproductor multimedia