VSCode/Atom 期中的完整 Rust 设置
Full Rust setup in VSCode/Atom Issue
这是一篇长文post,抱歉。
我一直在尝试使用 Rust 启动一个项目,但是 运行 遇到了一个问题:它在 VSCode/Atom 中的 Linux 上无法正常工作。
浪费了 3 天时间,在线搜索,尝试不同的 tutorials/videos - 没有任何效果 + 大多数 material 来自 2017 年。我尝试过 Matrix 聊天,但没人知道该怎么做。 Git 也没有解决方案,因为人们一直在建议非常 运行dom 的东西,比如 "change this variable in toml file to something else, and back again"
Git: https://github.com/rust-lang/rls-vscode/issues/513
我安装了(并在过去 3 天里多次重新安装了 rust),它在终端上工作得很好,但在编辑器中却不行。
两期:
- 编辑器看不到任何 crate,因此您无法从编辑器中 运行 您的代码。
- 自动完成不起作用(仅适用于标准,不适用于您添加的额外板条箱)。
我做了什么(除了很多其他事情):
- 安装 Rust(在 Manjaro 和 Debian 计算机上):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
已尝试 stable
、beta
、nightly
(针对 racer
)
刚刚再次进行全新安装:
stable installed - rustc 1.40.0 (73528e339 2019-12-16)
Rust is installed now. Great!
在 VSCode 中安装了 Rust (rls) rust-lang.rust
扩展(在 Atom 中安装了 rust)
创建了一个新项目:cargo new test_proj
并向 [dependencies] 添加了新的 rand = "0.6"
并使用了 cargo build。它确实构建了 rand
添加 "rust-client.enableMultiProjectSetup": true
到设置文件以避免警告:A Cargo.toml file must be at the root of the workspace in order to support all features. Alternatively set rust-client.enableMultiProjectSetup=true in settings.
by Rust (rls)
我还安装了 'code runner' 扩展,我使用 Python、C++ 和 Java,到 运行 编辑器中的代码.
所以现在我只有主要功能了,运行编辑器还不错:
现在我添加 运行d,它似乎可以工作,并且会自动完成一些...
但现在它停止工作了:
好的,我会完成代码并尝试 运行ning 它,现在我们不能 运行 它了,因为箱子不见了:
好的,让我们试试 Ctrl + Shift + B 并尝试 cargo build:
出于某种奇怪的原因,它正在查找 /media/Work/Work/rust_code 而不是 /media/Work/Work/rust_code/test_proj/
最后一件事:让我们在终端中尝试 运行ning:
所以它确实工作得很好。
抱歉这么久了post,但是我已经浪费了3天了,它仍然无法启动和运行ning。有人设法设置了吗?
它必须是 Atom 或 VSCode 因为我在那里设置了所有其他 languages/projects + VSCode 列在官方 Rust 网站上,所以我认为它应该可以工作.
基本上,在两个具有调试功能的编辑器(VSCode 和 Atom)中,与 Intellij Rust 不同,两者都不适合我,我只是不能在 Rust 中编码,因为工具实际上是broken/not 足够成熟,可以从事富有成效的工作。如果我错了请告诉我,这只是一个小标志的情况,每个人都忘记提及,在某些配置中丢失。
精简版
假设我正确理解了这个问题。然后各种构建问题归结为您尝试构建项目的不同方式,并尝试在不同的目录中这样做。
TL;DR: 您在 VSCode 中打开的目录是 rust_code
目录。关闭它并打开 rust_code/test_proj
。现在 Rust: cargo build
(或 Rust: cargo run
)应该可以工作了。
长版
Editors don't see any crates, so you can't run your code from the editor.
Rust: cargo build
任务不工作,因为您打开的目录不是 "Rust project"(货物包),它是一个包含另一个目录的目录,这是一个 Rust 项目。
看看你的截图显示了这个,看看最上面一行是怎么写的 rust_code/test_proj
:
当你执行任务时,Cargo 抱怨 rust_code/Cargo.toml
不存在,这是真的,因为它位于 rust_code/test_proj/Cargo.toml
如果您查看此屏幕截图的输出,您会发现情况是这样的:
此处您正在手动执行 cargo run
。但重要的区别在于您位于 rust_code/test_proj
目录中。
最后简单地执行 rustc main.rs
失败了,因为您没有传递所需的参数。所以 rustc
对你的依赖关系一无所知。
尝试执行 cargo build -v
然后您可以看到 Cargo 传递给 rustc
.
的所有参数
Autocomplete does not work (only works on std, not on extra crates you add).
尝试打开一个包含 Cargo.toml
的目录,然后代码补全应该适用于依赖项。如果我不这样做,那么我会收到以下通知,并且代码完成仅适用于您所说的标准库。也就是说,RLS 有时很奇怪。
如果我不得不猜测,那么我认为 RLS 会编译代码,并在某个阶段提取所需的信息。因此,如果代码无法编译,那么代码完成可能会受到影响。但这是 100% 有根据的猜测。
或者,我听说过使用 IntelliJ + Rust plugin,但我自己还没有使用它。
我已经弄清楚了一部分:运行在 VSCode 中使用您的代码的问题。我必须修改默认代码-运行 rust 的 ner 命令:
原命令:
"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
更改为:
"rust": "if [ $(basename $dir) = 'examples' ]; then cargo run --example $fileNameWithoutExt; else cargo run; fi",
现在可以使用了,我可以运行 快速编写代码。
第 2 部分:不幸的是,自动完成仍然非常糟糕。我正在使用 RLS。有这个东西racer
。是不是更好的选择?
Alternatively, I have heard praise about using IntelliJ + the Rust
plugin, but I haven't used it myself yet.
正如我在之前的 post 中提到的,IntelliJ 免费版据我所知没有调试器。我需要它。
我想知道人们如何从 Rust 获得良好的自动完成功能?
这是一篇长文post,抱歉。
我一直在尝试使用 Rust 启动一个项目,但是 运行 遇到了一个问题:它在 VSCode/Atom 中的 Linux 上无法正常工作。
浪费了 3 天时间,在线搜索,尝试不同的 tutorials/videos - 没有任何效果 + 大多数 material 来自 2017 年。我尝试过 Matrix 聊天,但没人知道该怎么做。 Git 也没有解决方案,因为人们一直在建议非常 运行dom 的东西,比如 "change this variable in toml file to something else, and back again"
Git: https://github.com/rust-lang/rls-vscode/issues/513
我安装了(并在过去 3 天里多次重新安装了 rust),它在终端上工作得很好,但在编辑器中却不行。
两期:
- 编辑器看不到任何 crate,因此您无法从编辑器中 运行 您的代码。
- 自动完成不起作用(仅适用于标准,不适用于您添加的额外板条箱)。
我做了什么(除了很多其他事情):
- 安装 Rust(在 Manjaro 和 Debian 计算机上):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
已尝试 stable
、beta
、nightly
(针对 racer
)
刚刚再次进行全新安装:
stable installed - rustc 1.40.0 (73528e339 2019-12-16)
Rust is installed now. Great!
在 VSCode 中安装了
Rust (rls) rust-lang.rust
扩展(在 Atom 中安装了 rust)创建了一个新项目:
cargo new test_proj
并向 [dependencies] 添加了新的rand = "0.6"
并使用了 cargo build。它确实构建了rand
添加
"rust-client.enableMultiProjectSetup": true
到设置文件以避免警告:A Cargo.toml file must be at the root of the workspace in order to support all features. Alternatively set rust-client.enableMultiProjectSetup=true in settings.
by Rust (rls)我还安装了 'code runner' 扩展,我使用 Python、C++ 和 Java,到 运行 编辑器中的代码.
所以现在我只有主要功能了,运行编辑器还不错:
现在我添加 运行d,它似乎可以工作,并且会自动完成一些...
但现在它停止工作了:
好的,我会完成代码并尝试 运行ning 它,现在我们不能 运行 它了,因为箱子不见了:
好的,让我们试试 Ctrl + Shift + B 并尝试 cargo build:
出于某种奇怪的原因,它正在查找 /media/Work/Work/rust_code 而不是 /media/Work/Work/rust_code/test_proj/
最后一件事:让我们在终端中尝试 运行ning:
所以它确实工作得很好。
抱歉这么久了post,但是我已经浪费了3天了,它仍然无法启动和运行ning。有人设法设置了吗?
它必须是 Atom 或 VSCode 因为我在那里设置了所有其他 languages/projects + VSCode 列在官方 Rust 网站上,所以我认为它应该可以工作.
基本上,在两个具有调试功能的编辑器(VSCode 和 Atom)中,与 Intellij Rust 不同,两者都不适合我,我只是不能在 Rust 中编码,因为工具实际上是broken/not 足够成熟,可以从事富有成效的工作。如果我错了请告诉我,这只是一个小标志的情况,每个人都忘记提及,在某些配置中丢失。
精简版
假设我正确理解了这个问题。然后各种构建问题归结为您尝试构建项目的不同方式,并尝试在不同的目录中这样做。
TL;DR: 您在 VSCode 中打开的目录是 rust_code
目录。关闭它并打开 rust_code/test_proj
。现在 Rust: cargo build
(或 Rust: cargo run
)应该可以工作了。
长版
Editors don't see any crates, so you can't run your code from the editor.
Rust: cargo build
任务不工作,因为您打开的目录不是 "Rust project"(货物包),它是一个包含另一个目录的目录,这是一个 Rust 项目。
看看你的截图显示了这个,看看最上面一行是怎么写的 rust_code/test_proj
:
当你执行任务时,Cargo 抱怨 rust_code/Cargo.toml
不存在,这是真的,因为它位于 rust_code/test_proj/Cargo.toml
如果您查看此屏幕截图的输出,您会发现情况是这样的:
此处您正在手动执行 cargo run
。但重要的区别在于您位于 rust_code/test_proj
目录中。
最后简单地执行 rustc main.rs
失败了,因为您没有传递所需的参数。所以 rustc
对你的依赖关系一无所知。
尝试执行 cargo build -v
然后您可以看到 Cargo 传递给 rustc
.
Autocomplete does not work (only works on std, not on extra crates you add).
尝试打开一个包含 Cargo.toml
的目录,然后代码补全应该适用于依赖项。如果我不这样做,那么我会收到以下通知,并且代码完成仅适用于您所说的标准库。也就是说,RLS 有时很奇怪。
如果我不得不猜测,那么我认为 RLS 会编译代码,并在某个阶段提取所需的信息。因此,如果代码无法编译,那么代码完成可能会受到影响。但这是 100% 有根据的猜测。
或者,我听说过使用 IntelliJ + Rust plugin,但我自己还没有使用它。
我已经弄清楚了一部分:运行在 VSCode 中使用您的代码的问题。我必须修改默认代码-运行 rust 的 ner 命令:
原命令:
"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
更改为:
"rust": "if [ $(basename $dir) = 'examples' ]; then cargo run --example $fileNameWithoutExt; else cargo run; fi",
现在可以使用了,我可以运行 快速编写代码。
第 2 部分:不幸的是,自动完成仍然非常糟糕。我正在使用 RLS。有这个东西racer
。是不是更好的选择?
Alternatively, I have heard praise about using IntelliJ + the Rust plugin, but I haven't used it myself yet.
正如我在之前的 post 中提到的,IntelliJ 免费版据我所知没有调试器。我需要它。
我想知道人们如何从 Rust 获得良好的自动完成功能?