Diffstat (limited to 'src/walk/walkers/core/array.rs')
-rw-r--r--src/walk/walkers/core/array.rs19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/walk/walkers/core/array.rs b/src/walk/walkers/core/array.rs
index 33322db..4154e50 100644
--- a/src/walk/walkers/core/array.rs
+++ b/src/walk/walkers/core/array.rs
@@ -6,7 +6,7 @@ use crate::{
protocol::{
visitor::{RequestHint, Sequence, SequenceScope, Status},
walker::{Hint, HintMeta},
- ControlFlowFor, SyncEffect, Visitor,
+ Yield, SyncEffect, Visitor,
},
};
@@ -54,7 +54,7 @@ impl<'ctx, T, const N: usize, W: crate::Walker<'ctx, Effect = SyncEffect> + From
fn walk<'a>(
mut self,
visitor: Visitor<'a, 'ctx, Self::Effect>,
- ) -> ControlFlowFor<'a, 'ctx, Self::Effect, Self::Output, Self::Error>
+ ) -> Yield<'a, 'ctx, Result<Self::Output, Self::Error>, Self::Effect>
where
Self: 'a,
{
@@ -63,21 +63,24 @@ impl<'ctx, T, const N: usize, W: crate::Walker<'ctx, Effect = SyncEffect> + From
}
if let Some((index, error)) = self.item_err {
- ControlFlow::Break(WalkerError { index, error })
+ Err(WalkerError { index, error })
} else {
- ControlFlow::Continue(())
+ Ok(())
}
}
}
impl<'ctx, T, const N: usize, W: crate::Walker<'ctx, Effect = SyncEffect> + From<T>>
- SequenceScope<'ctx> for Walker<'ctx, T, N, W>
+ SequenceScope<'ctx, SyncEffect> for Walker<'ctx, T, N, W>
{
#[inline]
fn next<'a>(
&'a mut self,
visitor: Visitor<'a, 'ctx, SyncEffect>,
- ) -> ControlFlowFor<'a, 'ctx, W::Effect, Status> where 'ctx: 'a {
+ ) -> Yield<'a, 'ctx, ControlFlow<(), Status>, W::Effect>
+ where
+ 'ctx: 'a,
+ {
if self.index >= N {
return ControlFlow::Continue(Status::Done);
}
@@ -93,8 +96,8 @@ impl<'ctx, T, const N: usize, W: crate::Walker<'ctx, Effect = SyncEffect> + From
let walker = W::from(value);
match walker.walk(visitor) {
- ControlFlow::Continue(_) => ControlFlow::Continue(Status::Continue),
- ControlFlow::Break(err) => {
+ Ok(_) => ControlFlow::Continue(Status::Continue),
+ Err(err) => {
self.item_err = Some((self.index, err));
ControlFlow::Continue(Status::Done)
}