rustのプロジェクトを進めるうえで、main.rs 以外に、.rs ファイルを作成したとき、補完が効かなかったのでメモ。
本当に初歩のところで躓いてしまった。
結論
main.rs から mod を使ってファイルをモジュールとして読み込ませれば良い。
環境
Ubuntu 22.04 (Virtual Box)
状態
├── Cargo.toml
└── src
├── main.rs
└── my_module.rs
のようなプロジェクトの構造にしたとき、main.rs
では補完機能が効くが、my_module.rs
では、補完が効かなかった。
解決方法
main.rs
mod my_module; // これを追加する
fn main() {
println!("Hello, world!");
}
my_module.rs
pub fn mymodule{
println!("called from main");
}
上のようなファイルを作成したとき、main.rs
から mod
を使って、my_module.rs
をモジュールとして読み込ませる必要がある。(たとえモジュールの関数等を main から呼び出していなくても。)
モジュールとして読み込ませれば、rust-analyzer
での補完機能が効くようになった。
rust のコンパイラは、 mod で指定されて、初めてファイルをモジュールとして読み込むのだがそれが拡張機能の補完にも繋がるとは思わなかった。先に struct だけ作るときなどは注意されたし。