1个不稳定版本

0.1.0 2019年1月15日

#5 in #lark

Download history 55/week @ 2024-03-24 92/week @ 2024-03-31 29/week @ 2024-04-07 34/week @ 2024-04-14 39/week @ 2024-04-21 28/week @ 2024-04-28 40/week @ 2024-05-05 41/week @ 2024-05-12 31/week @ 2024-05-19 36/week @ 2024-05-26 26/week @ 2024-06-02 19/week @ 2024-06-09 36/week @ 2024-06-16 32/week @ 2024-06-23 8/week @ 2024-06-30 17/week @ 2024-07-07

94 每月下载量
13 个crate中使用 (10 直接)

自定义许可证

52KB
1.5K SLoC

Lark编译器中错误的表示。

更多信息,请参阅 主README内部文档.


lib.rs:

通过查询跟踪错误的类型。

以下是工作原理

  • 可以自身报告错误的查询返回 WithError<T>;该值中包含的错误是在执行该查询期间发现的。
  • 如果另一个查询使用返回 WithError 的查询的结果,它只需使用 into_value 来忽略错误 -- WithError 总是包含一些形式的安全值供您使用(即,您可以忽略错误并继续进行)。
  • 在最坏的情况下,可以使用 Result<T, ErrorReported> 并让 Err(ErrorReported) 作为“由于某些错误无法生成值”的安全值。这不是首选,因为现在下游查询必须注意你是否传播了错误,但有时这是最好/最容易的事情。
    • 为此,or_sentinel! 查询充当一种将 Result<T, ErrorReported> 转换为具有适当安全值的 U? 操作符 -- 如果结果是 Err(ErrorReported),它为 U 创建错误安全值并返回它。
    • 这依赖于 ErrorSentinel trait,它定义了给定类型的错误安全值。

此方案并非最符合人体工程学,我希望进行修改,但暂时可以使用。 -nikomatsakis

依赖项

约6-15MB
~211K SLoC