应该是插件的一个 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 即可。