Diffstat (limited to 'src/walk.rs')
| -rw-r--r-- | src/walk.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/walk.rs b/src/walk.rs index a8051fb..441410f 100644 --- a/src/walk.rs +++ b/src/walk.rs @@ -1,7 +1,7 @@ pub mod walkers; use crate::{ - effect::{Effect, ObjSafe}, + effect::{Effect, Effective, ErasedEffective}, protocol::DynVisitor, Flow, }; @@ -40,18 +40,21 @@ pub trait Walker<'ctx, E: Effect>: WalkerTypes + Send + Sync { fn walk<'visitor: 'effect, 'effect>( self, visitor: DynVisitor<'visitor, 'ctx>, - ) -> ObjSafe<'effect, Result<Self::Output, Self::Error>, E> + ) -> ErasedEffective<'effect, Result<Self::Output, Self::Error>, E> where Self: 'effect; } pub trait WalkerObjSafe<'ctx, E: Effect>: Send { - fn walk<'a, 'b: 'a>(&'a mut self, visitor: DynVisitor<'b, 'ctx>) -> ObjSafe<'b, Flow, E> + fn walk<'a, 'b: 'a>( + &'a mut self, + visitor: DynVisitor<'b, 'ctx>, + ) -> ErasedEffective<'b, Flow, E> where Self: 'a; } -pub type DynWalkerObjSafe<'a, 'ctx, E> = &'a mut (dyn WalkerObjSafe<'ctx, E> + Send + 'a); +pub type DynWalkerObjSafe<'a, 'ctx, E> = &'a mut (dyn WalkerObjSafe<'ctx, E> + Send + Sync + 'a); enum DynWalkerState<W: WalkerTypes> { Walking, @@ -107,7 +110,7 @@ impl<W: WalkerTypes> DynWalkerAdapter<W> { impl<'ctx, W: Walker<'ctx, E>, E: Effect> WalkerObjSafe<'ctx, E> for DynWalkerAdapter<W> { #[inline(always)] - fn walk<'a, 'b: 'a>(&'a mut self, visitor: DynVisitor<'b, 'ctx>) -> ObjSafe<'b, Flow, E> + fn walk<'a, 'b: 'a>(&'a mut self, visitor: DynVisitor<'b, 'ctx>) -> ErasedEffective<'b, Flow, E> where Self: 'a, { |