Тема |
Описание |
Доп. |
|---|---|---|
crate cargo-modules - Плагин Cargo для визуализации/анализа внутренней структуры crate. |
||
Показывает структуру папки
|
||
Современный стиль (без mod.rs) |
С 2018 edition можно писать так:
File lib.rs:
File network.rs:
|
|
Рекомендация не использовать в подмодулях mod.rs А вместо этого сделать реимпорт в нормально именованный файл и его уже импортировать |
Или так через явный путь
|
|
Используйте pub use для удобного API Чтобы не заставлять пользователей писать длинные пути |
Теперь пользователи вашей библиотеки смогут просто использовать готовый импорт Хорошая практика группировки таких импортов под общим названием
Тогда пользователи библиотеки смогут сразу импортировать все компоненты:
|
|
импорты хорошо разделять по следующим секциям (дабы не было кучей) |
Пример:
Внутри одной секции, и внутри каждой строки элементы должны идти в алфавитном порядке. |
|
Модификаторы видимости pub |
Если вы раскрываете внутренние детали реализации структуры данных, предполагаемое будущее изменение для использования более эффективного алгоритма становится критическим изменением. Если вы раскрываете внутренние вспомогательные функции, это неизбежно, что некоторый внешний код станет зависеть от точных деталей этих функций. По умолчанию всё в Rust приватно. Если ты пишешь просто Но pub можно "ограничить":
|
|
pub(crate)
Это очень удобно, когда у тебя есть внутренние утилиты или вспомогательные API, которые нужны многим модулям внутри библиотеки, но ты не хочешь засорять публичный интерфейс. |
Пример проекта
File lib.rs:
File parser.rs:
File utils.rs:
Использование Если мы соберём бинарник внутри того же проекта File main.rs:
Что мы получили
Это классический случай: внутренний API для своих, но не часть контракта с пользователем. |
|
pub(super) → видно только в родительском модуле (и его содержимом). локальный внутренний доступ, только на один уровень вверх |
Ситуация Представь, у нас есть модуль Структура проекта
File lib.rs:
File parser/mod.rs:
File parser/lexer.rs:
Использование File main.rs
Что получилось
Таким образом |
|