mirror of
https://github.com/haraldh/chainerror.git
synced 2025-10-28 13:44:08 +01:00
935 B
935 B
Simple Chained String Errors
Now with the help of the chainerror crate, we can have a nicer output.
Press the play button in the upper right corner and see the nice debug output.
use crate::chainerror::*;
{{#include ../examples/tutorial2.rs:2:}}
# #[allow(dead_code)]
# mod chainerror {
{{#includecomment ../src/lib.rs}}
# }
What did we do here?
{{#include ../examples/tutorial2.rs:11:13}}
The macro cherr!(cause, newerror) stores cause as the source/cause of newerror and returns
newerror, along with the filename (file!()) and line number (line!()).
Err(e)? then returns the error e applying e.into(), so that we
again have a Err(Box<Error>) as a result.
The Debug implementation of ChainError<T> (which is returned by cherr!())
prints the Debug of T prefixed with the stored filename and line number.
ChainError<T> is in our case ChainError<String>.