Clippy lints / Style
Clippy lint · Style · checked with Clippy 0.1.99
clippy::module_inception: Checks for modules that have the same name as their parent module
What it meansChecks for modules that have the same name as their parent module It is in the style group and warns by default.
Does it matter?
A typical beginner mistake is to have mod foo; and again mod foo { .. } in foo.rs. The expectation is that items inside the inner mod foo { .. } are then available through foo::x, but they are only available through foo::foo::x. If this is done on purpose, it would be better to choose a more representative module name.
Code that works but is not idiomatic Rust. Warns by default.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
// lib.rs
mod foo;
// foo.rs
mod foo {
...
}
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::module_inception)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
module_inception = "allow"One run
cargo clippy -- -A clippy::module-inceptionThe [lints] table needs Rust 1.74 or newer. In a workspace, put it under [workspace.lints.clippy] and add [lints] workspace = true to each member.
Settings in clippy.toml
allow-private-module-inception: Whether to allow module inception if it’s not public.
Clippy's own documentation
What it does
Checks for modules that have the same name as their parent module
Why is this bad?
A typical beginner mistake is to have mod foo; and
again mod foo { .. } in foo.rs.
The expectation is that items inside the inner mod foo { .. } are then
available
through foo::x, but they are only available through
foo::foo::x.
If this is done on purpose, it would be better to choose a more
representative module name.
Example
// lib.rs
mod foo;
// foo.rs
mod foo {
...
}
Configuration
-
allow-private-module-inception: Whether to allow module inception if it’s not public.(default:
false)
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- needless_returnunneeded `return` statement
- new_without_defaultChecks for public types with a pub fn new() -> Self method and no implementation of Default
- len_zeroChecks for getting the length of something via .len() just to compare to zero, and suggests using .is_empty() where applicable
- missing_safety_docChecks for the doc comments of publicly visible unsafe functions and warns if there is no # Safety section
- mixed_attributes_styleChecks for items that have the same kind of attributes with mixed styles (inner/outer)
- mixed_case_hex_literalsinconsistent casing in hexadecimal literal
- multiple_bound_locationsbound is defined in more than one place
- must_use_unitthis unit-returning function has a `#[must_use]` attribute
- mut_mutex_lockcalling `&mut Mutex::lock` unnecessarily locks an exclusive (mutable) reference
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::needless_returnunneeded `return` statementRead it next →Did this answer your question?