cargo check
   
   [
   
    options
   
   ]
  
    
  
   
  
  
   Check a local package and all of its dependencies for errors. This will
essentially compile the packages without performing the final step of code
generation, which is faster than running
   
    cargo build
   
   . The compiler will save
metadata files to disk so that future runs will reuse them if the source has
not been modified. Some diagnostics and errors are only emitted during code
generation, so they inherently won’t be reported with
   
    cargo check
   
   .
  
  
   
  
  
   
  
  
   By default, when no package selection options are given, the packages selected
depend on the selected manifest file (based on the current working directory if
   
    --manifest-path
   
   is not given). If the manifest is the root of a workspace then
the workspaces default members are selected, otherwise only the package defined
by the manifest will be selected.
  
  
   The default members of a workspace can be set explicitly with the
   
    workspace.default-members
   
   key in the root manifest. If this is not set, a
virtual workspace will include all workspace members (equivalent to passing
   
    --workspace
   
   ), and a non-virtual workspace will include only the root crate itself.
  
  
   
    
     -p
    
    
     spec
    
    …
   
  
  
  
  
   
   
   
    
     --package
    
    
     spec
    
    …
   
  
  
  
  
   
    Check only the specified packages. See
   
   
    cargo-pkgid(1)
   
   for the
SPEC format. This flag may be specified multiple times and supports common Unix
glob patterns like
   
    *
   
   ,
   
    ?
   
   and
   
    []
   
   . However, to avoid your shell accidentally 
expanding glob patterns before Cargo handles them, you must use single quotes or
double quotes around each pattern.
  
  
   
    
     --workspace
    
   
  
  
   
    Check all members in the workspace.
   
  
  
   
   
   
    
     --all
    
   
  
  
   
    Deprecated alias for
    
     --workspace
    
    .
   
  
  
   
   
   
    
     --exclude
    
    
     SPEC
    
    …
   
  
  
   
    Exclude the specified packages. Must be used in conjunction with the
    
     --workspace
    
    flag. This flag may be specified multiple times and supports
common Unix glob patterns like
    
     *
    
    ,
    
     ?
    
    and
    
     []
    
    . However, to avoid your shell
accidentally expanding glob patterns before Cargo handles them, you must use
single quotes or double quotes around each pattern.
   
  
  
   
   
   
  
  
   When no target selection options are given,
   
    cargo check
   
   will check all
binary and library targets of the selected packages. Binaries are skipped if
they have
   
    required-features
   
   that are missing.
  
  
   Passing target selection flags will check only the specified
targets.
  
  
   Note that
   
    --bin
   
   ,
   
    --example
   
   ,
   
    --test
   
   and
   
    --bench
   
   flags also 
support common Unix glob patterns like
   
    *
   
   ,
   
    ?
   
   and
   
    []
   
   . However, to avoid your 
shell accidentally expanding glob patterns before Cargo handles them, you must 
use single quotes or double quotes around each glob pattern.
  
  
   
    
     --lib
    
   
  
  
   
    Check the package’s library.
   
  
  
   
   
   
    
     --bin
    
    
     name
    
    …
   
  
  
   
    Check the specified binary. This flag may be specified multiple times
and supports common Unix glob patterns.
   
  
  
   
   
   
    
     --bins
    
   
  
  
   
    Check all binary targets.
   
  
  
   
   
   
    
     --example
    
    
     name
    
    …
   
  
  
   
    Check the specified example. This flag may be specified multiple times
and supports common Unix glob patterns.
   
  
  
   
   
   
    
     --examples
    
   
  
  
   
    Check all example targets.
   
  
  
   
   
   
    
     --test
    
    
     name
    
    …
   
  
  
   
    Check the specified integration test. This flag may be specified
multiple times and supports common Unix glob patterns.
   
  
  
   
   
   
    
     --tests
    
   
  
  
   
    Check all targets in test mode that have the
    
     test = true
    
    manifest
flag set. By default this includes the library and binaries built as
unittests, and integration tests. Be aware that this will also build any
required dependencies, so the lib target may be built twice (once as a
unittest, and once as a dependency for binaries, integration tests, etc.).
Targets may be enabled or disabled by setting the
    
     test
    
    flag in the
manifest settings for the target.
   
  
  
   
   
   
    
     --bench
    
    
     name
    
    …
   
  
  
   
    Check the specified benchmark. This flag may be specified multiple
times and supports common Unix glob patterns.
   
  
  
   
   
   
    
     --benches
    
   
  
  
   
    Check all targets in benchmark mode that have the
    
     bench = true
    
    manifest flag set. By default this includes the library and binaries built
as benchmarks, and bench targets. Be aware that this will also build any
required dependencies, so the lib target may be built twice (once as a
benchmark, and once as a dependency for binaries, benchmarks, etc.).
Targets may be enabled or disabled by setting the
    
     bench
    
    flag in the
manifest settings for the target.
   
  
  
   
   
   
    
     --all-targets
    
   
  
  
   
    Check all targets. This is equivalent to specifying
    
     --lib --bins --tests --benches --examples
    
    .
   
  
  
   
   
   
  
  
   The feature flags allow you to control which features are enabled. When no
feature options are given, the
   
    default
   
   feature is activated for every
selected package.
  
  
   See
   
    the features documentation
   
   for more details.
  
  
   
    
     -F
    
    
     features
    
   
  
  
  
  
   
   
   
    
     --features
    
    
     features
    
   
  
  
   
    Space or comma separated list of features to activate. Features of workspace
members may be enabled with
    
     package-name/feature-name
    
    syntax. This flag may
be specified multiple times, which enables all specified features.
   
  
  
   
   
   
    
     --all-features
    
   
  
  
   
    Activate all available features of all selected packages.
   
  
  
   
   
   
    
     --no-default-features
    
   
  
  
   
    Do not activate the
    
     default
    
    feature of the selected packages.
   
  
  
   
   
   
  
  
   
    
     --target
    
    
     triple
    
   
  
  
  
  
   
    Check for the given architecture. The default is the host architecture. The general format of the triple is
    
     <arch><sub>-<vendor>-<sys>-<abi>
    
    . Run
    
     rustc --print target-list
    
    for a
list of supported targets. This flag may be specified multiple times.
   
   
    
     This may also be specified with the
     
      build.target
     
    
    
     config value
    
    .
   
   
    Note that specifying this flag makes Cargo run in a different mode where the
target artifacts are placed in a separate directory. See the
    
     build cache
    
    documentation for more details.
   
  
  
   
    
     --release
    
   
  
  
   
    Check optimized artifacts with the
    
     release
    
    profile.
See also the
    
     --profile
    
    option for choosing a specific profile by name.
   
  
  
   
   
   
    
     --profile
    
    
     name
    
   
  
  
  
  
   
    Check with the given profile.
   
   
    
     As a special case, specifying the
     
      test
     
     profile will also enable checking in
test mode which will enable checking tests and enable the
     
      test
     
     cfg option.
See
    
    
     rustc tests
    
    for more
detail.
   
   
    See the
    
     the reference
    
    for more details on profiles.
   
  
  
   
    
     --ignore-rust-version
    
   
  
  
   
    Check the target even if the selected Rust compiler is older than the
required Rust version as configured in the project’s
    
     rust-version
    
    field.
   
  
  
   
   
   
    
     --timings=
    
    
     fmts
    
   
  
  
  
  
   
    Output information how long each compilation takes, and track concurrency
information over time. Accepts an optional comma-separated list of output
formats;
    
     --timings
    
    without an argument will default to
    
     --timings=html
    
    .
Specifying an output format (rather than the default) is unstable and requires
    
     -Zunstable-options
    
    . Valid output formats:
    
     
      html
     
     (unstable, requires
     
      -Zunstable-options
     
     ): Write a human-readable file
     
      cargo-timing.html
     
     to the
     
      target/cargo-timings
     
     directory with a report of the compilation. Also write
a report to the same directory with a timestamp in the filename if you want
to look at older runs. HTML output is suitable for human consumption only,
and does not provide machine-readable timing data.
    
    
     
      json
     
     (unstable, requires
     
      -Zunstable-options
     
     ): Emit machine-readable JSON
information about timing information.
    
   
   
    
    
    
   
  
  
   
    
     --target-dir
    
    
     directory
    
   
  
  
  
  
   
    Directory for all generated artifacts and intermediate files. May also be
specified with the
    
     CARGO_TARGET_DIR
    
    environment variable, or the
    
     build.target-dir
    
   
   
    config value
   
   .
Defaults to
   
    target
   
   in the root of the workspace.
  
  
   
  
  
   
    
     --verbose
    
   
  
  
  
  
   
    Use verbose output. May be specified twice for “very verbose” output which
includes extra output such as dependency warnings and build script output.
May also be specified with the
    
     term.verbose
    
   
   
    config value
   
   .
  
  
   
    
     --quiet
    
   
  
  
  
  
   
    Do not print cargo log messages.
May also be specified with the
    
     term.quiet
    
   
   
    config value
   
   .
  
  
   
    
     --color
    
    
     when
    
   
  
  
  
  
   
    Control when colored output is used. Valid values:
    
     
      auto
     
     (default): Automatically detect if color support is available on the
terminal.
    
    
     
      always
     
     : Always display colors.
    
    
     
      never
     
     : Never display colors.
    
   
   
    
     May also be specified with the
     
      term.color
     
    
    
     config value
    
    .
   
  
  
   
    
     --message-format
    
    
     fmt
    
   
  
  
  
  
   
    The output format for diagnostic messages. Can be specified multiple times
and consists of comma-separated values. Valid values:
    
     
      human
     
     (default): Display in a human-readable text format. Conflicts with
     
      short
     
     and
     
      json
     
     .
    
    
     
      short
     
     : Emit shorter, human-readable text messages. Conflicts with
     
      human
     
     and
     
      json
     
     .
    
   
   
    
     
      json
     
     : Emit JSON messages to stdout. See
    
    
     the reference
    
    for more details. Conflicts with
    
     human
    
    and
    
     short
    
    .
   
   
    
     json-diagnostic-short
    
    : Ensure the
    
     rendered
    
    field of JSON messages contains
the “short” rendering from rustc. Cannot be used with
    
     human
    
    or
    
     short
    
    .
   
   
    
     json-diagnostic-rendered-ansi
    
    : Ensure the
    
     rendered
    
    field of JSON messages
contains embedded ANSI color codes for respecting rustc’s default color
scheme. Cannot be used with
    
     human
    
    or
    
     short
    
    .
   
   
    
     json-render-diagnostics
    
    : Instruct Cargo to not include rustc diagnostics
in JSON messages printed, but instead Cargo itself should render the
JSON diagnostics coming from rustc. Cargo’s own JSON diagnostics and others
coming from rustc are still emitted. Cannot be used with
    
     human
    
    or
    
     short
    
    .
   
   
    
   
  
  
   
    
     --manifest-path
    
    
     path
    
   
  
  
   
    Path to the
    
     Cargo.toml
    
    file. By default, Cargo searches for the
    
     Cargo.toml
    
    file in the current directory or any parent directory.
   
  
  
   
   
   
    
     --frozen
    
   
  
  
  
  
   
   
   
    
     --locked
    
   
  
  
   
    Either of these flags requires that the
    
     Cargo.lock
    
    file is
up-to-date. If the lock file is missing, or it needs to be updated, Cargo will
exit with an error. The
    
     --frozen
    
    flag also prevents Cargo from
attempting to access the network to determine if it is out-of-date.
    
     These may be used in environments where you want to assert that the
     
      Cargo.lock
     
     file is up-to-date (such as a CI build) or want to avoid network
access.
    
   
  
  
   
   
   
    
     --offline
    
   
  
  
  
  
   
    Prevents Cargo from accessing the network for any reason. Without this
flag, Cargo will stop with an error if it needs to access the network and
the network is not available. With this flag, Cargo will attempt to
proceed without the network if possible.
   
   
    
     Beware that this may result in different dependency resolution than online
mode. Cargo will restrict itself to crates that are downloaded locally, even
if there might be a newer version as indicated in the local copy of the index.
See the
    
    
     cargo-fetch(1)
    
    command to download dependencies before going
offline.
   
   
    May also be specified with the
    
     net.offline
    
    
     config value
    
    .
   
  
  
   
  
  
   
    
     +
    
    
     toolchain
    
   
  
  
  
  
   
    If Cargo has been installed with rustup, and the first argument to
    
     cargo
    
    begins with
    
     +
    
    , it will be interpreted as a rustup toolchain name (such
as
    
     +stable
    
    or
    
     +nightly
    
    ).
See the
   
   
    rustup documentation
   
   for more information about how toolchain overrides work.
  
  
   
    
     --config
    
    
     KEY=VALUE
    
    or
    
     PATH
    
   
  
  
  
  
   
    Overrides a Cargo configuration value. The argument should be in TOML syntax of
    
     KEY=VALUE
    
    ,
or provided as a path to an extra configuration file. This flag may be specified multiple times.
See the
   
   
    command-line overrides section
   
   for more information.
  
  
   
    
     -C
    
    
     PATH
    
   
  
  
  
  
   
    Changes the current working directory before executing any specified operations. This affects
things like where cargo looks by default for the project manifest (
    
     Cargo.toml
    
    ), as well as
the directories searched for discovering
    
     .cargo/config.toml
    
    , for example. This option must
appear before the command name, for example
    
     cargo -C path/to/my-project build
    
    .
   
   
    
     This option is only available on the
    
    
     nightly
channel
    
    and
requires the
    
     -Z unstable-options
    
    flag to enable (see
    
     #10098
    
    ).
   
  
  
   
    
     --help
    
   
  
  
   
    Prints help information.
   
  
  
   
   
   
    
     -Z
    
    
     flag
    
   
  
  
   
    Unstable (nightly-only) flags to Cargo. Run
    
     cargo -Z help
    
    for details.
   
  
  
   
   
   
  
  
   
    
     -j
    
    
     N
    
   
  
  
  
  
   
   
   
    
     --jobs
    
    
     N
    
   
  
  
  
  
   
    Number of parallel jobs to run. May also be specified with the
    
     build.jobs
    
   
   
    config value
   
   . Defaults to
the number of logical CPUs. If negative, it sets the maximum number of
parallel jobs to the number of logical CPUs plus provided value.
Should not be 0.
  
  
   
    
     --keep-going
    
   
  
  
   
    Build as many crates in the dependency graph as possible, rather than aborting
the build on the first one that fails to build. Unstable, requires
    
     -Zunstable-options
    
    .
   
  
  
   
   
   
    
     --future-incompat-report
    
   
  
  
  
  
   
    Displays a future-incompat report for any future-incompatible warnings
produced during execution of this command
   
   
    
     See
    
    
     cargo-report(1)
    
   
  
  
   
  
  
   See
   
    the reference
   
   for
details on environment variables that Cargo reads.
  
  
   
  
  
   
    0
   
   : Cargo succeeded.
  
  
   
    101
   
   : Cargo failed to complete.
  
  
   
  
  
   Check the local package for errors:
  
  cargo check
Check all targets, including unit tests:
cargo check --all-targets --profile=test
cargo(1), cargo-build(1)