Rustで別ファイルをモジュール化する方法
どうも、Okarinです。
処理を切り出して別ファイルに分けたい時があると思います。
JavaScriptだったらexportを付けてあげればよしなにやってくれたりしましたがRustだとちょっと違ったのでメモ。
モジュール化したいファイルを作る
まずは呼び出したいファイルがないとこのお話は終わっちゃうのでとりあえず作る。
ちなみに余談ですが、Rustではスネークケースが推されてますね。
キャメルケースで生成したら警告がでました。
どっちがいいんでしょうね?
僕としては今までキャメルケースで書いてきたのであまり見慣れない。。。
staticなクラス定数を定義するときくらいしか使ったことないのでは??
touch module_a.rs
pub fn module_a() { println!("私がモジュールだ!称えよ!"); }
lib.rsを作る
モジュールはとして明示的に定義しておかないといけないので専用のファイルがある。
それがlib.tsと言って、このファイルの中にモジュールとして定義したいファイルを記述する。
pub mod module_a
呼び出す
lib.rsに定義したらあとは呼び出してあげるだけです。
Rustにはimport文がない模様。
use文を使う。
use rootディレクトリ名::module_a::module_a fn main() { module_a(); }
まとめ
最初、数分程躓きました。
lib.rsを使って定義するのはC++のヘッダーファイルみたいなものでいいのでしょうか?
外部モジュールを定義するのはそれしか思い当たりませんでした。
npmのpackage.jsonも似た感じはしますが。
とりあえずこれで忘れたときも安心。