Currently, each crate specifies its dependencies in its own Cargo.toml file. This is precarious because we use different versions of the same external dependency in each crate. Another negative side effect is using different crates for performing the same task. Solving this debt will also help us update the external dependencies more easily since they will all be in the same file.
π Context
Currently, each crate specifies its dependencies in its own Cargo.toml file. This is precarious because we use different versions of the same external dependency in each crate. Another negative side effect is using different crates for performing the same task. Solving this debt will also help us update the external dependencies more easily since they will all be in the same file.
βοΈ Solution
Since Rust 1.64 it is possible to specify external dependencies in the workspace Cargo.toml and inherent them in the child Cargo.toml. More details here: https://doc.rust-lang.org/nightly/cargo/reference/specifying-dependencies.html#inheriting-a-dependency-from-a-workspace
π Subtasks