簡體   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