0Pricing
Learn Rust Coding · Урок

Рабочие пространства

Проекты с несколькими крейтами

«Рабочие пространства» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы Cargo
  2. Cargo.toml
  3. Рабочие пространства
  4. Возможности и профили
← Назад к Learn Rust Coding