Archive/Rust

[Rustlings] 8. module

mod는 네임스페이스와 비슷한 역활을 한다. mod는 소스코드에서 함수나 매크로 상수, 구조체 등의 요소를 묶는다.

mod sausage_factory {
    fn make_sausage() {
        println!("sausage!");
    }
}

mod 안에서 선언된 모든 요소들은 기본적으로 private다. mod 밖에서 해당 요소에 접근할려면 pub를 붙여줘야 한다.

mod sausage_factory {
    pub fn make_sausage() {
        println!("sausage!");
    }
}

fn main() {
    sausage_factory::make_sausage();
}

하지만 주의해야할 점이 있다. 상위 범위가 public이라고 해서 그 안의 요소가 public이 되지 않는다. 해당 요소에 접근할려면 반드시 지나가는 모든 범위가 public이여야 한다. 그래서 module안에 들어간 module이나 module에서 선언된 함수와 상수나 구조체의 맴버 변수들에 접근할 때 조심해야한다. 이들을 감싸는 요소들도 pub가 붙어야 한다.

mod delicious_snacks {
    pub mod fruits {
        pub const PEAR: &'static str = "Pear";
        pub const APPLE: &'static str = "Apple";
    }
}

'Archive > Rust' 카테고리의 다른 글

[Rustlings] 10. String  (0) 2021.05.26
[Rustlings] 9. collection  (0) 2021.05.25
[Rustlings] 7. enum  (0) 2021.05.21
[Rustlings] 6. struct  (0) 2021.05.16
[Rustlings] 5. Primitive Types  (0) 2021.05.15