Importing every public name from a module using a wildcard (use _::*
) is a bad idea because:
- It could lead to conflicts between names defined locally and the ones imported.
- It reduces code readability as developers will have a hard time knowing where names come from.
- It clutters the local namespace, which makes debugging more difficult.
Remember that imported names can change when you update your dependencies. A wildcard import that works today might be broken tomorrow.
Exceptions
No issue will be raised for modules that their name contains prelude
. Many crates, including the standard library, provide modules
named prelude
that are specifically designed for wildcard import.
No issue will be raised in test modules. This is defined as any module with test
in the name.