Diffstat (limited to 'src/walk.rs')
| -rw-r--r-- | src/walk.rs | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/src/walk.rs b/src/walk.rs index b2564da..1c56ad5 100644 --- a/src/walk.rs +++ b/src/walk.rs @@ -48,7 +48,7 @@ pub trait Walker<'ctx, E: Environment>: DynBind<E> { } pub trait WalkerObjSafe<'lt, 'ctx: 'lt, E: Environment>: DynBind<E> + 'lt { - fn walk<'a: 'c, 'b: 'c, 'd: 'b, 'c>( + fn walk<'a, 'b: 'c, 'd: 'b, 'c>( &'a mut self, visitor: DynVisitor<'b, 'd, 'ctx, E>, ) -> Canonical<'c, Flow, E> @@ -119,41 +119,42 @@ where Self: DynBind<E>, { #[inline(always)] - fn walk<'a: 'c, 'b: 'c, 'd: 'b, 'c>( + fn walk<'a, 'b: 'c, 'd: 'b, 'c>( &'a mut self, visitor: DynVisitor<'b, 'd, 'ctx, E>, ) -> Canonical<'c, Flow, E> where Self: 'a, { - if let DynWalkerState::Pending(walker) = - core::mem::replace(&mut self.state, DynWalkerState::Walking) - { - E::value((self, visitor)) - .update_map(walker, |walker, (this, visitor)| { - // Walk the walker. - walker - .walk(visitor.cast()) - .map(this, |this, value| match value { - Ok(value) => { - this.state = DynWalkerState::Done(value); - Flow::Done - } - Err(err) => { - this.state = DynWalkerState::Err(err); - - // Signal that control flow should stop as soon as possible as we - // are in an error state. - Flow::Err - } - }) - .cast() - }) - .map((), |_, (_, value)| value) - .cast() - } else { - // Can't do anything if the walker has already been walked. - E::value(Flow::Done).cast() - } + todo!() + // if let DynWalkerState::Pending(walker) = + // core::mem::replace(&mut self.state, DynWalkerState::Walking) + // { + // E::value((self, visitor)) + // .update_map(walker, |walker, (this, visitor)| { + // // Walk the walker. + // walker + // .walk(visitor.cast()) + // .map(this, |this, value| match value { + // Ok(value) => { + // this.state = DynWalkerState::Done(value); + // Flow::Done + // } + // Err(err) => { + // this.state = DynWalkerState::Err(err); + // + // // Signal that control flow should stop as soon as possible as we + // // are in an error state. + // Flow::Err + // } + // }) + // .cast() + // }) + // .map((), |_, (_, value)| value) + // .cast() + // } else { + // // Can't do anything if the walker has already been walked. + // E::value(Flow::Done).cast() + // } } } |