macro_rules! impl_error_enum { ($ty:ty, $($variant:ident ($($inner:ident),+) => $source:expr),+ ,) => { ... }; ($ty:ty, $($variant:ident ($($inner:ident),+) => $source:expr),+) => { ... }; ($ty:ty, $($variant:ident { $($inner:ident),+ } => $source:expr),+ ,) => { ... }; ($ty:ty, $($variant:ident { $($inner:ident),+ } => $source:expr),+) => { ... }; ($ty:ty,) => { ... }; ($ty:ty) => { ... }; }
Expand description
Implements Error
for enums.
Emitted code is not compatible with #[no_std]
.
ยงExamples
use std::error::Error as _;
#[derive(Debug)]
enum Err {
Io(std::io::Error),
Generic(String),
}
impl_more::impl_display_enum!(Err, Io(err) => "{err}", Generic(msg) => "{msg}");
impl_more::impl_error_enum!(Err, Io(err) => err);
assert!(Err::Io(io_err).source().is_some());
assert!(Err::Generic("oops".to_owned()).source().is_none());