Alimentando o Pet
Parte da seção Object Oriented Programming do Journey de Rust da Coddy — lição 20 de 61.
Desafio
FácilAgora que seu pet existe, é hora de dar a ele a habilidade de comer! Nesta etapa, você adicionará um método feed que permite cuidar da fome do seu pet.
Com base no seu módulo pet.rs existente, adicione um método feed que diminua o nível de fome do pet. Quando alimentado, a fome do pet deve diminuir em 30, mas nunca deve ficar abaixo de 0. Após alimentar, o método deve imprimir uma mensagem mostrando que o pet aproveitou a refeição.
Você também precisará de um método getter hunger para poder verificar o nível de fome do pet de fora do módulo.
Em main.rs, você lerá o nome do pet e um valor de fome inicial. Crie seu pet, defina sua fome inicial, alimente-o uma vez e, em seguida, exiba o nível de fome atualizado.
A saída deve seguir este formato:
{name} enjoyed the meal!
Hunger: {hunger_level}Por exemplo, se a entrada for:
Buddy
50A saída deve ser:
Buddy enjoyed the meal!
Hunger: 20E se a fome começar em 20, alimentá-lo a levaria para 0 (não negativo):
Buddy enjoyed the meal!
Hunger: 0Você precisará adicionar um método set_hunger para inicializar a fome para fins de teste, já que o construtor new define a fome como 0 por padrão.
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();
let my_pet = Pet::new(name);
println!("Pet name: {}", my_pet.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