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 - ๋‹ค๋ฅธ ๊ณณ์— ์„ ์–ธ๋œ ๋ชจ๋“ˆ์„ ์ฐธ์กฐํ•ด ๊ทธ ๋‚ด์šฉ์„ ํ˜„์žฌ ๋ชจ๋“ˆ์˜ ์Šค์ฝ”ํ”„์— ๊ฐ€์ ธ์˜จ๋‹ค.

์ด ๋ฌธ์„œ๋ฅผ ์ธ์šฉํ•œ ๋ฌธ์„œ