ファイルの分割方法が分からなくて Rust に挫折してましたが、調べたら簡単でした。
追記: こちらの記事 Clear explanation of Rust’s module system が分かりやすいです。もっと早く読みたかった。
やり方
こちらの issue より、
main.rs
mod hello;
fn main() {
hello::print_hello();
}
hello.rs
pub fn print_hello() {
println!("Hello, world!");
}
たったこれだけ。ポイントは、
- 分けたファイルは自動的にモジュールになる
- main.rs に
mod モジュール名;
を列挙する - 他のモジュールから参照したいものには pub を付ける
- 参照する側は
モジュール名::識別子
とするか、use を使う
特に、lib.rs は不要です。(作りたければ作ってもいいけど。)
愚痴
プログラミング (または新しい言語) を勉強する時って、
- とりあえず一つのファイルに全部書く
- 適当にファイルを分割してみる
- 再利用できそうなものをライブラリ化する
- 最初からライブラリとして設計する
という順番がある (かつ、すべての人が 3 や 4 をやる必要はない) と思うのですが、Rust のドキュメントは 2 をすっ飛ばして、いきなり 3 や 4 に進んでしまう印象…。
(最初「ドキュメントや書籍は〜」と書こうとして、実践 Rust 入門 を確認したらちゃんと書いてありました。が、一つのファイルを複数のモジュールに分ける方がメインになってたので、すっかり見落としてて、ずっと悩んでました。)