Diffstat (limited to 'src/walk/walkers/core/array.rs')
| -rw-r--r-- | src/walk/walkers/core/array.rs | 19 |
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) } |