0Pricing
Learn Rust Coding · Урок

Организация кода с помощью модулей

Научитесь использовать модульную систему 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.rs Rust ищет 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 — локальная установка не требуется.

Все уроки этого курса

  1. Организация кода с помощью модулей
  2. Управление зависимостями с помощью пакетов
  3. Надёжная обработка ошибок с помощью `Result`
← Назад к Learn Rust Coding