6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rust で複数ファイルに分割したら、main.rs 以外の rust-analyzer 補完機能が効かなくなった話

Last updated at Posted at 2022-07-02

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 だけ作るときなどは注意されたし。

6
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?