Diffstat (limited to 'src/walk.rs')
-rw-r--r--src/walk.rs13
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,
{