1个不稳定版本
| 0.1.0 | 2019年1月15日 |
|---|
#5 in #lark
94 每月下载量
在 13 个crate中使用 (10 直接)
52KB
1.5K SLoC
Lark编译器中错误的表示。
lib.rs:
通过查询跟踪错误的类型。
以下是工作原理
- 可以自身报告错误的查询返回
WithError<T>;该值中包含的错误是在执行该查询期间发现的。 - 如果另一个查询使用返回
WithError的查询的结果,它只需使用into_value来忽略错误 --WithError总是包含一些形式的安全值供您使用(即,您可以忽略错误并继续进行)。 - 在最坏的情况下,可以使用
Result<T, ErrorReported>并让Err(ErrorReported)作为“由于某些错误无法生成值”的安全值。这不是首选,因为现在下游查询必须注意你是否传播了错误,但有时这是最好/最容易的事情。- 为此,
or_sentinel!查询充当一种将Result<T, ErrorReported>转换为具有适当安全值的U的?操作符 -- 如果结果是Err(ErrorReported),它为U创建错误安全值并返回它。 - 这依赖于
ErrorSentineltrait,它定义了给定类型的错误安全值。
- 为此,
此方案并非最符合人体工程学,我希望进行修改,但暂时可以使用。 -nikomatsakis
依赖项
约6-15MB
~211K SLoC