모듈
모듈이란 코드를 모은 장소입니다.
가끔 코드를 짜다 보면 매우 복잡할 때가 많습니다.
이때 모듈을 통해 코드를 묶어서 사용할 수 있습니다.
mod r {
fn print_statement() {
println!("r의 함수");
}
}
pub
위이 코드는 사실 사용할 수 없습니다.
그 이유는 private
이기 때문에 밖에서 사용할 수 없기 때문입니다.
밖에서 사용할 수 있게 하기 위해서는 pub
를 붙이면 됩니다.
mod r {
pub fn print_statement() {
println!("r의 함수");
}
}
fn main() {
r::print_statement();
}
self
private
함수은 모듈 안에서 다른 함수에서 사용할 수 있습니다.
이는 self
를 통해 실행할 수 있습니다.
mod r {
fn print_statement() {
println!("r의 private 함수");
}
pub fn printing() {
self::print_statement();
}
}
fn main() {
r::printing();
}
mod
(모듈 안의 모듈)
모듈안의 모듈은 mode
를 또 사용할 수 있습니다.
// main function
fn main() {
outer_module::inner_module::my_public_function();
}
mod outer_module {
fn my_private_function() {
println!("Hi, I got into the private function of outer module");
}
pub mod inner_module {
pub fn my_public_function() {
println!("Hi, I got into the public function of inner module");
println!("I'll invoke private function of outer module");
super::my_private_function();
}
}
}
super
(부모 모듈)
부모 모듈은 super
를 통해 사용할 수 있습니다.
참고로 파일 자체도 모듈이기 때문에 이 파일의 모듈에서 super
을 사용하면 그 파일의 함수를 사용할 수 있습니다.