Основы модулей
Часть раздела Object Oriented Programming путешествия по Rust на Coddy — урок 8 из 61.
По мере роста ваших программ на Rust хранение всего в одном файле становится неудобным. Система модулей Rust позволяет организовывать код, перемещая структуры и их реализации в отдельные файлы.
Чтобы создать модуль в отдельном файле, вы просто создаете новый файл с желаемым именем модуля. Например, чтобы создать модуль player, вы должны создать файл с именем player.rs:
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Чтобы использовать этот модуль в вашем основном файле, вы объявляете его с помощью ключевого слова mod. Это указывает Rust искать файл с таким именем:
// main.rs
mod player;
fn main() {
// Теперь мы можем получить доступ к элементам из модуля player
}
Декларация mod player; указывает Rust найти и включить содержимое файла player.rs. Представьте это как подключение кода из этого файла к вашей программе. Имя модуля должно точно совпадать с именем файла (без расширения .rs).
Такое разделение позволяет держать связанный код вместе — определение вашей структуры и все её методы находятся в одном отдельном файле, в то время как main.rs по-прежнему отвечает только за точку входа в программу. В следующем уроке вы узнаете, как на самом деле получить доступ к элементам, которые вы разместили в модулях.
Шпаргалка
Чтобы организовать код в отдельные файлы, создайте файл модуля с нужным именем. Например, player.rs:
// player.rs
struct Player {
name: String,
score: u32,
}
impl Player {
fn new(name: String) -> Player {
Player { name, score: 0 }
}
}
Чтобы использовать модуль в основном файле, объявите его с помощью ключевого слова mod:
// main.rs
mod player;
fn main() {
// Содержимое модуля теперь доступно
}
Объявление mod player; указывает Rust найти и включить player.rs. Имя модуля должно точно совпадать с именем файла (без расширения .rs).
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Object Oriented Programming
1Методы и поведение
Введение в блоки реализацииПараметр SelfИзменяемые методыАссоциированные функцииНесколько блоков реализацииЦепочки вызовов методовИтоги: действия с Rectangle4Проект: Виртуальный питомец
Определение питомцаКормление питомца2Инкапсуляция и модули
Основы модулейКлючевое слово PublicПриватные поляГеттерыСеттерыИтоги — Безопасный сейф5Обобщения
Обобщённые структурыОбобщённые методыНесколько обобщённых типовОбобщённые функцииПовторение — Координатная точка8Трейты как ограничения
Синтаксис ограничений трейтовМножественные ограниченияКонструкция whereВозврат типов с трейтамиИтоги — Обобщённый принтер11Паттерны проектирования в Rust
Паттерн NewtypeКомпозицияТрейт DropFrom и IntoИтоги — Мок-объект Smart Pointer3Продвинутые перечисления
Перечисления с даннымиМетоды в перечисленияхСопоставление вариантов с даннымиСнова об Option EnumИтоги — перечисление Shape6Определение трейтов
Что такое трейт?Реализация трейтовРеализации по умолчаниюПереопределение реализаций по умолчаниюТрейты с параметрамиИтоги — Media Player