Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lib.rs b/src/lib.rs
index aa77edd..8d86fb2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -88,12 +88,12 @@ macro_rules! Walk {
{
$(#[$($attr:tt)*])*
$vis:vis struct $name:ident {$(
- $field:ident: $type:ty
+ $fvis:vis $field:ident: $type:ty
),* $(,)?}
} => {
const _: () = {
impl<'ctx, M: 'ctx, E: $crate::effect::Effect> $crate::Walk<'ctx, M, E> for &'ctx $name {
- type Walker = $crate::walkers::core::r#struct::StructWalker<'ctx, $name, Info, M, E>;
+ type Walker = $crate::walkers::core::r#struct::StructWalker<'ctx, Info, $crate::walkers::core::r#struct::StaticType, M, E>;
fn into_walker(self) -> Self::Walker {
$crate::walkers::core::r#struct::StructWalker::new(self)
@@ -123,12 +123,13 @@ macro_rules! Walk {
type FieldError = FieldError<'ctx>;
type T = $name;
+ type S = $crate::walkers::core::r#struct::StaticType;
#[allow(unreachable_code, non_snake_case, non_upper_case_globals, non_camel_case_types)]
fn walk_field<'a, E: $crate::effect::Effect>(
index: usize,
value: &'ctx Self::T,
- visitor: $crate::protocol::Visitor<'a, 'ctx>,
+ visitor: $crate::protocol::DynVisitor<'a, 'ctx>,
) -> $crate::effect::Future<'a, Result<$crate::Flow, Self::FieldError>, E> {
mod fields {
enum Fields {$($field),*}
@@ -146,7 +147,7 @@ macro_rules! Walk {
E::map($crate::Walker::<'ctx, E>::walk(walker, visitor), |result| match result {
Ok(_) => {
- Ok(Flow::Continue)
+ Ok($crate::Flow::Continue)
}
Err(err) => {
Err(FieldError(FieldErrorKind::$field(err)))