Static rustc_lint::builtin::AMBIGUOUS_GLOB_REEXPORTS

source ·
pub static AMBIGUOUS_GLOB_REEXPORTS: &'static Lint
Expand description

The ambiguous_glob_reexports lint detects cases where names re-exported via globs collide. Downstream users trying to use the same name re-exported from multiple globs will receive a warning pointing out redefinition of the same name.


pub mod foo {
    pub type X = u8;

pub mod bar {
    pub type Y = u8;
    pub type X = u8;

pub use foo::*;
pub use bar::*;

pub fn main() {}



This was previously accepted but it could silently break a crate’s downstream users code. For example, if foo::* and bar::* were re-exported before bar::X was added to the re-exports, down stream users could use this_crate::X without problems. However, adding bar::X would cause compilation errors in downstream crates because X is defined multiple times in the same namespace of this_crate.