Rust Visual Studio Code 代码完成功能不起作用

问题描述 投票:0回答:6

我正在尝试学习 Rust 并安装了 VSCode 的 Rust 扩展。 但我没有看到任何语法的自动完成。

我想通过

.trim()
致电
String
,但我没有完成。我读到 Rust 的完成度不是很好,但是语言服务器应该能够推荐可以在结构上调用的方法?

我还看到一个教程,导师在 VSCode 中有自动完成功能,但我不知道他用的是什么扩展。

我也在 WSL 中进行了尝试,并认为 WSL 是问题所在,但在安装了千兆字节的 Visual Studio Build Tools 后,发现它也无法在 Windows 上本地运行。

visual-studio-code rust autocomplete
6个回答

3
投票

正如dustypomerleau/rust-syntax Issue 4中提到的,自2020年11月起,该语法被合并到Rust Analyzer中,RA的语法在启动时会覆盖其他语法。

完成度应该有所提高,

microsoft/vscode
问题 64488“需要对 Rust lang 更好的语法支持”因此被关闭(2020 年 12 月)。


3
投票

尽管使用了 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
投票

以上答案都不适合我。

经过多次尝试,以下是有效的。我测试了2周然后写在这里。

现在代码补全功能在每个文件中都可以工作。

[编辑1] 使用几个月后,如果 rust 代码完成功能不起作用,那么......

  1. 关闭vs代码
  2. 转到编写 Rust 代码的目录
  3. 删除cargo.lock.vscode文件夹
  4. 打开 VS Code > 新窗口 > 并重新导入项目。

1
投票

还有一件事,如果您的文件未添加到

mod.rs
VSCode 将无法识别为项目文件,因此自动完成建议可能不起作用。

或者在

main.rs
中,您的模块未列在顶部:

mod file_model;
mod utils;
// add relevant module or file

0
投票

我知道这很奇怪,并且注意到没有人提到过它。如果您在 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)(英特尔)

解决方案已在我的机器上验证有效。

© www.soinside.com 2019 - 2024. All rights reserved.