AMBIGUOUS_GLOB_REEXPORTS in rustc_lint_defs::builtin - Rust
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.

Skip to main content

## AMBIGUOUS_GLOB_REEXPORTS

# Static AMBIGUOUS_GLOB_REEXPORTS

Source

    pub static AMBIGUOUS_GLOB_REEXPORTS: &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.

#### §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`.