Diffstat (limited to 'src/build/builders/core.rs')
| -rw-r--r-- | src/build/builders/core.rs | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/build/builders/core.rs b/src/build/builders/core.rs index 3f8b2a5..caff6eb 100644 --- a/src/build/builders/core.rs +++ b/src/build/builders/core.rs @@ -1,4 +1,9 @@ -use effectful::{environment::{Environment, NativeForm}, is_send_sync}; +use effectful::{ + effective::Effective, + environment::{Environment, NativeForm}, + higher_ranked::Mut, + is_send_sync, +}; use crate::{ any_trait, @@ -36,11 +41,14 @@ impl NoopVisitor { pub fn walk_dyn<'ctx: 'e, 'walker: 'e, 'e, E: Environment>( walker: DynWalkerObjSafe<'walker, 'ctx, E>, ) -> NativeForm<'e, VisitResult, E> { - E::value(NoopVisitor::new()).as_ctx_map(|noop| { - walker - .walk(DynVisitor(noop)) - .map(|x| x.to_continue().into()) - .cast() - }) + E::value(NoopVisitor::new()) + .update(walker, |walker, noop| { + walker + .walk(DynVisitor(noop)) + .map((), |_, x| x.to_continue().into()) + .cast() + }) + .map((), |_, (_, x)| x) + .cast() } } |