Rust 입문
[Rust] 모듈
바로크냥
2022. 10. 11. 20:30
1. 모듈
모듈은 네임스페이스입니다. 그 안에 함수, struct, enum, 트레이트 등이 들어 있습니다.
“::” 기호로 모듈의 포함 관계를 표현합니다.
다음과 같은 모양입니다.
first::second1::func1
first::second2::func1
위의 예에 두 개의 fubc1이 있습니다. 두 함수의 이름은 같지만 다른 함수입니다. 왜냐하면 모듈이 다르기 때문입니다.
모듈을 선언할 때는 “mod” 키워드를 사용 합니다.
위의 코드처럼 사용할 수 있는 구조를 가진 모듈 트리를 만들어 보겠습니다.
mod first{
mod second1{
func1
}
mod second2{
func1
}
}
만약 func1을 모듈 밖에서 사용하고 싶다면 “pub” 키워드를 같이 사용해야 합니다.
“pub”은 public에서 나온 것입니다. “pub” 키워드를 사용하지 않으면, 기본적으로 모듈은 private으로 설정됩니다.
C# 같은 언어의 public/private과 비슷한 용도입니다.
다음 코드를 보겠습니다.
mod first{
fn func1(){
println!("in first");
}
}
fn main() {
first::func1(); // 여기서 에러가 발생 합니다.
}
// 출력
..에러
2 | first::func1();
| ^^^^^ private function
“pub” 키워드 없이 func1을 작성하고 사용해 보려고 했습니다.
하지만 에러가 발생합니다.
에러 메시지에도 func1이 private function이라고 알려주고 있습니다.
“pub” 키워드를 사용하고 다시 실행해 보겠습니다.
fn main() {
first::func1();
}
mod first {
pub fn func1() {
println!("in first");
}
}
//출력
in first
제대로 출력됩니다.
상위 모듈을 부모 모듈, 하위 모듈을 자식 모듈이라고 부르기도 합니다.
first::second1::func1
여기에서 first 모듈은 second1 모듈의 부모 모듈 이고, second1 모듈은 first 모듈의 자식 모듈입니다.
반응형