A Cargo subcommand to build and test all feature flag combinations for Rust crates.
cargo-all-features is a Rust tool that extends Cargo with commands to build and test crates across every possible combination of their feature flags. It solves the problem of maintaining complex CI test matrices for feature flags and ensures compatibility issues are caught early, even with feature combinations that are rarely tested individually.
Rust crate maintainers and developers who use feature flags extensively and want to ensure their crates compile correctly across all possible configurations, especially those setting up or maintaining CI pipelines.
Developers choose cargo-all-features because it automates exhaustive feature flag testing with minimal configuration, replaces error-prone manual CI setups, and provides flexible options to optimize testing performance for large crates or workspaces.
A Cargo subcommand to build and test all feature flag combinations.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Tests all possible feature flag combinations, catching hidden compilation errors that individual tests miss, as highlighted in the README's 'Why?' section.
Replaces complex CI test matrices with a single command, reducing maintenance overhead and human error, per the project's value proposition.
Supports allowlists, denylists, skip options, and performance tweaks via Cargo.toml metadata, offering fine-grained control over testing behavior.
Operates on entire workspaces and includes chunking to split jobs, useful for large projects as described in the options for managing artifacts and CI time.
Testing all feature combinations can be slow for crates with many features, requiring manual optimization with max_combination_size or chunking to avoid prohibitive delays.
Setting up skip_feature_sets and other options in Cargo.toml adds overhead and requires a deep understanding of feature interdependencies, which can be error-prone.
Only checks for compilation errors; it doesn't validate runtime behavior or ensure test suites pass under all feature combinations, leaving gaps in testing coverage.