I would like to get advice for the following problems:
Imagine a repository with one crate. Assuming that it provides the rust-version field, how would you test it in with the rust-version toolchain without manually duplicating the version in CI config? Bonus points if it shares CI steps with stable toolchain and other variables in the testing matrix.
A more complex setup: now we have a repository with several crates which have potentially different MSRVs which share the same workspace. How CI job from the previous step should accommodate for this? Remove the workspace Cargo.toml?
Right now in RustCrypto we specify MSRV manually (e.g. see this config) and I would like to find a better alternative.
I have come to the conclusion that this isn't well supported currently. My recommendation is to use the same MSRV across the board, or to split it into multiple repos.
Especially since the oldest MSRV impacts dependency resolution for the whole workspace (due to dependency unification), meaning that when built in the workspace you might get older versions than you would otherwise have. This makes it hard to test accurately when publishing to crates.io. So it is a deficiency in cargo, not just an issue with CI.