Diffstat (limited to 'src/walk.rs')
-rw-r--r--src/walk.rs63
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()
+ // }
}
}