Componente de texto
Parte de la sección Object Oriented Programming del Journey de Rust de Coddy. Lección 50 de 61.
Desafío
FácilBasándonos en el trait Draw que creaste en la lección anterior, vamos a añadir nuestro primer componente de interfaz de usuario real: un TextField. Este componente representará un elemento de visualización de texto en nuestro sistema de documentos.
Ampliarás tu proyecto con un nuevo archivo de módulo:
draw.rs: Mantén tu traitDrawdel desafío anterior.text_field.rs: Crea una estructuraTextFieldcon un campo públicocontent(unString). Implementa el traitDrawparaTextFieldde modo que al llamar adraw()se imprima el texto en un formato específico:Text: {content}main.rs: Incorpora ambos módulos y crea una instancia deTextField. Llama a su métododraw()para renderizar el componente.
Recuerda que tu módulo text_field necesita usar el trait Draw del módulo draw. Puedes acceder a él con crate::draw::Draw ya que ambos módulos forman parte del mismo crate.
Se proporcionará la siguiente entrada:
- Una cadena que representa el contenido del campo de texto
Tu salida debe seguir este formato exacto:
Text: Hello WorldPruébalo tú mismo
mod draw;
mod text_field;
use draw::Draw;
pub struct Label {
pub text: String,
}
impl Draw for Label {
fn draw(&self) {
println!("{}", self.text);
}
}
fn main() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("Failed to read line");
let content = input.trim().to_string();
// TODO: Crear una instancia de TextField y llamar a draw() en ella
}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 multimediaPractica por tu cuenta: Compilador de Rust online