Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 317acac..fd75d72 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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>,