Why is a double use of the module name needed so that the compiler finds it?

⚓ rust    📅 2025-05-21    👤 surdeus    👁️ 4      

surdeus

Warning

This post was published 39 days ago. The information described in this article may have changed.

Hello,

I am learning Rust from the book and made a test project to understand modules.
My directory structure and the important files are as follows:
My question: why do I need to use

use crate::module1::module1::greet;
use crate::module1::submodule1::submodule1::greetsubmodule1;

instead of

use crate::module1::greet;
use crate::module1::submodule1::greetsubmodule1;
hello_cargo
- Cargo.lock
- Cargo.toml
- src/
-- lib.rs
-- main.rs
-- module1.rs
-- module1/
--- submodule1.rs
- target
-- (not altered- standard stuff, unimportant.)
// main.rs
pub mod module1;
use crate::module1::module1::greet;
use crate::module1::submodule1::submodule1::greetsubmodule1;

fn main() {
    greet();
    greetsubmodule1();
}
// module1.rs

pub mod submodule1;
pub mod module1 {
    pub fn greet() -> () {
        println!("greetings from module1.");
    }
}

// submodule1.rs
pub mod submodule1 {
    pub fn greetsubmodule1() -> () {
        println!("greet from submodule1.");
    }
}

3 posts - 2 participants

Read full topic

🏷️ rust_feed