Skip to content

std_wildcard_imports to lint against use std::mod::* #13961

Open
@tgross35

Description

@tgross35

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

use regex::*; // ok

Metadata

Metadata

Assignees

Labels

A-lintArea: New lintsE-help-wantedCall for participation: Help is requested to fix this issue.good first issueThese issues are a good way to get started with Clippy

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions