RS.CLIPPY.WILDCARD_IMPORTS

Lint `use _::*` statements

This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: wildcard_imports. Copyright ©2025 The Rust Team. All rights reserved.

What it does

Checks for wildcard imports use _::*.

Why is this bad?

wildcard imports can pollute the namespace. This is especially bad if you try to import something through a wildcard, that already has been imported by name from a different source:

use crate1::foo; // Imports a function named foo
use crate2::*; // Has a function named foo

foo(); // Calls crate1::foo

This can lead to confusing error messages at best and to unexpected behavior at worst.

Exceptions

Wildcard imports are allowed from modules that their name contains prelude. Many crates (including the standard library) provide modules named "prelude" specifically designed for wildcard import.

Wildcard imports reexported through pub use are also allowed.

use super::* is allowed in test modules. This is defined as any module with "test" in the name.

These exceptions can be disabled using the warn-on-all-wildcard-imports configuration flag.

Known problems

If macros are imported through the wildcard, this macro is not included by the suggestion and has to be added by hand.

Applying the suggestion when explicit imports of the things imported with a glob import exist, may result in unused_imports warnings.

Example

use crate1::*;

foo();

Use instead:

use crate1::foo;

foo();

Configuration

  • allowed-wildcard-imports: List of path segments allowed to have wildcard imports.

Example

allowed-wildcard-imports = [ "utils", "common" ]

Noteworthy

  1. This configuration has no effects if used with warn_on_all_wildcard_imports = true.
  2. Paths with any segment that containing the word 'prelude' are already allowed by default.

(default: [])

  • warn-on-all-wildcard-imports: Whether to emit warnings on all wildcard imports, including those from prelude, from super in tests, or for pub use reexports.

    (default: false)