Определение питомца
Часть раздела Объектно-ориентированное программирование путешествия по Rust на Coddy. Урок 19 из 61.
Задание
ЛегкоДобро пожаловать в проект «Виртуальный питомец»! В следующих нескольких уроках ты создашь полноценную симуляцию питомца, которая объединит всё, что ты узнал о struct, method, модулях и инкапсуляции.
Давай начнём создавать твоего виртуального питомца! На этом первом шаге ты заложишь основу, создав struct Pet в отдельном модуле с правильной инкапсуляцией.
Ты организуешь код в двух файлах:
pet.rs: Define свою structPetс тремя private полями:name(String),energy(u32) иhunger(u32). Implement publicnewassociated function, которая takes имя и создаёт питомца сenergy, установленным в100, иhunger, установленным в0. Также добавь public getter methodname, который returns reference на имя питомца.main.rs: Объяви модульpetи добавьPetв область видимости. Считай имя из ввода, создай нового питомца с этим именем и выведи приветственное сообщение.
Твоё приветственное сообщение должно соответствовать этому формату:
Welcome, {name}!Например, если на вход подаётся Buddy, результат должен быть таким:
Welcome, Buddy!Помни, что struct должна быть public, чтобы её можно было использовать из main.rs, но поля должны оставаться private: доступ к ним возможен только через предоставленные тобой method.
Попробуйте сами
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: Создать нового Pet с заданным именем
// TODO: Вывести приветственное сообщение, используя геттер имени питомца
// Формат: "Welcome, {name}!"
}
Все уроки раздела Объектно-ориентированное программирование
1Методы и поведение
Введение в блоки реализацииПараметр SelfИзменяемые методыАссоциированные функцииНесколько блоков реализацииЦепочки вызовов методовИтоги: действия с Rectangle4Проект: Виртуальный питомец
Определение питомцаКормление питомца2Инкапсуляция и модули
Основы модулейКлючевое слово PublicПриватные поляГеттерыСеттерыИтоги — Безопасный сейф5Обобщения
Обобщённые структурыОбобщённые методыНесколько обобщённых типовОбобщённые функцииПовторение — Координатная точка8Трейты как ограничения
Синтаксис ограничений трейтовМножественные ограниченияКонструкция whereВозврат типов с трейтамиИтоги — Обобщённый принтер11Паттерны проектирования в Rust
Паттерн NewtypeКомпозицияТрейт DropFrom и IntoИтоги — Мок-объект Smart Pointer3Продвинутые перечисления
Перечисления с даннымиМетоды в перечисленияхСопоставление вариантов с даннымиСнова об Option EnumИтоги — перечисление Shape6Определение трейтов
Что такое трейт?Реализация трейтовРеализации по умолчаниюПереопределение реализаций по умолчаниюТрейты с параметрамиИтоги — Media PlayerПотренируйтесь самостоятельно: Онлайн-компилятор Rust