Enforce feature conventions in all our crates (for cargo-semver-checks, and in general)
If we want to use cargo-semver-checks (see #711) and behave correctly wrt all our features, then either we have to wait for Cargo to support marking features as unstable, or we need to get our full
feature working a bit more consistently.
I think that to do this properly, we should have a script that enforces all of these:
- Every one of our crates has a "full" feature.
- Every feature in our crates is reachable from
full
orexperimental
or from a third new__nonadditive
feature. (The latter would exist only for feature flags like static libraries that do not belong infull
because they are not strictly additive.) - No feature is reachable from more than one of those.
- Our
full
feature, in each crate, enablesfull
in all of our crates that it depends on. (I'm not sure about this one, but I think it is necessary for us to get the behavior we want out of cargo-semver.)
This is the sort of thing we could check with a tool or a script: ideally it would also edit our toml files for us, since some of these changes are nontrivial but mechanical.
Open questions: Is this worthwhile? How much of a priority should it be?