Организация кода с помощью модулей
Научитесь использовать модульную систему Rust для логической группировки кода, управления приватностью и масштабирования проектов.
«Организация кода с помощью модулей» — бесплатный урок Learn Rust Coding на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn Rust Coding, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn Rust Coding содержит 3 уроков всего.
Организация кода с помощью модулей
По мере роста проектов на Rust хранить весь код в одном файле становится неудобно. Модульная система Rust помогает организовать код в логические блоки.
Модули похожи на папки для кода. Они объединяют связанные функции, структуры, перечисления и константы, повышая удобство чтения и сопровождения.
Объявление первого модуля
Модуль объявляется с помощью ключевого слова mod, за которым следует имя модуля. Это похоже на создание вложенного пространства имён внутри программы.
Создадим простой модуль greetings:
mod greetings {
// This is where greeting functions would go
}
fn main() {
println!("Hello from main!");
}Понимание приватности модулей
По умолчанию всё внутри модуля является приватным. Это означает, что получить доступ к этим элементам из-за пределов модуля нельзя, пока явно не сделать их публичными.
Если попытаться вызвать приватную функцию, Rust выдаст ошибку компиляции. Попробуйте раскомментировать строку ниже и запустить код:
mod greetings {
fn hello() {
println!("Hello from the greetings module!");
}
}
fn main() {
// Uncomment the line below and try to run!
// greetings::hello();
println!("Main function running.");
}Открытие элементов с помощью `pub`
Чтобы сделать элемент (например, функцию, структуру или перечисление) видимым за пределами модуля, используется ключевое слово pub.
pub fnделает функцию публичной.pub structделает структуру публичной.pub modделает вложенный модуль публичным, позволяя обращаться к его содержимому.
Приватность — важная часть безопасности и организации кода в Rust!
`pub` в действии
Теперь сделаем нашу функцию hello публичной с помощью pub. Это позволит функции main вызвать её без ошибки доступа.
Запустите этот код, чтобы увидеть приветствие из нашего модуля:
mod greetings {
pub fn hello() {
println!("Hello from the greetings module!");
}
}
fn main() {
greetings::hello();
}Упрощение путей с помощью `use`
Полные пути вроде greetings::hello() могут быстро надоесть. Ключевое слово use позволяет внести элементы в область видимости, чтобы к ним было проще обращаться.
Это похоже на import в Python или using в C#. В область видимости можно внести отдельный элемент или целый модуль.
`use` в действии
Вот как можно использовать use, чтобы сократить путь к нашей функции hello. Обратите внимание: префикс greetings:: больше не нужен.
Так код становится чище и понятнее.
mod greetings {
pub fn hello() {
println!("Hello, module user!");
}
}
use greetings::hello; // Bring `hello` into scope
fn main() {
hello(); // Now we can call it directly
}Вложенные модули и относительные пути
Модули могут быть вложенными! Можно определять модули внутри других модулей для ещё более точной организации кода. Для навигации по ним Rust предоставляет super и self.
superобозначает родительский модуль.selfобозначает текущий модуль.
Они полезны для задания относительных путей в сложных иерархиях модулей.
mod outer {
pub mod inner {
pub fn call_me() {
println!("Called from inner module!");
}
}
pub fn call_inner() {
// Accessing inner module from parent
inner::call_me();
}
}
fn main() {
outer::call_inner();
outer::inner::call_me();
}Модули и структура файлов
Код крупных модулей можно поместить в отдельные файлы. Rust автоматически ищет определения модулей в определённых местах:
- Для
mod my_module;вsrc/main.rsRust ищетsrc/my_module.rsилиsrc/my_module/mod.rs. - Это помогает сохранить основной файл чистым и перенести содержимое в подходящие файлы.
В этом уроке для простоты используются отдельные файлы, но помните об этом при работе над большими проектами!
Проверка доступа к модулям
Рассмотрите следующий код на Rust. Какие строки скомпилируются без ошибки доступа?
mod calculator {
fn add(a: i32, b: i32) -> i32 {
a + b
}
pub fn subtract(a: i32, b: i32) -> i32 {
a - b
}
mod advanced {
pub fn multiply(a: i32, b: i32) -> i32 {
a * b
}
}
}
fn main() {
// Line A
// calculator::add(5, 3);
// Line B
// calculator::subtract(10, 4);
// Line C
// calculator::advanced::multiply(2, 6);
// Line D
// calculator::advanced::add(1, 1);
}Модули: организация и управление
Отличная работа! Вы узнали, как модульная система Rust помогает структурировать код:
- Используйте
mod, чтобы объявлять модули и вложенные модули. - Элементы по умолчанию являются приватными; используйте
pub, чтобы сделать их доступными. useупрощает длинные пути к элементам.- В больших проектах модули можно распределить по нескольким файлам.
Модули необходимы для управления сложностью в Rust. Продолжайте практиковаться!
Часто задаваемые вопросы
Урок «Организация кода с помощью модулей» бесплатный?
Да — полный текст урока «Организация кода с помощью модулей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn Rust Coding, подпишись на CoddyKit PRO. Курс Learn Rust Coding содержит 3 уроков всего.
Чему я научусь в уроке «Организация кода с помощью модулей»?
Научитесь использовать модульную систему Rust для логической группировки кода, управления приватностью и масштабирования проектов. Ты практикуешь Learn Rust Coding с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn Rust Coding?
Предыдущий опыт не требуется. Learn Rust Coding на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Организация кода с помощью модулей»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn Rust Coding?
Да. Каждый урок Learn Rust Coding включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Организация кода с помощью модулей
- Управление зависимостями с помощью пакетов
- Надёжная обработка ошибок с помощью `Result`