RustでWeb開発をしていたある日、朝起きてコードを書こうと思ったら次のようなエラーが出ていました。

proc macro ‘main’ not expanded: Cannot create expander for ….

スクリーンショット 2023-02-26 17.48.21.png

エラーの内容

自分はVSCodeにrust-analyzerを入れてRustのコードを書いています。
上記のエラーは手続きマクロ(procedural macro, proc macro)をrust-analyzerがうまく展開してくれないことに起因しているようです。

プログラムは問題なく動くのでおそらくrust-analyzer上での問題だと考えられます。

特にコードや設定を何も変えずに突如として出てきたエラーなので非常に困惑しました。。。

ネットで調べた解決策

ネットで調べると次のようなものが出てくると思います。

VSCodeのダウンロードし直し

 

VSCodeをuniversal版でダウンロードし直せって言ってます。でも自分は元からuniversal版だったのであまり関係ないかなと。

rust-analyzerをプレリリース版にスイッチ

 

rust-analyzerをプレリリース版にしろって言ってます。でも自分は元からプレリリース版(v0.4.1415)だったのでこちらもあまり関係ないかなと。
ちなみにプレリリース版へのアップデートですが、VSCodeの [拡張機能] > [プレリリースバージョンへの切り替え]で簡単にできます。

その他

 

無理やりな解決策

そもそもrust-analyzerがなんか勘違いしてるっぽいので、rust-analyzerにこのエラーを無視させればいいわけです。
なので、設定からrust-analyzer.diagnostics.disabledにunresolved-proc-macroを追加して無視します。

スクリーンショット 2023-02-26 17.45.35.png

ただ個人的には単純にエラーを無視しているだけで根本的な解決はしていないので、他の方法を取りたいです。

自分の解決方法

なんかrustupをupdateしたらエラーが解決しました。このコマンドによりRustは最新版に更新されます。

$rustup update

(これで解決した理由が分かったら追記)

广告
将在 10 秒后关闭
bannerAds