mirror of
https://github.com/haraldh/chainerror.git
synced 2025-01-31 00:56:41 +01:00
807 B
807 B
Finding an Error cause
To distinguish the errors occuring in various places, we can define named string errors with the "new type" pattern.
derive_str_cherr!(Func2Error);
derive_str_cherr!(Func1Error);
Instead of ChainError<String>
we now have struct Func1Error(String)
and ChainError<Func1Error>
.
In the main
function you can see, how we can match the different errors.
Also see:
if let Some(f2err) = f1err.find_chain_cause::<Func2Error>() {
as a shortcut to
if let Some(f2err) = f1err.find_cause::<ChainError<Func2Error>>() {
hiding the ChainError<T>
implementation detail.
{{#include ../examples/tutorial8.rs}}
# #[allow(dead_code)]
# mod chainerror {
{{#rustdoc_include ../src/lib.rs:-1}}
# }