Skip to main content

## SPECIAL_MODULE_NAME

# Static SPECIAL_MODULE_NAME

Source

    pub static SPECIAL_MODULE_NAME: &Lint

Expand description

The `special_module_name` lint detects module declarations for files that have a special meaning.

#### §Example

ⓘ

    mod lib;

    fn main() {
        lib::run();
    }

{{produces}}

#### §Explanation

Cargo recognizes `lib.rs` and `main.rs` as the root of a library or binary crate, so declaring them as modules will lead to miscompilation of the crate unless configured explicitly.

To access a library from a binary target within the same crate, use `your_crate_name::` as the path instead of `lib::`:

ⓘ

    // bar/src/lib.rs
    fn run() {
        // ...
    }

    // bar/src/main.rs
    fn main() {
        bar::run();
    }

Binary targets cannot be used as libraries and so declaring one as a module is not allowed.