Derive Macro enumcapsulate_macros::IntoVariant
source · #[derive(IntoVariant)]Expand description
Derive macro generating an impl of the trait IntoVariant<T>.
It generates an impl for each of the enum’s
newtype variants, where Inner is the variant’s field type
and Outer is the enclosing enum’s type.
struct Inner;
enum Outer {
Inner(Inner),
// ...
}
// The generated impls look something along these lines:
impl IntoVariant<Inner> for Outer {
fn into_variant(self) -> Result<T, Self> {
match self {
Outer::Inner(inner) => Ok(inner),
err => Err(err),
}
}
}
// ...Note: Despite the derive macro’s name it’s actually TryFrom<T>
that’s being derives, not TryInto<T>.
But since the macro is derived on the enum the latter feels
more appropriate as the derive’s name.