Update features.md

This commit is contained in:
Yoav Lavi 2022-05-03 13:36:15 +02:00 committed by GitHub
parent 5828a4fa8c
commit 3ac679599a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -514,8 +514,8 @@ source and inspect it.
[`cargo vendor`]: ../commands/cargo-vendor.md
[cargo-clone-crate]: https://crates.io/crates/cargo-clone-crate
### Caveats
### Feature combinations
Features, which are a form of conditional compilation, require an exponential number of configurations and test cases to be 100% covered. By default, testing, linting, Miri, docs and others will only run on the default set of features.
Because features are a form of conditional compilation, they require an exponential number of configurations and test cases to be 100% covered. By default, tests, docs, and other tooling such as [Clippy](https://github.com/rust-lang/rust-clippy) will only run with the default set of features.
There are certain tools like [cargo-hack](https://github.com/taiki-e/cargo-hack) and [cargo-all-features](https://github.com/frewsxcv/cargo-all-features) that allow you to test all combinations of features which can help reduce the amount of configuraton needed.
We encourage you to consider your strategy and tooling in regards to different feature combinations - Every project will have different requirements in conjunction with time, resources, and the cost-benefit of covering specific scenarios. Common configurations may be with / without default features, specific combinations of features, or all combinations of features.