Cargo Workspaces
Cargo Workspaces
Объединение кода в 1 проект. В Cargo.toml нужно объявить его структуру:
[package]
name = "ardan_workspace"
version = "0.1.0"
edition = "2021"
[dependencies]
[workspace]
members = [
"session1/hello_world",
"session1/variables",
]
После этого можно добавлять подпрограммы в members, через cargo new <подрограмма>
.
Создание и подключение библиотеки в Workspace
Создание библиотеки вместо бинарника - `cargo new –lib examplelib
Прописать в файле cargo.toml у бинарной программы в workspace зависимость:
<..>
[dependencies]
examplelib = { path = "../examplelib"}
Далее, в код бинарной программы включить функции из библиотеки:
use examplelib::function01; // фукнкция должна быть публичной (pub fn)
Единая инициализация и сборка библиотек зависимостей в Workspace
Создаём проект типа workspace и прописываем в его файле Cargo.toml верхнего уровня все библиотеки с версиями (в примере anyhow) в спец разделе [workspace.dependencies]
:
[dependencies]
anyhow.workspace = true
[workspace]
members = ["greeter"]
[workspace.dependencies]
anyhow = "1.0.99"
При этом в отдельном разделе [dependencies]
указываем, что библиотеки будут распространяться на весь проект. Далее, создаём модуль внутри workspace (в примере = greeter) и в его файле Cargo.toml прописываем, что библиотека берётся из зависимостей workspace:
[dependencies]
anyhow = { workspace = true }
Можно добавлять features к библиотеке из workspace на этапе описания вложенных модулей:
[dependencies] regex = { workspace = true, features = ["unicode"] }
Проверка зависимостей
Можно построить дерево зависимостей и проверить правильность написания cargo.toml файла:
cargo check
cargo tree