You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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::*;// erroruse core::sync::*;// erroruse proc_macro::*;// error
However, using glob imports from prelude modules should not raise this warning:
use std::io::prelude::*;// okuse std::prelude::rust_2021:*// unlikely, but still ok
Non-std crates don't raise this lint
use regex::*;// ok
The text was updated successfully, but these errors were encountered:
There's a caveat that the prelude modules like std::io::prelude::* can still participate in breakage, in that a user may glob import another external crate in addition to glob imports of one of these std preludes, then if that external crate adds something that collides with the (practically frozen) std preludes, you can still end up with glob-vs-glob ambiguous. Less likely of course, agreed with not linting on std preludes.
What it does
This is a version of
wildcard_imports
that affects only imports from the standard cratesstd
,core
,proc_macro
,alloc
, andtest
.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:proc_macro_totokens
rust#134707Entry
is ambiguous rust#134714Sign
is ambiguous rust#135672I am proposing
std_wildcard_imports
as a separate lint fromwildcard_imports
so it can get enabled by default, likely inclippy::style
(or possibly uplifted rust-lang/rust#135672 (comment))Drawbacks
Confusion between
wildcard_imports
andstd_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-
std
crates don't raise this lintThe text was updated successfully, but these errors were encountered: