There are some intertwined concepts in Rust module system:
- Visibility
- Physical file path
- Logical module path
One should note that these three concepts are completely independent to others.
While rustc automatically infers the physical file path from the logical module path,
it is just for the convenience and you can always override this behavior with #[path]
attribute.