Diffstat (limited to 'src/build/builders/core/value.rs')
-rw-r--r--src/build/builders/core/value.rs39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/build/builders/core/value.rs b/src/build/builders/core/value.rs
index b969ac2..22fe995 100644
--- a/src/build/builders/core/value.rs
+++ b/src/build/builders/core/value.rs
@@ -106,14 +106,17 @@ any_trait! {
}
impl<'ctx, T: Ss + 'static, E: Effect> RequestHint<'ctx, E> for ValueBuilder<T, NotCloneable, E> {
- fn request_hint<'a>(
- &'a mut self,
- walker: DynWalker<'a, 'ctx>,
- ) -> ErasedEffective<'a, VisitResult<DynWalker<'a, 'ctx>>, E> {
+ fn request_hint<'this: 'e, 'walker: 'e, 'e>(
+ &'this mut self,
+ walker: DynWalker<'walker, 'ctx>,
+ ) -> ErasedEffective<'e, VisitResult, E>
+ where
+ 'ctx: 'this + 'walker,
+ {
E::as_ctx((self, walker), |(this, walker)| {
- hint_protocol::<ValueProto<OwnedStatic<T>, E>>(walker.cast(), *this, ()).cast()
+ hint_protocol::<ValueProto<OwnedStatic<T>, E>, _>(walker.cast(), *this, ()).cast()
})
- .map(|((_, walker), result)| result.map_skipped(|_| walker))
+ .remove_ctx()
}
}
@@ -121,28 +124,32 @@ impl<'ctx, T: Ss + 'static, E: Effect> RequestHint<'ctx, E> for ValueBuilder<T,
where
T: Clone,
{
- fn request_hint<'a>(
- &'a mut self,
- walker: DynWalker<'a, 'ctx>,
- ) -> ErasedEffective<'a, VisitResult<DynWalker<'a, 'ctx>>, E> {
+ fn request_hint<'this: 'e, 'walker: 'e, 'e>(
+ &'this mut self,
+ walker: DynWalker<'walker, 'ctx>,
+ ) -> ErasedEffective<'e, VisitResult, E>
+ where
+ 'ctx: 'this + 'walker,
+ {
E::as_ctx((self, walker), |(this, walker)| {
- hint_protocol::<ValueProto<OwnedStatic<T>, E>>(walker.cast(), *this, ()).cast()
+ hint_protocol::<ValueProto<OwnedStatic<T>, E>, _>(walker.cast(), *this, ()).cast()
})
.if_not_finished(|(this, walker)| {
- hint_protocol::<ValueProto<BorrowedStaticHrt<T>, E>>(walker.cast(), *this, ()).cast()
+ hint_protocol::<ValueProto<BorrowedStaticHrt<T>, E>, _>(walker.cast(), *this, ()).cast()
})
.if_not_finished(|(this, walker)| {
- hint_protocol::<ValueProto<TempBorrowedStaticHrt<T>, E>>(walker.cast(), *this, ())
+ hint_protocol::<ValueProto<TempBorrowedStaticHrt<T>, E>, _>(walker.cast(), *this, ())
.cast()
})
.if_not_finished(|(this, walker)| {
- hint_protocol::<ValueProto<BorrowedMutStaticHrt<T>, E>>(walker.cast(), *this, ()).cast()
+ hint_protocol::<ValueProto<BorrowedMutStaticHrt<T>, E>, _>(walker.cast(), *this, ())
+ .cast()
})
.if_not_finished(|(this, walker)| {
- hint_protocol::<ValueProto<TempBorrowedMutStaticHrt<T>, E>>(walker.cast(), *this, ())
+ hint_protocol::<ValueProto<TempBorrowedMutStaticHrt<T>, E>, _>(walker.cast(), *this, ())
.cast()
})
- .map(|((_, walker), result)| result.map_skipped(|_| walker))
+ .remove_ctx()
}
}