Diffstat (limited to 'src/build/builders/core.rs')
-rw-r--r--src/build/builders/core.rs22
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()
}
}