gpt4 book ai didi

intellij-idea - Rust IDE 未检测到来自 error_chain 的结果,认为我正在使用 std::result::Result

转载 作者:行者123 更新时间:2023-11-29 07:58:45 25 4
gpt4 key购买 nike

我有一个带有 error_chain 的 errors.rs 文件! {},它导出 ResultResultExtErrorErrorKind

如果我使用self::errors::*,IntelliJ 认为我使用的是默认的Result (std::result::Result,我想)。但是,如果我使用 use self::errors::{Result, ...} 显式导入类型,一切都会顺利进行。

我知道是因为标准结果有两个类型参数,但是 error_chain 只有一个。

无论哪种情况,它仍然可以编译。

我使用的是标准 Rust IntelliJ 插件,版本 0.1.0.1991

帮助!有谁知道如何让插件了解宏在做什么?

最佳答案

IntelliJ-Rust 插件使用自己的代码解析器。它允许利用所有 IntelliJ 平台功能(如代码导航、格式化、重构、检查、快速文档、标记和许多其他功能),但需要实现所有语言功能,这对 Rust 来说不是一项简单的任务(您可以找到更多在 this reddit post 中深入讨论了 Rust 编译器解析器与 IDE 解析器。

宏扩展可能是目前插件解析器不支持的最大语言特性。也就是说,插件看到这个 error_chain! 调用,可以将其解析为其定义,但不会将其扩展为实际代码,因此不知道新的 Result 结构,它隐藏了来自 stdlib 的那个。不幸的是,在某些情况下,它会导致此类误报错误消息。

我已将此错误注释转换为检查,因此在下一个插件版本中,您将能够完全关闭它或针对特定代码块关闭它。宏扩展的工作也在进行中。

关于intellij-idea - Rust IDE 未检测到来自 error_chain 的结果,认为我正在使用 std::result::Result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44089097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com