我正在使用IntelliJ的rust插件(版本0.2.0.2114-182)与IDEA(2018.2.3)。
在我的编辑器窗口的顶部有一个黄色的条,上面写着“cannot attach stdlib sources automatically without rustup”.这并不奇怪,因为gentoo没有使用rustup.它从源代码编译rust。
有一个“手动附加”的选项,但我不知道它想让我选择什么目录;甚至我应该找什么来找出正确的目录是什么;我甚至不确定gentoo ebuild是否创建了一个包含必要的stdlib源代码的目录。
我怎样才能以一种与gentoo的包管理系统兼容的方式向rust插件提供stdlib源代码?似乎How to provide standard library sources for IntelliJ IDEA's Rust project?的答案绕过了gentoo的ebuild,并且可能会随着时间的推移导致cruft的积累。
5条答案
按热度按时间vfwfrxfs1#
dev-lang/rust Gentoo软件包有一个
rls
use-flag(代表Rust Language Server),它有一个将Rust源代码安装到/usr/lib/rustlib/src
的副作用:字符串
因此,解决方案是启用
rls
use-flag,然后将Intellij IDEA指向/usr/lib/rustlib/src/rust/src
:x1c 0d1x的数据
我相信这是Gentoo上比绕过portage和/或使用rustup更惯用的解决方案。
请注意,dev-lang/rust-bin包目前没有
rls
use-flag,我还没有找到一种方法来安装Rust lib源代码。wrrgggsh2#
我有一个实验性的技术,有不同的疣从解决方案斯文发现:
除了gentoo管理的rust ebuild之外,我还安装了rustup。
字符串
然而,rustup很遗憾,我已经在/usr/bin中安装了rust
型
蛮力“解决”了这个问题:
型
之后,你可能想让rustup使用ebuild安装的相同版本(或者你想让它跟踪最新的稳定版本,你的选择)
型
但是你肯定想要rust-src组件
型
之后,rust stdlib源应该在
$HOME/.rustup/toolchains/$VERSION-$ARCH/lib/rustlib/src/rust/src
中,您应该能够将该路径输入到rust插件的设置中。x1c 0d1x的数据
你也可以使用设置对话框来选择你的工具链(
/usr/bin
、$HOME/.cargo/bin
或$HOME/.rustup/toolchains/$VERSION-$ARCH/bin
;我只是猜测.cargo/bin
指向你目前设置的rustup default
)。这个解决方案的缺点是你现在有2个(或更多)rust安装。系统ebuild,加上你使用rustup安装到
$HOME/.cargo
和$HOME/.rustup
的任何版本。考虑到我只使用了一个小时左右,可能会有更多的问题。zlwx9yxi3#
我也遇到了同样的问题。我的解决方案是使用rustup并从我的系统中删除portage的rust。然后你可以告诉portage假设rust是通过使用/etc/portage/package.provided来提供的,以便像firefox一样使用rustup的版本。
下面是一篇描述该过程的短文:https://laumann.xyz/gentoo/2018/05/01/gentoo-package-provided.html
Iirc你不需要他在bash.profile最后放的所有东西,但是现在我不能告诉你你到底可以省略什么
pu3pd22g4#
其他帖子提到的路径是正确的:
在设置它们之后,插件能够正常工作,但是属于Rust标准库的方法/函数的“自动完成”仍然不起作用(在我所有的3个Gentoo笔记本上都有同样的问题,用CLion 2021.2和2021.3 + Rust插件0.4.164和其他一些旧版本+ Rust 1.58.1和1.56.1重现)。
例如,当输入“String::“时,我没有得到显示其函数/方法的列表(例如“from()",“as_bytes()"等)。
确切地说,我第一次设置正确的路径时,该功能正在工作,但在显式重启CLion后就不再工作了(我花了一段时间才意识到这一点,让我疯狂)。
问题的根本原因似乎是rust插件希望能够写入stdlib目录(我没有分析它写了什么,也不打算推测)。
错误消息示例:
字符串
在CLion改变这种行为之前,解决办法显然是让运行CLion的用户可以写Rust标准库的位置。
直接这样做当然会引发很多问题(安全+ pkg管理),因此我决定寻找替代方案。
我决定使用OverlayFS,以便仍然能够使用Gentoo最初安装的Rust,同时将CLion编写的更改重新路由到一个单独的目录。在我的情况下,详细信息如下:
1-创建了OverlayFS所需的3个自定义目录:
型
2-是否进行了初始手动“安装”:
型
(the“/usr/lib/rustlib”的内容位于附加层“/opt/stecustom/clion/clion-rust_stdlib-overlay_upperdir”之上,所有更改都将写入该层-我不知道“workdir”应该托管什么,但它是一个必需的参数-合并后的层在“/mnt/clion-rust_stdlib-overlay-result”中可用:)
3-在覆盖中更改了所有文件的所有权:
型
4-使CLion的Rust插件使用新的覆盖目录:
5-重新启动CLion并检查是否一切正常
6-在“/etc/fstab”中将overlayfs永久化:
型
7-重新启动并在CLion中再次检查。
bvjveswy5#
现在是2023年,Gentoo的Rust构建了(dev-lang/rust和dev-lang/rust-bin)都有
rust-src
USE标志,这会导致安装Rust标准库的源代码。例如,我用USE=rust-src安装了dev-lang/rust-1.71.1,我使用路径/usr/lib/rust/1.71.1/lib/rustlib/src/rust/library
作为RustRover的“Standard Library”配置字段,现在它不再抱怨无效的标准库了。(尽管它确实抱怨它不能写到那个位置。)(Note:这个问题是关于Intellij IDEA的Rust插件。最近这个插件被弃用了; JetBrains现在生产独立的RustRover IDE,目前处于EAP阶段。我的答案是RustRover,但我相当肯定它也适用于旧的插件。)