Модули, Cargo, фичи, редакции
Дерево модулей, видимость, крейты и рабочие пространства, фичи и cfg, редакции и MSRV, SemVer.
Тема объясняет, как устроен код за пределами одного файла: дерево модулей крейта, пакеты и рабочие пространства Cargo, фичи, редакции и версионирование. Вопросы о дереве модулей проверяют, где лежит тело модуля, почему дочерний модуль не наследует use, как разрешаются конфликты явных импортов и импортов по маске (glob) и как одно имя живёт в разных пространствах имён. Раздел о видимости разбирает pub(crate), pub(super) и pub(in …), доступ потомка к приватному у предка, приватные поля в литерале структуры и приватный тип в публичной сигнатуре. Отдельно рассматриваются пакеты и рабочие пространства (workspaces): число крейтов в пакете, имя крейта и имя пакета, виртуальный манифест, наследование зависимостей и настройки, действующие только в корне пространства. Раздел о фичах объясняет #[cfg], cfg! и cfg_attr, фичи от необязательных зависимостей, аддитивность фич и поведение резолвера версии 2. Последние разделы посвящены редакциям (editions) и полю rust-version, изменениям редакции 2024, требованиям SemVer в Cargo и роли Cargo.lock.
41 вопрос: базовый уровень — 17, средний — 19, углублённый — 5. 6 справок, 37 источников.
Разделы
- Дерево модулей и
use - Видимость:
pub,pub(crate) - Крейты и рабочие пространства
- Фичи и условная компиляция
- Редакции и MSRV
- SemVer и
Cargo.lock
Предыдущая тема: Обработка ошибок · Следующая тема: Умные указатели, внутренняя изменяемость