应该是插件的一个 bug,解决方案如下:

首先确认插件的版本


ls ~/.vscode/extensions/ | grep rust-lang

输出信息如下


rust-lang.rust-0.7.8

我的版本是 0.7.8。接下来需要编辑这个文件,添加 source $HOME/.cargo/env; 让rls找到可执行文件:


vim ~/.vscode/extensions/rust-lang.rust-0.7.8/out/src/tasks.js

在文件中找到函数 createShellExecution,然后修改 cmdLine 如下 (我的在第 25 行).


function createShellExecution(execution) {
     const { binary, command, args, cwd, env } = execution;
     // const cmdLine = `${command || binary} ${args.join(' ')}`;
     const cmdLine = `source $HOME/.cargo/env; ${command || binary} ${args.join(' ')}`;
     return new vscode_1.ShellExecution(cmdLine, { cwd, env });
}

之后重启 vscode 即可。