BorrowCheck › Ядро языка Rust

Модули, 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 источников.

Разделы

  1. Дерево модулей и use
  2. Видимость: pub, pub(crate)
  3. Крейты и рабочие пространства
  4. Фичи и условная компиляция
  5. Редакции и MSRV
  6. SemVer и Cargo.lock

Предыдущая тема: Обработка ошибок · Следующая тема: Умные указатели, внутренняя изменяемость