mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
4f7f38c1a0
Summary: Add a type to explicitly model a causal chain of errors, akin to error_chain. This looks a lot like Context, but is intended to show the entire stack of errors rather than deciding that only the top-level one is interesting. This adds a `ChainExt` trait, which adds a `.chain_ext(OuterError)` method to add another step to the causal chain. This is implemented for: - `F` where `F: Fail` - `Error` - `Result<_, F>` where `F: Fail` - `Result<_, Error>` - `Future`/`Stream<Error=F>` where `F: Fail` - `Future`/`Stream<Error=Error>` - `Chain` Using it is simple: ``` let res = something_faily().chain_err(LocalError::new("Something amiss"))?; ``` where `something_faily()` returns any of the above types. (This is done by adding an extra dummy marker type parameter to the `ChainExt` trait so that it can avoid problems with the coherence rules - thanks for the idea @[100000771202578:kulshrax]!) Reviewed By: lukaspiatkowski Differential Revision: D9394192 fbshipit-source-id: 0817844d283b3900d2555f526c2683231ca7fe12 |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |