Définir l'animal
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 19 sur 61.
Défi
FacileBienvenue dans le projet Virtual Pet ! Au cours des prochaines leçons, vous construirez une simulation complète d'animal de compagnie qui regroupe tout ce que vous avez appris sur les structs, les méthodes, les modules et l'encapsulation.
Commençons à construire votre Virtual Pet ! Dans cette première étape, vous poserez les bases en créant une struct Pet dans son propre module avec une encapsulation appropriée.
Vous organiserez votre code sur deux fichiers :
pet.rs: Définissez votre structPetavec trois champs privés :name(String),energy(u32) ethunger(u32). Implémentez une fonction associée publiquenewqui prend un nom et crée un animal avecenergydéfini sur100ethungerdéfini sur0. Ajoutez également une méthode getter publiquenamequi renvoie une référence au nom de l'animal.main.rs: Déclarez le modulepetet importezPetdans la portée. Lisez un nom depuis l'entrée, créez un nouvel animal avec ce nom et affichez un message de bienvenue.
Votre message de bienvenue doit suivre ce format :
Welcome, {name}!Par exemple, si l'entrée est Buddy, la sortie doit être :
Welcome, Buddy!N'oubliez pas que la struct doit être publique pour pouvoir être utilisée depuis main.rs, mais les champs doivent rester privés — accessibles uniquement via les méthodes que vous fournissez.
Essayez vous-même
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: Créer un nouvel animal de compagnie (Pet) avec le nom donné
// TODO: Afficher le message de bienvenue en utilisant le getter du nom de l'animal
// Format: "Welcome, {name}!"
}
Toutes les leçons de Object Oriented Programming
1Méthodes et comportement
Introduction aux blocs d'implémentationLe paramètre SelfMéthodes mutablesFonctions associéesBlocs d'implémentation multiplesChaînage de méthodesRécapitulatif - Actions sur le rectangle4Projet : Animal virtuel
Définir l'animalNourrir l'animal7Traits standards
Le trait DebugLe trait DisplayClone et CopyLes traits d'égalitéRécapitulatif - Point affichable10Projet : Système de documents
Le trait DrawComposant texte2Encapsulation et modules
Bases des modulesLe mot-clé publicChamps privésGettersSettersRécapitulatif - Casier sécurisé5Généricité
Structures génériquesMéthodes génériquesPlusieurs types génériquesFonctions génériquesRécapitulatif - Point de coordonnées8Les Traits comme contraintes
Syntaxe des contraintes de traitContraintes multiplesLa clause whereRetourner des types avec des traitsRécapitulatif - Afficheur générique11Design Patterns en Rust
Le pattern NewtypeCompositionLe trait DropFrom et IntoRécapitulatif - Mock de Smart Pointer3Enums avancées
Enums avec donnéesMéthodes sur les EnumsMatching des variantes de donnéesL'Enum Option revisitéeRécapitulatif - Enum Shape6Définition des Traits
Qu'est-ce qu'un Trait ?Implémenter des TraitsImplémentations par défautRedéfinir les comportements par défautTraits avec paramètresRécapitulatif - Lecteur multimédia