Archive/Rust
[Rustlings] 8. module
steelbear
2021. 5. 22. 17:38
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";
}
}