【问题标题】:How to get type hints to display?如何获取要显示的类型提示?
【发布时间】:2021-12-08 00:12:20
【问题描述】:

我见过 youtuber 和类似的人在 VSC 中使用 rust-analyzer 插件处理 Rust,他们可以在其中显示可选的类型注释,即使它不一定写在代码中。就像我在编辑器中输入foo(a,b),它会自动显示foo(a: A, b :B),其中:A:B 是浅灰色的,可能甚至没有写在文件中,只是视觉提示?很好,我不知道这是 VSC 还是 rust-analyzer 的功能?我的 rust-analyzer 有两个设置 Parameter Hints 和 TypeHints 都设置为启用。

【问题讨论】:

  • 当你创建一个有多个参数的函数时它会显示吗?
  • 您确定安装了语言服务器。 Rust-analyzer 建议在安装后使用一个非常容易错过的弹出窗口安装它。
  • 两个 cmets 都非常有用! Fwiw 我认为 rust-analyzer 和 VSC rust-lang 插件之间存在冲突,导致某些功能无法正常工作。

标签: visual-studio-code rust rust-analyzer


【解决方案1】:

在这种情况下,您正在寻找parameter hints。要显示提示的函数也需要有多个参数。

确保设置已启用:

设置(用户界面)

Inlay hints: Parameter hints

设置 (JSON)

"rust-analyzer.inlayHints.parameterHints": true

然后您应该得到类似于以下内容的结果:

fn add(x: u32, y: u32) -> u32 {
    x + y    
}

fn main() {
    let result = add(x: 4, y: 2);
}

确保仅启用rust-analyzer,因为它可能与rls 冲突。警告was added 如果两者都启用,则会提到以下内容:

You have both rust-analyzer (matklad.rust-analyzer) and Rust (rust-lang.rust)
plugins enabled. These are known to conflict and cause various functions of
both plugins to not work correctly. You should disable one of them.

【讨论】:

  • 只是检查一下,您使用的是matklad.rust-analyzer 还是rust-lang.rust VSC 扩展?这很令人困惑,因为后者说“由 Rust Analyzer 提供支持”,而且它的安装数量似乎更高。看起来扩展评论更适合matklad.rust-analyzer
  • @JSStuball 确实令人困惑。我只有安装了rust-analyzer 作为扩展。这是rls-2.0 努力的一部分。也许有冲突? rust-lang.rust 扩展名提到它可以安装任何一个。
  • 好的,干杯,一切似乎都很好,只启用了rust-analyzer,所以我现在就开始吧。
  • @JSStuball 太棒了!我在回答中添加了更多信息,提到了这两者之间可能存在的冲突。
【解决方案2】:

rust-analyzer 显示嵌体提示:

  • 局部变量的类型
  • 函数参数的名称
  • 链式表达式的类型

您可以通过将其添加到您的settings.json 来切换镶嵌提示:

{
  "rust-analyzer.inlayHints.enable": true
}

或者您可以在 VSCode 首选项中搜索“rust inlay”。

【讨论】:

    猜你喜欢
    • 2016-10-21
    • 2019-03-21
    • 2020-11-03
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多