VS Code中rust-analyzer的Inlay Hints与代码补全功能失效求助
我现在遇到一个头疼的问题:在VS Code里写Rust代码时,不管是输入代码还是移动鼠标指针,都看不到Inlay提示和代码补全功能,但JavaScript的这些功能却能正常工作。而且Rust本身是能正常运行的,比如cargo check的诊断信息也能在IDE里正常显示,偏偏就是这两个功能失效了。
环境版本信息
- Visual Studio Code:1.92.2
- rustc版本:rustc 1.83.0-nightly
- Rust安装方式:Rustup x86_64-windows-msvc nightly
- 系统:Windows 10 22H2
- 已安装扩展:rust-analyzer(0.3.2096)
当前相关设置:
{ "rust-analyzer.discoverProjectRunner": null, "rust-analyzer.linkedProjects": [], "rust-analyzer.restartServerOnConfigChange": true }
我记不太清之前哪个版本是正常工作的了...
可能的解决办法
我自己遇到过类似情况,给你几个排查方向试试:
检查rust-analyzer的核心功能开关
有时候可能不小心误关了相关设置,你可以打开VS Code的设置(快捷键Ctrl+,),搜索以下选项,确保它们都设为true:rust-analyzer.inlayHints.enablerust-analyzer.completion.enable
另外也别忘了检查全局的Inlay Hints总开关:editor.inlayHints.enabled,可以设为on或者onUnlessPressed。
手动重启rust-analyzer服务
有时候语言服务可能会卡住,按Ctrl+Shift+P打开命令面板,输入rust-analyzer: Restart Server,回车重启服务,很多小问题这样就能解决。确认项目是否被正确识别
你的linkedProjects是空数组,rust-analyzer默认会自动识别Cargo.toml所在的项目,但如果你的项目结构比较特殊(比如工作区有多个子项目却没正确配置),可能需要手动指定项目路径。比如如果你的Cargo.toml在./my-rust-project目录下,可以把设置改成:"rust-analyzer.linkedProjects": ["./my-rust-project/Cargo.toml"]尝试切换rustc版本或更新rust-analyzer
你当前用的是nightly版本的rustc,有时候nightly版本和rust-analyzer可能存在兼容性问题。可以试试用rustup default stable命令切换到稳定版rustc,或者在VS Code的扩展市场里把rust-analyzer更新到最新版本,看看能不能解决兼容性问题。排查扩展冲突
有时候其他扩展可能会和rust-analyzer冲突,比如旧的Rust相关插件(比如已经废弃的官方Rust扩展),你可以暂时禁用其他非必要的扩展,然后重启VS Code试试。重置rust-analyzer设置
如果上面的方法都没用,可以试试重置rust-analyzer的设置。先备份好当前的自定义配置,然后删除所有rust-analyzer相关的设置项,重启VS Code后再重新配置需要的选项。
备注:内容来源于stack exchange,提问作者Matheus

