-
Notifications
You must be signed in to change notification settings - Fork 52
Open
Labels
Description
Summary of the new feature / enhancement
As a contributor to DSC,
I want to reduce the time and complexity required for managing dependencies and building projects,
So that I can iterate on features and fixes more efficiently.
Cargo has the concept of virtual workspaces, where we can define workspace members, shared metadata, and shared dependencies. This would reduce the overall maintenance for Rust projects.
See also:
- 14.3 Cargo Workspaces in The Rust Programming Language.
- Large Rust Workspaces by matklad, one of the maintainers of rust-analyzer.
Proposed technical implementation details (optional)
-
Define a
Cargo.toml
file at the repository root. -
Define every rust project in the repository as a workspace member.
-
Hoist dependencies to the workspace.
To simplify this task, we can use
cargo autoinherit
. -
Verify builds and tests.
-
Use the workspace lock file instead of per-project lockfiles.
-
Update build script as needed.