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
12 lines
239 B
TOML
12 lines
239 B
TOML
[package]
|
|
name = "failure_ext"
|
|
version = "0.0.1"
|
|
authors = ["Source Control Oncall oncall+source_control@xmail.facebook.com"]
|
|
|
|
[dependencies]
|
|
boxfnonce = "0.1.0"
|
|
futures = "0.1.23"
|
|
failure = "0.1.2"
|
|
failure_derive = "0.1.2"
|
|
slog = "2.3.2"
|