如何为IntelliJ IDEA的Rust项目提供标准库源代码?

37
我正在使用Mac进行开发。我使用 brew install rust 安装了Rust 1.13.0,并在IntelliJ IDEA中安装了Rust插件0.1.0.1385。我使用cargo创建了我的第一个测试项目,当我用IDEA打开它时,出现以下消息:

  

未找到标准库源文件,某些代码洞察将无法工作

我没有找到任何已安装的源文件,也没有在Homebrew中找到Rust源包。

如何为项目提供源文件,如果忽略此步骤会有什么实际影响?


4
我建议使用 rustup,它会下载正确的源代码,并更新编译工具以及允许版本切换。https://rustup.rs/ 没有源代码,IDEA 将无法识别任何 std 类型或值,这基本上使得代码自动完成功能完全无用。 - Kroltan
我在Linux上也有同样的问题,因为我使用asdf-vm安装了Rust - https://github.com/asdf-community/asdf-rust/issues/18 - Tim Abell
8个回答

48

正如评论所述,推荐使用rustup的方法:

  • 访问https://rustup.rs/并根据您的平台遵循安装说明。
  • 通过运行以下命令添加rust-src组件:rustup component add rust-src
  • 在IntelliJ中创建一个新的Rust项目并选择您现有的Rust项目源。如果文件夹已经包含以前的IntelliJ项目文件,则可能必须先删除这些文件,然后才能继续。
  • IntelliJ-Rust应自动配置标准库源以指向由rustup下载的源代码。

1
现在在IDE中似乎有一个下载按钮:https://i.imgur.com/p0Q7PZZ.png - mpen
@mpen:不幸的是,在IDEA 20.1.3中,此链接不再可用。 - Thomas S.

15

作为参考,鉴于问题标题比较宽泛,在 Fedora 28 上我需要:

dnf install cargo rust-src
sudo ln -s /usr/lib/rustlib/src /usr/lib/rustlib/x86_64-unknown-linux-gnu/

/usr/lib/rustlib/x86_64-unknown-linux-gnu/src/rust/src作为“标准库”。

完整的设置: 输入图像描述

问题已经开放以简化该过程。


6
为什么你需要在这里使用符号链接?我在IntelliJ中只需选择/usr/lib/rustlib/src/rust/src,就可以正常工作,不需要符号链接。 - msrd0
@msrd0 请查看 问题 链接。这是(或曾经是)一个漏洞。 - eddygeek

6

如果不使用 rustup 安装程序,可以安装源代码包并指示 rust 插件使用这些包:

输入图片描述

(已在 CLion 2020.2.1、rust-1.46.0-x86_64-pc-windows-gnu.msi 和 rustc-1.46.0-src.tar.gz 上测试。离线 Rust 安装程序和源存档来自此处:https://forge.rust-lang.org/infra/other-installation-methods.html


5
尽管如其他帖子所指出的那样,使用rustup是安装Rust的首选方式,但使用发行版提供的软件包并不罕见。例如,我使用Gentoo提供的软件包,也遇到了标准库未填充字段的问题。不过,你可以通过输入以下查找命令轻松找到标准库的安装位置:
find /usr/lib* -type d -name "rust" | grep src

如果您在家中安装了 Rust,请执行以下操作:
find  -type d -name "rust" | grep src

除非你的发行版中有二进制文件和源代码的不同包,并且你只安装了二进制文件包,否则前面的命令会很有帮助。


4
我也在使用 Gentoo。已经安装了:[I] dev-lang/rust 1.32 (-clippy -debug -doc -libressl -rls -rustfmt -system-llvm -wasm)但是我似乎找不到标准库的任何地方...有任何想法为什么会缺失吗? - opncow
1
@opncow,我也遇到了同样的问题,在这里找到了答案:https://dev59.com/e7bna4cB1Zd3GeqPWCSL#60576683 - 使用Rust的“rls” useflag可以安装源代码。 - Scott Tiger
谢谢你,@ScottTiger!我完全忽略了这个 useflag。 - opncow

5

我知道这个问题是关于MacOS的,但是当在Linux上搜索时,这个答案也会显示出来。下面我将为Ubuntu回答。

对于Ubuntu 20.04,路径是/usr/lib/rustlib/src/rust/src


我的做法是:

  • 从存储库中安装了rustc,其中包括cargo
sudo apt install rustc
  • 然后安装了 Rust 源代码包
sudo apt install rust-src

我使用了apt-file(可以通过sudo apt install apt-file安装)来搜索源代码的安装路径。
sudo apt-file update
apt-file list rust-src

这显示的路径为 /usr/src/rustc-1.41.0/src

但在 /usr/lib/rustlib/ 中运行 ls -la 会显示符号链接,/usr/lib/rustlib/src/rust/src 指向之前找到的目录。

在IntelliJ中使用符号链接将能够适用于新的Rust版本。


2
谢谢,伙计。我整天都在忙这个。Ubuntu 20.04。 - Update
/usr/lib/rustlib/src/rust/src 在 Debian 11 上对我有效。 - bart

4

对于 Fedora 32,使用以下命令安装 Rust:

dnf install cargo rust-src

标准库源代码的路径为:

/usr/lib/rustlib/src/rust

3

我使用Ubuntu。 我按照以下步骤进行操作:

  1. sudo apt install rust-src
    等待安装完成,然后
  2. dpkg -L rust-src
    复制最后一行。 对于我来说,这是标准库路径:

/usr/lib/rustlib/src/rust


2

对于MacOS,您需要将/opt/homebrew/bin/放置在其中。


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