Module (Rust)
๋ค๋ฅธ ํ์ผ์์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
main.rs
ํ์ผ์์src/services/user.rs
ํ์ผ์User
struct๋ฅผ ์ฐ๊ณ ์ ํ๋ค.
+ src
| + main.rs
| + lib.rs
| + services
| | + user.rs
- ๊ทธ๋ฅ
use crate::services::user
๋ฅผ ํ๋ฉด ๋ฃจํธ์ ํ์ผ์ด ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
// src/services/user.rs
pub struct User { ... }
- ๋ฃจํธ์
lib.rs
ํ์ผ์ ๋ชจ๋์ ๊ณต๊ฐํด์ผ ํ๋ค.
// src/lib.rs
pub mod services {
pub mod user;
}
-
๋๋ ํ ๋ฆฌ, ํ์ผ ์์ฒด๊ฐ ํ๋์ ๋ชจ๋์ด๋ค.
services
๋ชจ๋ ์์user
๋ชจ๋์ด ์๋ ๊ฒ. -
pub mod user;
๋user
๋ชจ๋(ํ์ผ)์ ๋ด์ฉ์ ๋ค๋ฅธ ์์น์์ ์ฐพ์ผ๋ผ๋ ์๋ฏธ๋ค.pub mod services { pub mod user { // contents of services/user.rs } }
-
์ด์
main.rs
์์ ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋กservices
๋ชจ๋๊ณผ ๊ทธ ์์user
๋ชจ๋์ ์ฐพ์ ์ ์๋ค.
// src/main.rs
use crate::services::user::User;
fn main() {
let user = User { ... };
// do something...
}
mod.rs
ํ์ผ์ ์ด์ฉํด ๋๋ ํ ๋ฆฌ ๋ชจ๋ ์์ฒด๋ง ๊ณต๊ฐํ ์๋ ์๋ค.
+ src
| + main.rs
| + lib.rs
| + services
| | + mod.rs
// src/services/mod.rs
pub struct User { ... }
// src/lib.rs
pub mod services;
// src/main.rs
use crate::services::User;
fn main() {
let user = User { ... };
// do something...
}
ํฌ๋ ์ดํธ์ ๋ชจ๋์ ์ฐจ์ด
- ํฌ๋ ์ดํธ๋ ์ปดํ์ผ ๋จ์๋ก, ์ปดํ์ผ๋ฌ๊ฐ ๋ค๋ฃฐ ์ ์๋ ๊ฐ์ฅ ์์ ๊ท๋ชจ์ ์ฝ๋๋ฅผ ๋งํ๋ค.
- ๋ชจ๋์ ํฌ๋ ์ดํธ ์์ ์๋ ์ฝ๋ ๊ตฌ์กฐ์ ๋จ์๋ฅผ ๋งํ๋ค.
mod
- ๋ชจ๋์ด ์กด์ฌํจ์ ์ ์ธ.use
- ๋ค๋ฅธ ๊ณณ์ ์ ์ธ๋ ๋ชจ๋์ ์ฐธ์กฐํด ๊ทธ ๋ด์ฉ์ ํ์ฌ ๋ชจ๋์ ์ค์ฝํ์ ๊ฐ์ ธ์จ๋ค.