Files
dev/src/skills/style/build/rules/dependencies.md
T

1.2 KiB

Dependency rules

Use workspace dependency versions

Rule

Declare Rust dependency versions in the repository root Cargo.toml under [workspace.dependencies]. Reference workspace dependencies from package Cargo.toml files with workspace = true. Do not declare dependency versions in package Cargo.toml files unless the operator explicitly requests a package-local version. Add package-local dependency features only when the feature set is specific to that package.

Rationale

The repository has one Cargo workspace and one Cargo.lock. Centralized versions keep package manifests consistent with the workspace lockfile.

Declare Rust dependencies in each build system

Rule

Declare each direct crate dependency in each build system that builds the Rust target. For Cargo, declare the crate in the package Cargo.toml file. Use workspace = true for workspace-managed dependencies. For Bazel, add the crate label to the deps of the target that uses it. Apply this rule to rust_library, rust_binary, and rust_test targets.

Rationale

Cargo and Bazel resolve Rust dependencies independently. Complete declarations keep Cargo, Rust Analyzer, and Bazel builds consistent.