繁体   English   中英

Rust IDE没有检测到error_chain的结果,认为我正在使用std :: result :: Result

[英]Rust IDE not detecting Result from error_chain, thinks I'm using the std::result::Result

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

如果我use self::errors::* ,IntelliJ认为我使用的是默认Resultstd::result::Result ,我认为)。 但是,如果我使用use self::errors::{Result, ...}显式导入类型,那么一切都会变成hunky dory。

我可以告诉,因为标准结果有两个类型参数,但error_chain只有一个。

在任何一种情况下,它仍然编译。

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

救命! 有谁知道如何让插件了解宏正在做什么?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM