Логическая группа кода называется модулем. Несколько модулей скомпилированы в единицу, называемую crate . Программы Rust могут содержать бинарный ящик или библиотечный ящик. Бинарный ящик — это исполняемый проект с методом main () . Ящик библиотеки — это группа компонентов, которые можно использовать в других проектах. В отличие от бинарного ящика, у библиотечного ящика нет точки входа (метод main ()). Инструмент Cargo используется для управления ящиками в Rust. Например, сетевой модуль содержит функции, связанные с сетью, а графический модуль содержит функции, связанные с рисованием. Модули похожи на пространства имен в других языках программирования. Ящики сторонних производителей можно загрузить с помощью груза с сайта crates.io .
Sr.No | Срок и описание |
---|---|
1 |
клеть Является ли блок компиляции в Rust; Ящик компилируется в двоичный файл или библиотеку. |
2 |
грузовой Официальный инструмент управления пакетами Rust для ящиков. |
3 |
модуль Логически группирует код внутри ящика. |
4 |
Официальный реестр пакетов Rust. |
клеть
Является ли блок компиляции в Rust; Ящик компилируется в двоичный файл или библиотеку.
грузовой
Официальный инструмент управления пакетами Rust для ящиков.
модуль
Логически группирует код внутри ящика.
Официальный реестр пакетов Rust.
Синтаксис
//public module pub mod a_public_module { pub fn a_public_function() { //public function } fn a_private_function() { //private function } } //private module mod a_private_module { fn a_private_function() { } }
Модули могут быть общедоступными или частными. Компоненты в частном модуле не могут быть доступны для других модулей. Модули в Rust являются частными по умолчанию. Напротив, функции в общедоступном модуле могут быть доступны для других модулей. Модули должны иметь префикс с ключевым словом pub, чтобы сделать его общедоступным. Функции в публичном модуле также должны быть общедоступными.
Иллюстрация: определение модуля
Пример определяет публичный модуль — фильмы . Модуль содержит функцию play (), которая принимает параметр и печатает его значение.
pub mod movies { pub fn play(name:String) { println!("Playing movie {}",name); } } fn main(){ movies::play("Herold and Kumar".to_string()); }
Выход
Playing movie Herold and Kumar
Используйте ключевое слово
Ключевое слово use помогает импортировать публичный модуль.
Синтаксис
use public_module_name::function_name;
иллюстрация
pub mod movies { pub fn play(name:String) { println!("Playing movie {}",name); } } use movies::play; fn main(){ play("Herold and Kumar ".to_string()); }
Выход
Playing movie Herold and Kumar
Вложенные модули
Модули также могут быть вложенными. Комедийный модуль вложен в английский модуль, который далее вложен в модуль фильмов . Пример, приведенный ниже, определяет функцию воспроизведения внутри модуля movies / english / comedy .
pub mod movies { pub mod english { pub mod comedy { pub fn play(name:String) { println!("Playing comedy movie {}",name); } } } } use movies::english::comedy::play; // importing a public module fn main() { // short path syntax play("Herold and Kumar".to_string()); play("The Hangover".to_string()); //full path syntax movies::english::comedy::play("Airplane!".to_string()); }
Выход
Playing comedy movie Herold and Kumar Playing comedy movie The Hangover Playing comedy movie Airplane!
Иллюстрация — Создайте библиотечный ящик и используйте его в двоичном ящике
Давайте создадим библиотечный ящик с именем movie_lib , который содержит модуль кино . Для создания ящика библиотеки movie_lib мы будем использовать инструмент Cargo .
Шаг 1 — Создать папку проекта
Создайте папку movie-app, а затем подпапку movie-lib . После создания папки и подпапки создайте в этом каталоге папку src и файл Cargo.toml. Исходный код должен находиться в папке src . Создайте файлы lib.rs и movies.rs в папке src. Файл Cargo.toml будет содержать метаданные проекта, такие как номер версии, имя автора и т. Д.
Структура каталога проекта будет такой, как показано ниже —
movie-app movie-lib/ -->Cargo.toml -->src/ lib.rs movies.rs
Шаг 2 — Отредактируйте файл Cargo.toml, чтобы добавить метаданные проекта
[package] name = "movies_lib" version = "0.1.0" authors = ["Mohtashim"]
Шаг 3 — Отредактируйте файл lib.rs.
Добавьте следующее определение модуля в этот файл.
pub mod movies;
Вышеуказанная строка создает публичный модуль — фильмы .
Шаг 4 — Отредактируйте файл movies.rs
Этот файл будет определять все функции для модуля фильмов.
pub fn play(name:String){ println!("Playing movie {} :movies-app",name); }
Приведенный выше код определяет функцию play (), которая принимает параметр и выводит его на консоль.
Шаг 5 — Постройте библиотечный ящик
Создайте приложение, используя команду cargo build, чтобы проверить, правильно ли структурирован ящик библиотеки. Убедитесь, что вы находитесь в корне проекта — папка фильма-приложения. Следующее сообщение будет отображаться в терминале, если сборка завершится успешно.
D:\Rust\movie-lib> cargo build Compiling movies_lib v0.1.0 (file:///D:/Rust/movie-lib) Finished dev [unoptimized + debuginfo] target(s) in 0.67s
Шаг 6 — Создайте тестовое приложение
Создайте еще одну папку movie-lib-test в папке movie-app, затем файл Cargo.toml и папку src. В этом проекте должен быть метод main, так как это двоичный ящик, который будет использовать созданный ранее ящик библиотеки. Создайте файл main.rs в папке src. Структура папок будет такой, как показано.
movie-app movie-lib // already completed movie-lib-test/ -->Cargo.toml -->src/ main.rs
Шаг 7 — Добавьте следующее в файл Cargo.toml
[package] name = "test_for_movie_lib" version = "0.1.0" authors = ["Mohtashim"] [dependencies] movies_lib = { path = "../movie-lib" }
ПРИМЕЧАНИЕ. — Путь к папке библиотеки устанавливается как зависимости. Следующая диаграмма показывает содержание обоих проектов.
Шаг 8 — Добавьте следующее в файл main.rs
extern crate movies_lib; use movies_lib::movies::play; fn main() { println!("inside main of test "); play("Tutorialspoint".to_string()) }
Приведенный выше код импортирует внешний пакет movies_lib. Проверьте Cargo.toml текущего проекта, чтобы проверить имя ящика.
Шаг 9 — Использование грузовой сборки и грузовой пробег
Мы будем использовать сборку грузов и запуск грузов, чтобы построить бинарный проект и выполнить его, как показано ниже —