Definindo o Pet
Parte da seção Object Oriented Programming do Journey de Rust da Coddy — lição 19 de 61.
Desafio
FácilBem-vindo ao projeto Virtual Pet! Ao longo das próximas lições, você construirá uma simulação completa de animal de estimação que reúne tudo o que você aprendeu sobre structs, métodos, módulos e encapsulamento.
Vamos começar a construir seu Virtual Pet! Nesta primeira etapa, você estabelecerá a base criando uma struct Pet em seu próprio módulo com o encapsulamento adequado.
Você organizará seu código em dois arquivos:
pet.rs: Defina sua structPetcom três campos privados:name(String),energy(u32) ehunger(u32). Implemente uma função associada públicanewque recebe um nome e cria um pet comenergydefinido como100ehungerdefinido como0. Adicione também um método getter públiconameque retorna uma referência ao nome do pet.main.rs: Declare o módulopete tragaPetpara o escopo. Leia um nome da entrada, crie um novo pet com esse nome e imprima uma mensagem de boas-vindas.
Sua mensagem de boas-vindas deve seguir este formato:
Welcome, {name}!Por exemplo, se a entrada for Buddy, a saída deve ser:
Welcome, Buddy!Lembre-se de que a struct deve ser pública para que possa ser usada a partir do main.rs, mas os campos devem permanecer privados — acessíveis apenas através dos métodos que você fornecer.
Experimente você mesmo
mod pet;
use pet::Pet;
fn main() {
let mut name = String::new();
std::io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
// TODO: Crie um novo Pet com o nome fornecido
// TODO: Imprima a mensagem de boas-vindas usando o getter do nome do pet
// Formato: "Welcome, {name}!"
}
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