Diffstat (limited to 'src/protocol/visitor/request_hint.rs')
| -rw-r--r-- | src/protocol/visitor/request_hint.rs | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/protocol/visitor/request_hint.rs b/src/protocol/visitor/request_hint.rs index 76de7a0..183014f 100644 --- a/src/protocol/visitor/request_hint.rs +++ b/src/protocol/visitor/request_hint.rs @@ -56,21 +56,19 @@ pub fn request_hint<'ctx: 'visitor + 'walker, 'visitor: 'e, 'walker: 'e, 'e, E: visitor: DynVisitor<'visitor, 'ctx, E>, walker: DynWalker<'walker, 'ctx, E>, ) -> NativeForm<'e, VisitResult<DynWalker<'walker, 'ctx, E>>, E> { - E::value(walker) - .update(visitor, |visitor, walker| { + E::value((visitor, walker)) + .update((), |_, (visitor, walker)| { if let Some(object) = visitor.0.upcast_mut::<RequestHintProto<E>>() { // Allow the visitor to give a hint if it wants. object .request_hint(walker.cast()) .map((), |_, x| x.unit_skipped()) - .cast::<()>(); - - todo!() + .cast() } else { // If the visitor doesn't support request hint then we continue. E::value(VisitResult::Skipped(())).cast() } }) - .map((), |_, (walker, result)| result.map_skipped(|_| walker)) + .map((), |_, ((_, walker), result)| result.map_skipped(|_| walker)) .cast() } |