rust-analyzer さん、マクロの中で auto-import をしていただけたり、しなかったりしますよね。
問題
↓のパターンで、NAME と入力したら、use module::NAME; の挿入がサジェストされていただきたいですよね。できません。
fn main() { expr_macro! { NAME } } mod module { #[macro_export] macro_rules! expr_macro { ($($e:expr,)*) => { $(println!("{}", $e);)* }; } pub const NAME: u32 = 42; }
原因?と解決法
どうも、$($e:expr,)* のパターンでは auto-import 出来ないみたいです。パースの一意性とかの問題なのでしょうか。わからずです。
解決策ですが、次のものは全て auto-import に対応していますから、そちらを使いましょう。
$($e:expr),*$($e:expr),* $(,)?$($e:expr)*
違いわかりませんという方は、フッ、私の勝ちです。なんで負けたか明日までに、明日…… もう明日ですね。