diff --git a/src/build.rs b/src/build.rs index 98ec6a6..e7ee4b5 100644 --- a/src/build.rs +++ b/src/build.rs @@ -180,7 +180,7 @@ impl Enum { impl #parent_impl core::convert::TryFrom<#parent_ident #parent_ty> for #child_ident #child_ty #parent_where { type Error = #error; - fn try_from(parent: #parent_ident #parent_ty) -> Result { + fn try_from(parent: #parent_ident #parent_ty) -> Result>::Error> { match parent { #(#try_from_parent_arms),*, _ => Err(#error) diff --git a/tests/it.rs b/tests/it.rs index bd8dc3c..d898791 100644 --- a/tests/it.rs +++ b/tests/it.rs @@ -72,3 +72,18 @@ enum Whew<'a: 'b, 'b, 'c, T, U> { #[subenum(Phew)] B(&'b [&'c [U; 7]]), } + +#[subenum(SubEnumWithErrorVariant)] +#[derive(Debug, Clone, Copy, PartialEq)] +enum EnumWithErrorVariant { + #[subenum(SubEnumWithErrorVariant)] + Error, +} + +#[test] +fn test_enum_with_error_variant() { + let a = EnumWithErrorVariant::Error; + let b = SubEnumWithErrorVariant::try_from(a).unwrap(); + + assert_eq!(a, b); +}