Diffstat (limited to 'src/protocol/visitor/sequence.rs')
| -rw-r--r-- | src/protocol/visitor/sequence.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/protocol/visitor/sequence.rs b/src/protocol/visitor/sequence.rs index 4138be1..f261eca 100644 --- a/src/protocol/visitor/sequence.rs +++ b/src/protocol/visitor/sequence.rs @@ -3,7 +3,7 @@ use crate::{ effect::{Effect, ErasedEffective, ReadyExt as _}, hkt::Marker, protocol::{ - walker::hint::{HintMeta, Meta}, + walker::hint::{HasProtocol, HintMeta, Meta}, DynVisitor, }, Flow, @@ -19,7 +19,7 @@ pub trait Sequence<'ctx, E: Effect> { fn visit<'a: 'c, 'b: 'c, 'c>( &'a mut self, scope: DynSequenceScope<'b, 'ctx, E>, - ) -> ErasedEffective<'c, VisitResult<DynSequenceScope<'b, 'ctx, E>>, E> + ) -> ErasedEffective<'c, VisitResult, E> where 'ctx: 'a; } @@ -91,12 +91,14 @@ impl<E: Effect> HintMeta for SequenceProto<E> { pub fn visit_sequence<'a, 'ctx, E: Effect>( visitor: DynVisitor<'a, 'ctx>, scope: DynSequenceScope<'a, 'ctx, E>, -) -> ErasedEffective<'a, VisitResult<DynSequenceScope<'a, 'ctx, E>>, E> { +) -> ErasedEffective<'a, VisitResult, E> { if let Some(object) = visitor.0.upcast_mut::<SequenceProto<E>>() { // Allow the visitor to walk the sequence scope. object.visit(scope) } else { // If the visitor doesn't support sequence then we continue. - VisitResult::Skipped(scope).ready() + VisitResult::Skipped(()).ready() } } + +impl<'ctx, T, E: Effect> HasProtocol<SequenceProto<E>> for T where T: Sequence<'ctx, E> {} |