Skip to main content

## UNUSED_CRATE_DEPENDENCIES

# Static UNUSED_CRATE_DEPENDENCIES

Source

    pub static UNUSED_CRATE_DEPENDENCIES: &Lint

Expand description

The `unused_crate_dependencies` lint detects crate dependencies that are never used.

#### §Example

ⓘ

    #![deny(unused_crate_dependencies)]

This will produce:

    error: extern crate `regex` is unused in crate `lint_example`
      |
      = help: remove the dependency or add `use regex as _;` to the crate root
    note: the lint level is defined here
     --> src/lib.rs:1:9
      |
    1 | #![deny(unused_crate_dependencies)]
      |         ^^^^^^^^^^^^^^^^^^^^^^^^^

#### §Explanation

After removing the code that uses a dependency, this usually also requires removing the dependency from the build configuration. However, sometimes that step can be missed, which leads to time wasted building dependencies that are no longer used. This lint can be enabled to detect dependencies that are never used (more specifically, any dependency passed with the `--extern` command-line flag that is never referenced via `use`, `extern crate`, or in any path).

This lint is “allow” by default because it can provide false positives depending on how the build system is configured. For example, when using Cargo, a “package” consists of multiple crates (such as a library and a binary), but the dependencies are defined for the package as a whole. If there is a dependency that is only used in the binary, but not the library, then the lint will be incorrectly issued in the library.