What it does
This is a version of wildcard_imports that affects only imports from the standard crates std, core, proc_macro, alloc, and test.
Advantage
wildcard_imports is in pedantic, which seems reasonable for most crates. However, using glob imports from the standard library means that upgrading Rust version can break the build. Recent examples:
I am proposing std_wildcard_imports as a separate lint from wildcard_imports so it can get enabled by default, likely in clippy::style (or possibly uplifted rust-lang/rust#135672 (comment))
Drawbacks
Confusion between wildcard_imports and std_wildcard_imports, noise on existing code, sometimes use proc_macro::* or similar is fine for testing.
Example
Lint on glob imports:
use std::mem::*; // error
use core::sync::*; // error
use proc_macro::*; // error
However, using glob imports from prelude modules should not raise this warning:
use std::io::prelude::*; // ok
use std::prelude::rust_2021:* // unlikely, but still ok
Non-std crates don't raise this lint
What it does
This is a version of
wildcard_importsthat affects only imports from the standard cratesstd,core,proc_macro,alloc, andtest.Advantage
wildcard_importsis in pedantic, which seems reasonable for most crates. However, using glob imports from the standard library means that upgrading Rust version can break the build. Recent examples:proc_macro_totokensrust#134707Entryis ambiguous rust#134714Signis ambiguous rust#135672I am proposing
std_wildcard_importsas a separate lint fromwildcard_importsso it can get enabled by default, likely inclippy::style(or possibly uplifted rust-lang/rust#135672 (comment))Drawbacks
Confusion between
wildcard_importsandstd_wildcard_imports, noise on existing code, sometimesuse proc_macro::*or similar is fine for testing.Example
Lint on glob imports:
However, using glob imports from prelude modules should not raise this warning:
Non-
stdcrates don't raise this lint