我正在尝试学习 Rust 并安装了 VSCode 的 Rust 扩展。 但我没有看到任何语法的自动完成。
我想通过
.trim()
致电 String
,但我没有完成。我读到 Rust 的完成度不是很好,但是语言服务器应该能够推荐可以在结构上调用的方法?
我还看到一个教程,导师在 VSCode 中有自动完成功能,但我不知道他用的是什么扩展。
我也在 WSL 中进行了尝试,并认为 WSL 是问题所在,但在安装了千兆字节的 Visual Studio Build Tools 后,发现它也无法在 Windows 上本地运行。
正如dustypomerleau/rust-syntax Issue 4中提到的,自2020年11月起,该语法被合并到Rust Analyzer中,RA的语法在启动时会覆盖其他语法。
microsoft/vscode
问题 64488“需要对 Rust lang 更好的语法支持”因此被关闭(2020 年 12 月)。
尽管使用了 rust-analyzer 扩展,我还是遇到了同样的问题。不知何故,我当前项目的 Cargo.toml 未链接到 rust-analyzer 的链接项目。
要链接它,Cargo.toml的路径必须出现在 {project_root}/.vscode/settings.json 中作为 rust-analyzer.linkedProjects 的参数。这是我现在的情况:
{
"rust-analyzer.linkedProjects": [
"./py-kernel-regression/Cargo.toml",
"./Cargo.toml",
]
}
以上答案都不适合我。
经过多次尝试,以下是有效的。我测试了2周然后写在这里。
现在代码补全功能在每个文件中都可以工作。
[编辑1] 使用几个月后,如果 rust 代码完成功能不起作用,那么......
还有一件事,如果您的文件未添加到
mod.rs
VSCode 将无法识别为项目文件,因此自动完成建议可能不起作用。
或者在
main.rs
中,您的模块未列在顶部:
mod file_model;
mod utils;
// add relevant module or file
我知道这很奇怪,并且注意到没有人提到过它。如果您在 macOS 上并通过自制程序安装了 rust,那么
rustup component add rust-analyzer
,vs code 将不会生成自动完成。
还有一个简单的解决方案,需要您完全卸载自制安装的 rust(或
rustup
),然后从 官方安装指南安装新的
rustup
。这次 rustup component add rust-analyzer
之后,vs code 开始生成自动补全并进行全面分析。
通过完全卸载以前的 Rust 设置,我的意思是
rustup component remove
所有组件以及 rm -rf "$HOME/.cargo"
和 rm -rf "$HOME/.rustup"
,或这两个自定义目录。
环境:macOS 14.1(23B74)(英特尔)
解决方案已在我的机器上验证有效。