| Crates.io | ci-cargo |
| lib.rs | ci-cargo |
| version | 0.1.0 |
| created_at | 2026-01-11 04:02:07.161271+00 |
| updated_at | 2026-01-11 04:02:07.161271+00 |
| description | Continuous integration using cargo for Clippy and tests for all possible features. |
| homepage | |
| repository | https://git.philomathiclife.com/repos/ci-cargo/ |
| max_upload_size | |
| id | 2035167 |
| size | 384,946 |
ci-cargo is a CLI application that runs cargo with check,
clippy, and test for all possible combinations of features defined in Cargo.toml.
The toolchain(s) used depend on platform support for rustup, the existence
of rust-toolchain.toml, the defined MSRV (if there is one), and if --default-toolchain, --skip-msrv, or
--rustup-home were passed. Specifically cargo +stable will be used if all of the following conditions are met:
--default-toolchain was not passed.rust-toolchain.toml does not exist in the package directory nor its ancestor directories.--rustup-home was not passed for platforms that don't support rustup.If the above are not met, cargo will be used instead. cargo +<MSRV> will also be used if all of the following
conditions are met:
--skip-msrv was not passed.rust-version that is less than the stable or not equivalent to the default
toolchain used.--rustup-home was passed or the platform supports rustup.ci-cargo avoids superfluous combinations of features. For example if feature foo depends on feature bar and
bar depends on feature fizz; then no combination of features that contain foo and bar, foo and fizz, or
bar and fizz will be tested.
When a command errors, ci-cargo will terminate; upon termination (successful or not), ci-cargo will write all
unique messages that were written to stderr to stderr followed by the offending command in case of an error.
The number of possible configurations grows exponentially based on the number of features in Cargo.toml. This can
easily cause a crate to not be tested with certain combinations of features. Instead of manually invoking cargo
with each possible combination of features, this handles it automatically. Additionally it automatically ensures the
build works on both the stable or default toolchain and the stated MSRV (if one is defined).
ci-cargo [COMMAND] [OPTIONS] [COMMAND] [OPTIONS] [COMMAND] [OPTIONS]
check: cargo check.clippy: cargo clippy.help: Prints help message.test: cargo test.version: Prints version info.--allow-implied-features: Features implied by optional dependencies are allowed; by default features must be
explicitly defined or an error will occur (e.g., foo = ["dep:bar"]).--cargo-home <PATH>: Sets the storage directory used by cargo.--cargo-path <PATH>: Sets the directory to search for cargo. Defaults to cargo.--color: --color always is passed to the above commands; otherwise without this option, --color never is
passed.--default-toolchain: cargo is used instead of cargo +stable.--dir <PATH>: Changes the working directory to the passed path before executing. Without this, the current
directory and all ancestor directories are searched for Cargo.toml before changing the working directory to its
location.--ignore-compile-errors: compile_errors are ignored
and don't lead to termination.--ignore-features <FEATURES>: Any combination of features that depend on any of the features in the
comma-separated list will be ignored. The features must be unique and represent valid features in the package. The
features can contain implied features so long as --allow-implied-features is also passed. An empty value
represents the empty set of features (i.e., --no-default-features). For example --ignore-features, will error
since no features were passed. --ignore-features '' will ignore the empty set of features. --ignore-features a,
will ignore the empty set of features and any combination of features that depend on feature a.--ignore-msrv: --ignore-rust-version is passed to the commands for the default toolchain.--progress: Writes the current progress to stdout.--rustup-home <PATH>: Sets the storage directory used by rustup.--skip-msrv: cargo +<MSRV> is not used.--summary: Writes the toolchain(s) used and the combinations of features run on to stdout on success.--all-targets: --all-targets is passed.--benches: --benches is passed.--bins: --bins is passed.--examples: --examples is passed.--lib: --lib is passed.--tests: --tests is passed.--all-targets: --all-targets is passed.--benches: --benches is passed.--bins: --bins is passed.--deny-warnings: -- -Dwarnings is passed.--examples: --examples is passed.--lib: --lib is passed.--tests: --tests is passed.--all-targets: cargo test --all-targets and cargo test --doc are run. Note if one wants just the
behavior of cargo test --all-targets, then one must pass cargo test --benches --bins --examples --lib --tests
instead.--benches: --benches is passed.--bins: --bins is passed.--doc: --doc is passed.--examples: --examples is passed.--ignored: -- --ignored is passed.--include-ignored: -- --include-ignored is passed.--lib: --lib is passed.--tests: --tests is passed.The following conditions must be met:
help and version mustn't be combined with other commands or options.check, clippy, and test can be used.test options --ignored and --include-ignored are mutually exclusive.--all-targets mustn't be combined with other targets (e.g., --lib).test option --doc mustn't be combined with other targets (e.g., --tests).--ignore-msrv is not allowed if the stable toolchain is used.ci-cargo in action[zack@laptop example]$ cat Cargo.toml
[package]
authors = ["Johann Carl Friedrich Gauß <gauss@invalid.com>"]
categories = ["mathematics"]
description = "Example."
documentation = "https://example.com/"
edition = "2024"
keywords = ["example"]
license = "MIT OR Apache-2.0"
name = "example"
readme = "README.md"
repository = "https://example.com/"
rust-version = "1.90.0"
version = "0.1.0"
[lints.rust]
ambiguous_negative_literals = { level = "deny", priority = -1 }
closure_returning_async_block = { level = "deny", priority = -1 }
deprecated_safe = { level = "deny", priority = -1 }
deref_into_dyn_supertrait = { level = "deny", priority = -1 }
ffi_unwind_calls = { level = "deny", priority = -1 }
future_incompatible = { level = "deny", priority = -1 }
impl_trait_redundant_captures = { level = "deny", priority = -1 }
keyword_idents = { level = "deny", priority = -1 }
let_underscore = { level = "deny", priority = -1 }
linker_messages = { level = "deny", priority = -1 }
macro_use_extern_crate = { level = "deny", priority = -1 }
meta_variable_misuse = { level = "deny", priority = -1 }
missing_copy_implementations = { level = "deny", priority = -1 }
missing_debug_implementations = { level = "deny", priority = -1 }
missing_docs = { level = "deny", priority = -1 }
non_ascii_idents = { level = "deny", priority = -1 }
nonstandard_style = { level = "deny", priority = -1 }
redundant_imports = { level = "deny", priority = -1 }
redundant_lifetimes = { level = "deny", priority = -1 }
refining_impl_trait = { level = "deny", priority = -1 }
rust_2018_compatibility = { level = "deny", priority = -1 }
rust_2018_idioms = { level = "deny", priority = -1 }
rust_2021_compatibility = { level = "deny", priority = -1 }
rust_2024_compatibility = { level = "deny", priority = -1 }
single_use_lifetimes = { level = "deny", priority = -1 }
trivial_casts = { level = "deny", priority = -1 }
trivial_numeric_casts = { level = "deny", priority = -1 }
unit_bindings = { level = "deny", priority = -1 }
unknown-or-malformed-diagnostic-attributes = { level = "deny", priority = -1 }
unnameable_types = { level = "deny", priority = -1 }
unreachable_pub = { level = "deny", priority = -1 }
unsafe_code = { level = "deny", priority = -1 }
unstable_features = { level = "deny", priority = -1 }
unused = { level = "deny", priority = -1 }
unused_crate_dependencies = { level = "deny", priority = -1 }
unused_import_braces = { level = "deny", priority = -1 }
unused_lifetimes = { level = "deny", priority = -1 }
unused_qualifications = { level = "deny", priority = -1 }
unused_results = { level = "deny", priority = -1 }
variant_size_differences = { level = "deny", priority = -1 }
warnings = { level = "deny", priority = -1 }
[lints.clippy]
cargo = { level = "deny", priority = -1 }
complexity = { level = "deny", priority = -1 }
correctness = { level = "deny", priority = -1 }
nursery = { level = "deny", priority = -1 }
pedantic = { level = "deny", priority = -1 }
perf = { level = "deny", priority = -1 }
restriction = { level = "deny", priority = -1 }
style = { level = "deny", priority = -1 }
suspicious = { level = "deny", priority = -1 }
blanket_clippy_restriction_lints = "allow"
implicit_return = "allow"
[dependencies]
buzz = { version = "0.1.0", default-features = false, optional = true }
[features]
buzz = ["dep:buzz"]
default = ["foo"]
foo = []
bar = ["fizz"]
fizz = []
[zack@laptop example]$ ci-cargo clippy --all-targets test --all-targets --include-ignored --progress --summary
Package: example. Toolchain (1/2): cargo +stable. Features (1/32, 5 skipped): buzz,fizz,foo. Command (1/3): clippy. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (1/32, 5 skipped): buzz,fizz,foo. Command (2/3): test --all-targets. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (1/32, 5 skipped): buzz,fizz,foo. Command (3/3): test --doc. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (2/32, 6 skipped): fizz,foo. Command (1/3): clippy. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (2/32, 6 skipped): fizz,foo. Command (2/3): test --all-targets. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (2/32, 6 skipped): fizz,foo. Command (3/3): test --doc. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (3/32, 10 skipped): bar,buzz,foo. Command (1/3): clippy. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (3/32, 10 skipped): bar,buzz,foo. Command (2/3): test --all-targets. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (3/32, 10 skipped): bar,buzz,foo. Command (3/3): test --doc. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (4/32, 10 skipped): buzz,foo. Command (1/3): clippy. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (4/32, 10 skipped): buzz,foo. Command (2/3): test --all-targets. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (4/32, 10 skipped): buzz,foo. Command (3/3): test --doc. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (5/32, 10 skipped): bar,foo. Command (1/3): clippy. Time running: 0 s.
Package: example. Toolchain (1/2): cargo +stable. Features (5/32, 10 skipped): bar,foo. Command (2/3): test --all-targets. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (5/32, 10 skipped): bar,foo. Command (3/3): test --doc. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (6/32, 10 skipped): foo. Command (1/3): clippy. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (6/32, 10 skipped): foo. Command (2/3): test --all-targets. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (6/32, 10 skipped): foo. Command (3/3): test --doc. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (7/32, 11 skipped): buzz,default,fizz. Command (1/3): clippy. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (7/32, 11 skipped): buzz,default,fizz. Command (2/3): test --all-targets. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (7/32, 11 skipped): buzz,default,fizz. Command (3/3): test --doc. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (8/32, 12 skipped): default,fizz. Command (1/3): clippy. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (8/32, 12 skipped): default,fizz. Command (2/3): test --all-targets. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (8/32, 12 skipped): default,fizz. Command (3/3): test --doc. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (9/32, 13 skipped): buzz,fizz. Command (1/3): clippy. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (9/32, 13 skipped): buzz,fizz. Command (2/3): test --all-targets. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (9/32, 13 skipped): buzz,fizz. Command (3/3): test --doc. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (10/32, 14 skipped): fizz. Command (1/3): clippy. Time running: 1 s.
Package: example. Toolchain (1/2): cargo +stable. Features (10/32, 14 skipped): fizz. Command (2/3): test --all-targets. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (10/32, 14 skipped): fizz. Command (3/3): test --doc. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (11/32, 14 skipped): bar,buzz,default. Command (1/3): clippy. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (11/32, 14 skipped): bar,buzz,default. Command (2/3): test --all-targets. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (11/32, 14 skipped): bar,buzz,default. Command (3/3): test --doc. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (12/32, 14 skipped): buzz,default. Command (1/3): clippy. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (12/32, 14 skipped): buzz,default. Command (2/3): test --all-targets. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (12/32, 14 skipped): buzz,default. Command (3/3): test --doc. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (13/32, 14 skipped): bar,default. Command (1/3): clippy. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (13/32, 14 skipped): bar,default. Command (2/3): test --all-targets. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (13/32, 14 skipped): bar,default. Command (3/3): test --doc. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (14/32, 14 skipped): default. Command (1/3): clippy. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (14/32, 14 skipped): default. Command (2/3): test --all-targets. Time running: 2 s.
Package: example. Toolchain (1/2): cargo +stable. Features (14/32, 14 skipped): default. Command (3/3): test --doc. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (15/32, 14 skipped): bar,buzz. Command (1/3): clippy. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (15/32, 14 skipped): bar,buzz. Command (2/3): test --all-targets. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (15/32, 14 skipped): bar,buzz. Command (3/3): test --doc. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (16/32, 14 skipped): buzz. Command (1/3): clippy. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (16/32, 14 skipped): buzz. Command (2/3): test --all-targets. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (16/32, 14 skipped): buzz. Command (3/3): test --doc. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (17/32, 14 skipped): bar. Command (1/3): clippy. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (17/32, 14 skipped): bar. Command (2/3): test --all-targets. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (17/32, 14 skipped): bar. Command (3/3): test --doc. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (18/32, 14 skipped): <none>. Command (1/3): clippy. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (18/32, 14 skipped): <none>. Command (2/3): test --all-targets. Time running: 3 s.
Package: example. Toolchain (1/2): cargo +stable. Features (18/32, 14 skipped): <none>. Command (3/3): test --doc. Time running: 3 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (1/32, 5 skipped): buzz,fizz,foo. Command (1/3): clippy. Time running: 3 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (1/32, 5 skipped): buzz,fizz,foo. Command (2/3): test --all-targets. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (1/32, 5 skipped): buzz,fizz,foo. Command (3/3): test --doc. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (2/32, 6 skipped): fizz,foo. Command (1/3): clippy. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (2/32, 6 skipped): fizz,foo. Command (2/3): test --all-targets. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (2/32, 6 skipped): fizz,foo. Command (3/3): test --doc. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (3/32, 10 skipped): bar,buzz,foo. Command (1/3): clippy. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (3/32, 10 skipped): bar,buzz,foo. Command (2/3): test --all-targets. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (3/32, 10 skipped): bar,buzz,foo. Command (3/3): test --doc. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (4/32, 10 skipped): buzz,foo. Command (1/3): clippy. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (4/32, 10 skipped): buzz,foo. Command (2/3): test --all-targets. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (4/32, 10 skipped): buzz,foo. Command (3/3): test --doc. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (5/32, 10 skipped): bar,foo. Command (1/3): clippy. Time running: 4 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (5/32, 10 skipped): bar,foo. Command (2/3): test --all-targets. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (5/32, 10 skipped): bar,foo. Command (3/3): test --doc. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (6/32, 10 skipped): foo. Command (1/3): clippy. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (6/32, 10 skipped): foo. Command (2/3): test --all-targets. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (6/32, 10 skipped): foo. Command (3/3): test --doc. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (7/32, 11 skipped): buzz,default,fizz. Command (1/3): clippy. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (7/32, 11 skipped): buzz,default,fizz. Command (2/3): test --all-targets. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (7/32, 11 skipped): buzz,default,fizz. Command (3/3): test --doc. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (8/32, 12 skipped): default,fizz. Command (1/3): clippy. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (8/32, 12 skipped): default,fizz. Command (2/3): test --all-targets. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (8/32, 12 skipped): default,fizz. Command (3/3): test --doc. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (9/32, 13 skipped): buzz,fizz. Command (1/3): clippy. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (9/32, 13 skipped): buzz,fizz. Command (2/3): test --all-targets. Time running: 5 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (9/32, 13 skipped): buzz,fizz. Command (3/3): test --doc. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (10/32, 14 skipped): fizz. Command (1/3): clippy. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (10/32, 14 skipped): fizz. Command (2/3): test --all-targets. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (10/32, 14 skipped): fizz. Command (3/3): test --doc. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (11/32, 14 skipped): bar,buzz,default. Command (1/3): clippy. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (11/32, 14 skipped): bar,buzz,default. Command (2/3): test --all-targets. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (11/32, 14 skipped): bar,buzz,default. Command (3/3): test --doc. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (12/32, 14 skipped): buzz,default. Command (1/3): clippy. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (12/32, 14 skipped): buzz,default. Command (2/3): test --all-targets. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (12/32, 14 skipped): buzz,default. Command (3/3): test --doc. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (13/32, 14 skipped): bar,default. Command (1/3): clippy. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (13/32, 14 skipped): bar,default. Command (2/3): test --all-targets. Time running: 6 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (13/32, 14 skipped): bar,default. Command (3/3): test --doc. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (14/32, 14 skipped): default. Command (1/3): clippy. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (14/32, 14 skipped): default. Command (2/3): test --all-targets. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (14/32, 14 skipped): default. Command (3/3): test --doc. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (15/32, 14 skipped): bar,buzz. Command (1/3): clippy. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (15/32, 14 skipped): bar,buzz. Command (2/3): test --all-targets. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (15/32, 14 skipped): bar,buzz. Command (3/3): test --doc. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (16/32, 14 skipped): buzz. Command (1/3): clippy. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (16/32, 14 skipped): buzz. Command (2/3): test --all-targets. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (16/32, 14 skipped): buzz. Command (3/3): test --doc. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (17/32, 14 skipped): bar. Command (1/3): clippy. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (17/32, 14 skipped): bar. Command (2/3): test --all-targets. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (17/32, 14 skipped): bar. Command (3/3): test --doc. Time running: 7 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (18/32, 14 skipped): <none>. Command (1/3): clippy. Time running: 8 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (18/32, 14 skipped): <none>. Command (2/3): test --all-targets. Time running: 8 s.
Package: example. Toolchain (2/2): cargo +1.90.0. Features (18/32, 14 skipped): <none>. Command (3/3): test --doc. Time running: 8 s.
Toolchains used: cargo +stable and cargo +1.90.0
Features used:
buzz,fizz,foo
fizz,foo
bar,buzz,foo
buzz,foo
bar,foo
foo
buzz,default,fizz
default,fizz
buzz,fizz
fizz
bar,buzz,default
buzz,default
bar,default
default
bar,buzz
buzz
bar
<none>
[zack@laptop example]$ ci-cargo clippy --deny-warnings --ignore-compile-errors --ignore-features buzz, --ignore-msrv --skip-msrv
[zack@laptop ~]$ ci-cargo test --allow-implied-features --cargo-home ~/.cargo/ --cargo-path ~/.cargo/bin --default-toolchain --dir ~/example/ --ignored --rustup-home ~/.rustup/
[zack@laptop ~]$ ci-cargo version
ci-cargo 0.1.0
[zack@laptop example]$ ci-cargo --summary clippy
A command was not passed as the first argument. See ci-cargo help for more information.
Functionality when using old versions of cargo may not exist (e.g., cargo check wasn't available until 1.16.0).
There is a hard limit on the number of features allowed. Specifically the number of features can't exceed the number of bits that make up a pointer; however practical limits will almost always be a factor long before hitting such a hard limit due to the exponential effect features have.
Cyclic and redundant features are forbidden. For example the below snippets from Cargo.toml files will cause an
error:
[features]
# Loops are forbidden by `cargo`, so this is not an additional limitation.
a = ["a"]
[features]
# Cyclic features are disallowed even though `cargo` allows them.
a = ["b"]
b = ["a"]
[features]
# `a` should more concisely be assigned `["b"]` since `b` already depends on `c`.
a = ["b", "c"]
b = ["c"]
c = []
This will frequently be updated to be the same as stable. Specifically, any time stable is updated and that update has "useful" features or compilation no longer succeeds (e.g., due to new compiler lints), then MSRV will be updated.
MSRV changes will correspond to a SemVer patch version bump pre-1.0.0; otherwise a minor version bump.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Before any PR is sent, ci-cargo clippy --all-targets test --benches --bins --examples --tests --include-ignored
should be run on itself. Additionally cargo +nightly doc should be run to ensure documentation can be built.
The crate is only tested on the x86_64-unknown-linux-gnu, x86_64-unknown-openbsd, and aarch64-apple-darwin
targets; but it should work on most platforms.