问题标签 [rust-analyzer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
442 浏览

rust - Rust-analyzer 无法加载工作区

rust-analyzer 无法加载工作区:无法从 Cargo.tml 文件 /home/eth/Downloads/testing/Cargo.toml 读取 Cargo 元数据,cargo 1.33.0-nightly (0d1f1bbea 2018-12-19):无法运行' “货物” “元数据” “--format-version” “1” “--manifest-path” “/home/eth/Downloads/testing/Cargo.toml” “--filter-platform” “x86_64-unknown-linux -gnu"': 'cargo metadata' 退出并出现错误: 错误: 发现参数 '--filter-platform' 不是预期的,或者在此上下文中无效

几天前我需要重新安装我的操作系统,当我在 NeoVim 中安装和配置我的插件时——CoC 被用于代码建议——出现了该错误。我相信这不是 NeoVim/CoC 的问题,这就是我标记它的原因。我没有太多处理这种事情的经验,所以我什至不知道我还能提供什么信息......

0 投票
1 回答
71 浏览

rust - 为什么 let 绑定中不允许使用顶级或模式?

或者这是一个锈分析器错误?我试图谷歌但找不到任何东西。

0 投票
1 回答
31 浏览

visual-studio-code - 为什么 vscode 的“Run Doctest”助手过滤了我所有的 crate 的 Doctests?

预期行为:

在 vscode 中单击“运行 doctest”应该从 doctest 片段执行一项测试。

终端输出应该说(“1 通过;”或“1 失败;”)和“1 被过滤掉;”。

实际行为:

在 vscode 中点击“Run doctest”会执行 0 个测试,显示有 2 个被过滤掉了。

终端输出:

源代码:

我的机器:

  • macOS 12
  • rustc 1.57.0
  • rust analyzer v0.3.954

我为缩小问题范围所做的工作:

  1. 在终端中运行“相同”命令演示了预期的行为。终端输出显示test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.40s当我运行时cargo test --doc --package my_cache -- "Cacher<T>::new" --nocapture这正是我单击“运行 Doctest”时终端所说的运行
  2. 在同一个 repo 中的另一个 crate(称为“math”)中单击“Run Doctest”,展示了预期的行为。

看看我的行为不端的箱子和我的工作箱子之间的区别:

A. 这个行为不端的 crate 的 doctest 位于 where-impl因为其他 crate 的 doctest 位于文件的根级别。

B. 这个行为不端的 crate 的 doctest 适用于接受closure类型的通用结构。

C. 执行cargo testfromcrates/my_cache演示了预期的行为,具有以下终端输出:

同样,这里是源代码:

也许?值得注意的细节

  • 我已经按照https://github.com/rust-analyzer/rust-analyzer的结构对我的 git 仓库进行了建模,这样我就使用了 cargoworkspaces并且crates/*是成员。我有一个根cargo.toml,可以使用类似的东西指定本地依赖my_cache = {path = "crates/my_cache}项,但是我想不出这是一个促成因素的原因,因为我已经证明我的mathcrate 可以在这种结构中,而不会混淆vscode并过滤掉其中的 doctests意想不到的板条箱。

我的怀疑?

  • 发生了一些事情,导致 doctest 在不应该被过滤掉时被过滤掉。
    • 也许当我单击时声称正在执行Run Doctest的命令不是正在执行的 ACTUAL 命令。
    • 也许(错误?)与闭包类型有关。我忘记了我在哪里读到的,但我隐约记得 Rust 闭包类型是“未命名”的,这使得引用它们变得很奇怪。不幸的是,我找不到我正在查看的详细介绍了此内容的资源。(它可能是涵盖 Rust 编译器以及 Rust 编译器如何在内存中显示数据类型的资源,但我不记得细节(也许阅读本文的人会知道我在这里指的是什么))。

这是为了长寿而复制到此答案中的行为不端的 crate 源代码,以防我对 github 存储库进行更改:

0 投票
1 回答
46 浏览

visual-studio-code - 为什么 rust-analyzer.cargo.features 不会更改保存检查的功能(VSCode 扩展)?

我正在做一个 rust 项目,你必须选择一些特性来决定线性编程模块来编译项目。通常,我可以运行检查,cargo check --features lp_coincbc,blas_openblas-system一切正常。然而,Rust Analyzer VSCode Extension 给了我错误(compile_error!项目中内置的 s),即使我在我的 VScodesettings.json文件中设置了这个。

我进一步检查rust-analyzer.checkOnSave.features了它应该默认为rust-analyzer.cargo.features,所以我在这里真的很困惑。任何帮助,将不胜感激。

编辑:包括语言服务器跟踪配置(已删除字符限制)。

编辑 2:使用RA_LOG="flycheck=info"(因字符限制而删除)。

编辑 3:Rust Analyzer 语言服务器面板:

编辑4:错误副本mod.rs