无法启动客户端 Rust Language Server

11

我正在尝试弄清楚如何在WSL中使用rustc和cargo。我使用VS Code和Rust(rls)插件,可以编译我的代码,但是出现了RLS的问题:

无法启动客户端Rust Language Server

Rustup不可用。请从https://www.rustup.rs/安装。

我该如何解决这个问题?


我在使用Remote SSH和运行在Windows上的Linux虚拟机(Virtual Box)时遇到了同样的问题。解决方法是手动安装Rust语言服务器rustup component add rls rust-analysis rust-src并重新启动虚拟机。不过我不确定根本原因是什么。 - Majus Misiak
6个回答

18

在VSCode设置中设置rust-client.rustupPath

{
    "rust-client.rustupPath": "~/.cargo/bin/rustup"
}
如果你在Windows上使用WSL,请确保编辑Rust扩展的WSL设置,而不是用户/本地设置。
教程:

1
嗨,丹尼尔,我在我的vscode(从wsl2启动)中只看到用户和工作区选项卡,没有远程[WSL:Ubuntu-20.04]选项卡。你有什么想法吗? - Paulus
@Paulus 你解决了吗?我一点都不知道。 - Daniel Kmak
当使用Rust (RLS)扩展时:文件/首选项/设置并过滤“rustup”将允许您更改Rustup路径。注意:rust-analyzer不需要此操作,似乎是首选的扩展。 - Taylored Web Sites

0

即使我运行:

which rustup
/Users/justincalleja/.cargo/bin/rustup

在VSCode设置中简单输入rustup

"Rust-client: Rustup Path Path to rustup executable. Ignored if rustup is disabled."

是不够的,我必须像上面显示的那样输入rustup二进制文件的绝对路径。这样做后,我重新加载了窗口,然后被要求下载缺少的组件(或依赖项-提示现在已经消失了,我忘记了)。这样做之后,VSCode插件似乎工作得很好。至少我可以格式化代码。

所以看起来它是与VSCode的PATH和我的系统上的PATH不匹配有关。我不确定是什么问题,但如果你只是想让扩展程序工作,请尝试在设置中使用rustup的绝对路径。

注意source "$HOME/.cargo/env"会自动添加到启动文件中,如.bashrc。我尝试的第一件事是将其添加到我的shell(zsh)的启动文件中,但并没有添加成功。但是这也没有用。我正在使用rustc 1.49.0 (e1884a8e3 2020-12-29))。


0
我在使用WSL和Visual Studio Code时也遇到了这个问题。问题似乎源于Rust语言服务器需要在您的路径中找到rustup。我们两个可能都是使用软件包管理器安装cargo和rust编译器工具的相同路径。这不包括rustup,您实际上可以使用它来保持rust工具链的最新状态。rustup似乎也是在系统上安装rust工具链的首选方法。
在使用默认设置安装rustup后,您应该在主目录中看到一个.rustup目录。这就是工具链所在的位置。所有安装文本都说明,在注销并重新登录后,它会将工具链添加到您的环境路径中,但我没有成功。我目前正在使用fish而不是bash,并且必须更新配置以在启动时包含工具链。一旦我这样做了,我就能够让VSCode正确地安装和运行RLS。

0

所以...我在Windows 10上运行Rust时遇到了同样的问题。我的Rust版本是1.24.3,我的VSCode版本是1.63.2。

  1. 你需要做的第一件事是将"%USERPROFILE%.cargo\bin"添加到你的环境变量中

  2. 下一个解决方案可以在这个教程中找到:Rust on Windows and Visual Studio Code


0
我在Mac上运行VSCode,并使用远程开发。远程服务器是Ubuntu 20。我遇到了这个问题,将rust-client.rustupPath添加到VSCode设置中,并在远程服务器上杀死了VSCode服务器以解决此问题。现在它可以正常工作了。

0

这个方法适用于我在Ubuntu 20.04远程SSH环境下的操作。

  1. 编辑位于用户主目录下的.profile和.bashrc文件

在.profile中,注释掉以下这行:

export PATH="$HOME/.cargo/bin:$PATH"

在两者中都添加以下行:
[[ ":$PATH:" != *":$HOME/.cargo/bin:"* ]] && PATH="$HOME/.cargo/bin:${PATH}"
  1. 重新启动。

1
你不需要重新启动,因为你可以简单地source.profile/.bashrc文件。 - MindSwipe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接