본문으로 건너뛰기

모듈

모듈이란 코드를 모은 장소입니다.

가끔 코드를 짜다 보면 매우 복잡할 때가 많습니다.

이때 모듈을 통해 코드를 묶어서 사용할 수 있습니다.

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을 사용하면 그 파일의 함수를 사용할 수 있습니다.