Definir la mascota
Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 19 de 61.
Desafío
Fácil¡Bienvenido al proyecto Mascota Virtual! Durante las próximas lecciones, construirás una simulación completa de una mascota que reúne todo lo que has aprendido sobre structs, métodos, módulos y encapsulación.
¡Comencemos a construir tu Mascota Virtual! En este primer paso, establecerás la base creando un struct Pet en su propio módulo con la encapsulación adecuada.
Organizarás tu código en dos archivos:
pet.rs: Define tu structPetcon tres campos privados:name(String),energy(u32) yhunger(u32). Implementa una función asociada públicanewque reciba un nombre y cree una mascota conenergyestablecida en100yhungerestablecida en0. También agrega un método getter públiconameque devuelva una referencia al nombre de la mascota.main.rs: Declara el módulopete incorporaPetal alcance. Lee un nombre de la entrada, crea una nueva mascota con ese nombre e imprime un mensaje de bienvenida.
Tu mensaje de bienvenida debe seguir este formato:
Welcome, {name}!Por ejemplo, si la entrada es Buddy, la salida debería ser:
Welcome, Buddy!Recuerda que el struct debe ser público para que pueda usarse desde main.rs, pero los campos deben permanecer privados, solo accesibles a través de los métodos que proporciones.
Pruébalo tú mismo
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: Crear una nueva mascota (Pet) con el nombre dado
// TODO: Imprimir el mensaje de bienvenida usando el captador (getter) del nombre de la mascota
// Formato: "Welcome, {name}!"
}
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 multimedia