Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 28 |
1 files changed, 16 insertions, 12 deletions
@@ -132,33 +132,37 @@ macro_rules! Walk { } } - impl<'ctx> $crate::WalkerTypes for &'ctx $name { - type Error = $crate::walkers::core::r#struct::StructWalkError<FieldError<'ctx>>; - type Output = (); - } + // impl<'ctx> $crate::WalkerTypes for &'ctx $name { + // type Error = $crate::walkers::core::r#struct::StructWalkError<FieldError<'ctx>>; + // type Output = (); + // } $vis enum Info {} - #[derive(Debug)] #[allow(non_camel_case_types, unused)] - enum FieldErrorKind<'ctx> {$( - $field($crate::walkers::core::key_value::KeyValueError<$crate::never::Never, <&'ctx $type as $crate::WalkerTypes>::Error>) + enum FieldErrorKind<'ctx, M, E: $crate::effect::Effect> {$( + $field($crate::walkers::core::key_value::KeyValueError<$crate::never::Never, <<&'ctx $type as $crate::Walk<'ctx, M, E>>::Walker as $crate::Walker<'ctx, E>>::Error>) ),*} - #[derive(Debug)] #[allow(unused)] - $vis struct FieldError<'ctx>(FieldErrorKind<'ctx>); + $vis struct FieldError<'ctx, M, E: $crate::effect::Effect>(FieldErrorKind<'ctx, M, E>); + + impl<'ctx, M, E: $crate::effect::Effect> ::core::fmt::Debug for FieldError<'ctx, M, E> { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + todo!() + } + } - impl<'ctx, M: 'ctx> $crate::walkers::core::r#struct::StructTypeInfo<'ctx, M> for Info { + impl<'ctx, M: 'ctx, E: $crate::effect::Effect> $crate::walkers::core::r#struct::StructTypeInfo<'ctx, M, E> for Info { const NAME: &'static str = stringify!($name); const FIELDS: &'static [&'static str] = &[$(stringify!($field)),*]; - type FieldError = FieldError<'ctx>; + type FieldError = FieldError<'ctx, M, E>; type T = $name; type S = $crate::any::StaticType; #[allow(unreachable_code, non_snake_case, non_upper_case_globals, non_camel_case_types)] - fn walk_field<'a, E: $crate::effect::Effect>( + fn walk_field<'a>( index: usize, value: &'ctx Self::T, visitor: $crate::protocol::DynVisitor<'a, 'ctx>, |