Componente de Texto
Parte da seção Object Oriented Programming do Journey de Rust da Coddy — lição 50 de 61.
Desafio
FácilCom base na trait Draw que você criou na lição anterior, vamos adicionar nosso primeiro componente de UI real: um TextField. Este componente representará um elemento de exibição de texto em nosso sistema de documentos.
Você expandirá seu projeto com um novo arquivo de módulo:
draw.rs: Mantenha sua traitDrawdo desafio anterior.text_field.rs: Crie uma structTextFieldcom um campo públicocontent(umaString). Implemente a traitDrawparaTextFieldde modo que a chamada dedraw()imprima o texto em um formato específico:Text: {content}main.rs: Importe ambos os módulos e crie uma instância deTextField. Chame seu métododraw()para renderizar o componente.
Lembre-se de que seu módulo text_field precisa usar a trait Draw do módulo draw. Você pode acessá-la com crate::draw::Draw, já que ambos os módulos fazem parte da mesma crate.
A seguinte entrada será fornecida:
- Uma string representando o conteúdo do campo de texto
Sua saída deve seguir este formato exato:
Text: Hello WorldExperimente você mesmo
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: Criar uma instância de TextField e chamar draw() nela
}Todas as lições de Object Oriented Programming
1Métodos e Comportamento
Introdução a Blocos de ImplementaçãoO Parâmetro SelfMétodos MutáveisFunções AssociadasMúltiplos Blocos de ImplementaçãoEncadeamento de MétodosRecapitulação - Ações de Retângulo4Projeto: Pet Virtual
Definindo o PetAlimentando o Pet7Traits Padrão
A Trait DebugA Trait DisplayClone e CopyTraits de IgualdadeRecapitulação - Ponto Imprimível10Projeto: Sistema de Documentos
A Trait DrawComponente de Texto2Encapsulamento e Módulos
Fundamentos de MódulosA Palavra-chave PublicCampos PrivadosGettersSettersRecapitulação - Cofre Seguro5Genéricos
Structs GenéricasMétodos GenéricosMúltiplos Tipos GenéricosFunções GenéricasRecapitulação - Ponto de Coordenada8Traits como Restrições
Sintaxe de Restrições de TraitRestrições MúltiplasA Cláusula WhereRetornando Tipos com TraitsRecapitulação - Impressora Genérica11Padrões de Projeto em Rust
Padrão NewtypeComposiçãoA Trait DropFrom e IntoRecapitulação - Mock de Smart Pointer3Enums Avançados
Enums com DadosMétodos em EnumsCorrespondência de Variantes de DadosO Enum Option RevisitadoRecapitulação - Enum Shape6Definição de Traits
O que é uma Trait?Implementando TraitsImplementações PadrãoSobrescrevendo PadrõesTraits com ParâmetrosRecapitulação - Media Player