Рабочие пространства
Проекты с несколькими крейтами
«Рабочие пространства» — бесплатный урок Learn Rust Coding на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn Rust Coding, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn Rust Coding содержит 4 уроков всего.
Что такое рабочая область?
Рабочая область — это набор связанных пакетов, использующих один Cargo.lock и общий каталог target. Это стандартный способ управления проектами из нескольких пакетов.
Корневой манифест
В корне рабочей области находится Cargo.toml с таблицей [workspace], в которой перечислены пакеты-участники. Сам корень обычно не содержит пакета.
[workspace]
members = ["app", "core", "utils"]
resolver = "2"Структура рабочей области
Обычно каждый пакет находится в собственном подкаталоге:
Cargo.toml— корень рабочей областиapp/— двоичный пакетcore/— библиотечный пакетutils/— ещё один библиотечный пакет
Создание участников
Создайте участников так же, как любой пакет, а затем добавьте их в список members корневого манифеста.
cargo new app
cargo new core --lib
cargo new utils --libЗависимость от участника
Один пакет-участник зависит от другого, используя зависимость path в собственном Cargo.toml.
[dependencies]
core = { path = "../core" }
utils = { path = "../utils" }Вызов функций из других пакетов
Публичные элементы одного пакета используются из другого по имени пакета. Здесь core предоставляет функцию, которую вызывает двоичный пакет.
// in core/src/lib.rs
pub fn greeting(name: &str) -> String {
format!("Hello, {name}!")
}
// in app/src/main.rs
fn main() {
let msg = core::greeting("workspace");
println!("{msg}");
}Сборка всей рабочей области
Запуск Cargo из корня собирает каждого участника. Благодаря общему каталогу target общие зависимости компилируются только один раз.
cargo build
cargo testВыбор одного участника
Используйте -p (или --package), чтобы выполнить команду для одного пакета-участника.
cargo run -p app
cargo test -p coreЗависимости рабочей области
Определите общие версии один раз в разделе [workspace.dependencies], а затем ссылайтесь на них из пакетов-участников, чтобы синхронизировать версии.
# root Cargo.toml
[workspace.dependencies]
serde = "1.0"
# member Cargo.toml
[dependencies]
serde = { workspace = true }Зачем использовать рабочие области?
Преимущества рабочей области:
- Один общий файл блокировки для согласованных версий
- Более быстрая сборка благодаря одному общему каталогу target
- Простое разделение крупного проекта на специализированные пакеты
- Одна команда собирает и тестирует всё
Исключение каталога
Ключ exclude исключает определённые каталоги из рабочей области, а default-members задаёт пакеты, запускаемые, если не передан параметр -p.
[workspace]
members = ["app", "core"]
exclude = ["experiments"]
default-members = ["app"]Быстрая проверка
Что общего у всех пакетов рабочей области?
Итоги
Вы узнали о рабочих областях:
- Таблица
[workspace]перечисляет участников - Участники зависят друг от друга через
path - Общие файл блокировки и каталог target ускоряют сборку
- Используйте
-p, чтобы выбрать одного участника [workspace.dependencies]централизует версии
Часто задаваемые вопросы
Урок «Рабочие пространства» бесплатный?
Да — полный текст урока «Рабочие пространства» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn Rust Coding, подпишись на CoddyKit PRO. Курс Learn Rust Coding содержит 4 уроков всего.
Чему я научусь в уроке «Рабочие пространства»?
Проекты с несколькими крейтами Ты практикуешь Learn Rust Coding с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn Rust Coding?
Предыдущий опыт не требуется. Learn Rust Coding на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Рабочие пространства»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn Rust Coding?
Да. Каждый урок Learn Rust Coding включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы Cargo
- Cargo.toml
- Рабочие пространства
- Возможности и профили