macro_rules! impl_from_deserializer_error {
($err: path) => { ... };
}
Expand description
Implements conversion from Error
with From
for the given error type.
Allows for custom error types with source error types to easily be converted into with
?
.
The given error type should implement From<Error<Infallible>>
.
ยงExamples
use std::convert::Infallible;
use xml_stinks::deserializer::Error as DeserializerError;
use xml_stinks::impl_from_deserializer_error;
#[derive(Debug, thiserror::Error)]
enum FooError
{
#[error("Deserialization failed")]
DeserializeFailed(#[from] DeserializerError<Infallible>),
#[error("Invalid bar")]
InvalidBar(#[from] BarError),
}
impl_from_deserializer_error!(FooError);
#[derive(Debug, thiserror::Error)]
enum BarError
{
#[error("Oops")]
Oops,
}
let err_a: FooError = DeserializerError::<Infallible>::UnexpectedEndOfFile.into();
assert!(matches!(
err_a,
FooError::DeserializeFailed(DeserializerError::UnexpectedEndOfFile)
));
let err_b: FooError = DeserializerError::DeserializeFailed(BarError::Oops).into();
assert!(matches!(err_b, FooError::InvalidBar(BarError::Oops)));