Diffstat (limited to 'src/walk/walkers/core/array.rs')
-rw-r--r--src/walk/walkers/core/array.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/walk/walkers/core/array.rs b/src/walk/walkers/core/array.rs
index 571787c..ba85d54 100644
--- a/src/walk/walkers/core/array.rs
+++ b/src/walk/walkers/core/array.rs
@@ -53,8 +53,11 @@ impl<'ctx, T, const N: usize, W: crate::Walker<'ctx, Effect = SyncEffect> + From
#[inline]
fn walk<'a>(
mut self,
- visitor: &'a mut Visitor<'a, 'ctx>,
- ) -> ControlFlowFor<'a, Self::Effect, Self::Output, Self::Error> {
+ visitor: Visitor<'a, 'ctx, Self::Effect>,
+ ) -> ControlFlowFor<'a, 'ctx, Self::Effect, Self::Output, Self::Error>
+ where
+ Self: 'a,
+ {
if let Some(object) = visitor.upcast_mut::<dyn Sequence<'ctx, W::Effect> + '_>() {
object.visit(&mut self);
}
@@ -67,14 +70,14 @@ impl<'ctx, T, const N: usize, W: crate::Walker<'ctx, Effect = SyncEffect> + From
}
}
-impl<'ctx, T, const N: usize, W: crate::Walker<'ctx, Effect = SyncEffect> + From<T>>
- SequenceScope<'ctx> for Walker<'ctx, T, N, W>
+impl<'a, 'ctx: 'a, T, const N: usize, W: crate::Walker<'ctx, Effect = SyncEffect> + From<T>>
+ SequenceScope<'a, 'ctx> for Walker<'ctx, T, N, W>
{
#[inline]
- fn next<'a>(
+ fn next(
&'a mut self,
- visitor: &'a mut Visitor<'a, 'ctx>,
- ) -> ControlFlowFor<'a, W::Effect, Status> {
+ visitor: Visitor<'a, 'ctx, SyncEffect>,
+ ) -> ControlFlowFor<'a, 'ctx, W::Effect, Status> {
if self.index >= N {
return ControlFlow::Continue(Status::Done);
}