Static rustc_lint::builtin::AMBIGUOUS_GLOB_REEXPORTS
source · pub static AMBIGUOUS_GLOB_REEXPORTS: &'static LintExpand 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.
§Example
ⓘ
#![deny(ambiguous_glob_reexports)]
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() {}{{produces}}
§Explanation
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.