Rust, 쉽게 하자!

Rust 입문

[Rust] 모듈 (파일)

바로크냥 2022. 10. 11. 20:40

2. , 모듈 (파일)

모듈을 만들 때 “mod” 키워드를 사용하는 것을 알았습니다.

그런데 “mod” 키워드를 사용하지 않고 모듈을 만드는 방법이 있습니다.

다른 파일을 만드는 것입니다.

터미널에서

cargo new hello

를 사용해서 프로젝트를 만듭니다.

 

만들어진 “hello” 프로젝트의 디렉터리로 이동합니다.

cd hello

빌드합니다.

cargo run
또는 
cargo build

다음 명령으로 디렉터리의 트리 구조를 봅니다.

명령 중에  ‘-L 2’는 트리의 두 번째 레벨까지만 보여 달라는 의미입니다.

tree -L 2

├── Cargo.lock
├── Cargo.toml
├── src
│   └── main.rs
└── target
    ├── CACHEDIR.TAG
    └── debug

src 디렉터리에 main.rs 파일이 있습니다.

같은 src 디렉토리에 “second.rs” 파일을 만듭니다. 

 cd src
 touch second.rs

이 파일에 func1과 하위 모듈 third, 그 안의 func1을 작성하고 저장합니다.

pub fn func1(){
    println!("in second.rs file");
}

pub mod third{
    pub fn func1(){
        println!("in third");
    }
}

다시 main.rs 파일로 돌아와서 다음처럼 작성합니다.

 

mod second;        // 1 second.rs 파일을 모듈로 사용하겠다는 선언

mod first {                   // main.rs 안의 first 모듈
    pub fn func1() {
        println!("in first");
    }
} 

fn main() {
    first::func1();
    second::func1();       // 2 second.rs 파일에서 옴
    second::third::func1();  // 3 second.rs 파일에서 옴
}

// 출력
in first
in second.rs file
in third

// 1: second.rs에 작성한 func1을 사용하기 위해서

mod second;

를 제일 윗 줄에 추가했습니다.

이렇게 하면 파일 이름을 모듈 이름으로 사용할 수 있습니다.

// 2: second::func1();를 사용해서 second.rs의 func1을 사용했습니다.

// 3: second.rs 파일 안에 만든 third 모듈은 second 모듈의 하위 모듈이 됩니다. 

여기서 주의할 점은 third 모듈 앞에도 “pub” 키워드를 사용했다는 것입니다. 

pub mod third{
...
}

그리고 이처럼 모듈을 “pub” 키워드로 외부에서 사용할 수 있도록 공개한다고 해도 그 안에 포함된 함수가 자동으로 공개되지는 않습니다.

공개하고자 하는 함수 앞에는 “pub” 카워드를 각각 사용해 줘야 합니다.

 pub mod third{
    pub fn func1(){
           ...
    }
 }

이처럼 다른 파일에 만든 함수나 모듈 등을 사용할 수 있습니다.

이때 파일 이름을 부모 모듈로 사용합니다.

그리고 이들을 모듈로 사용하고자 할 때는 반드시

mod second;

처럼 파일 이름을 모듈로 명시해 주어야 합니다.

 

 
반응형

'Rust 입문' 카테고리의 다른 글

[Rust] use 사용하기  (0) 2022.10.11
[Rust] super  (1) 2022.10.11
[Rust] 모듈  (0) 2022.10.11
[Rust] 참조 (대여)  (0) 2022.10.09
[Rust] 소유권  (0) 2022.10.09