Scrappy

覚え書き。

Rust:Separating Modules into Different Files

分割前

  • src/lib.rs
mod front_of_house {
    pub mod hosting {
        pub fn add_to_waitlist() {}
    }
}

pub use crate::front_of_house::hosting;

pub fn eat_at_restaurant() {
    hosting::add_to_waitlist();
}

front_of_houseをsrc/front_of_house.rsに移動する。

  • src/lib.rs
mod front_of_house;

pub use crate::front_of_house::hosting;

pub fn eat_at_restaurant() {
    hosting::add_to_waitlist();
}
  • src/front_of_house.rs
pub mod hosting {
    pub fn add_to_waitlist() {}
}

モジュールツリー内で、mod定義は一度だけで良い。一度コンパイラがそのファイルがプロジェクトの一部であることを認識すると、他のファイルは参照する際に、そのパスを指定するだけで良い。言い換えるとmodは他の言語のincludeではない。

hostingモジュールを/src/front_of_house/hosting.rsに移動する

  • src/front_of_house.rs
pub mod hosting;
  • src/front_of_house/hosting.rs
pub fn add_to_waitlist() {}