I feel like the RFC will eventually need to include why Editions are not sufficient
As I see it two main reasons are:
- Dependency on features introduced after edition release (e.g. it’s not enough to say
edition="2018" for crate which uses Rust 1.35 feature)
- In my understanding of editions functionality, only small portion of new features will require migration to a new edition. For example if ARM intrinsics get stabilized in Rust 1.40 you will be able to use them in
edition="2015" crate, thus the legality of rust="1.40" and edition="2015" combination.
In general MSRV and Edition have different roles.
I guess it is safe to assume that this feature will be implemented together of after Rust 2018 release, so it’s mostly “for the future”.
The best you can get is that edition implies the latest rustc version before the next Edition.
Maybe you wanted to say “oldest version of the current Edition”? If yes, then I’ve meant that edition=N in the absence of explicit rust field implies that it equals to an oldest Rust version of the specified edition.
If crate does not specify edition and rust the only valid approach to allow things work as they do now is to interpret it as edition="2015" and rust="1.0" (so essentially no restrictions will be applied to versions resolution), so this part of the RFC is mostly about backward compatability.
Unfortunately there is no safe way to specify rust="1.20", as Rust 1.20 will not be able to parse Cargo.toml with rust field. (though I’ll need to check if it’s indeed the case)