Module (Rust)
๋ค๋ฅธ ํ์ผ์์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
main.rsํ์ผ์์src/services/user.rsํ์ผ์Userstruct๋ฅผ ์ฐ๊ณ ์ ํ๋ค.
+ 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- ๋ค๋ฅธ ๊ณณ์ ์ ์ธ๋ ๋ชจ๋์ ์ฐธ์กฐํด ๊ทธ ๋ด์ฉ์ ํ์ฌ ๋ชจ๋์ ์ค์ฝํ์ ๊ฐ์ ธ์จ๋ค.