Diffstat (limited to 'src/walk/walkers/core/key_value.rs')
-rw-r--r--src/walk/walkers/core/key_value.rs26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/walk/walkers/core/key_value.rs b/src/walk/walkers/core/key_value.rs
index 731bb79..3c0f700 100644
--- a/src/walk/walkers/core/key_value.rs
+++ b/src/walk/walkers/core/key_value.rs
@@ -1,7 +1,7 @@
use core::marker::PhantomData;
use crate::{
- effect::{Effect, Effective, ErasedEffective},
+ effect::{all_ctx, merge_ctx, Effect, Effective, ErasedEffective},
never::Never,
protocol::{
visitor::{visit_tag, TagConst, TagError, TagKind, VisitResult},
@@ -59,18 +59,22 @@ where
#[inline(always)]
fn walk<'b: 'c, 'c>(
self,
- mut visitor: DynVisitor<'b, 'ctx>,
+ visitor: DynVisitor<'b, 'ctx>,
) -> ErasedEffective<'c, Result<Self::Output, Self::Error>, E> {
E::ready(visitor)
- .as_ctx(move |visitor| {
- self.value_walker
- .walk(visitor.cast())
- .map(|result| match result {
- Ok(_) => Ok::<_, Self::Error>(()),
- Err(_err) => todo!(),
- })
- .into_erased()
- })
+ .as_ctx(
+ all_ctx,
+ move |visitor, _| {
+ self.value_walker
+ .walk(visitor.cast())
+ .map(|result| match result {
+ Ok(_) => Ok::<_, Self::Error>(()),
+ Err(_err) => todo!(),
+ })
+ .into_erased()
+ },
+ merge_ctx,
+ )
.map(|(_, value)| value)
.into_erased()