Diffstat (limited to 'src/protocol/visitor/request_hint.rs')
| -rw-r--r-- | src/protocol/visitor/request_hint.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/protocol/visitor/request_hint.rs b/src/protocol/visitor/request_hint.rs index 8bd8431..f1ab735 100644 --- a/src/protocol/visitor/request_hint.rs +++ b/src/protocol/visitor/request_hint.rs @@ -7,20 +7,24 @@ use crate::{ }; /// Protocol for requesting a hint from a visitor. -pub trait RequestHint<'a, 'ctx: 'a, E: Effect<'ctx>> { +pub trait RequestHint<'ctx> { + type Effect: Effect<'ctx>; + /// Call this to request a hint. /// /// `walker` is what the visitor (`self`) will call to give a hint using the /// [`Hint`][crate::builtins::walker::Hint] protocol. - fn request_hint( + fn request_hint<'a>( &'a mut self, walker: Walker<'a, 'ctx>, - ) -> Future<'a, 'ctx, ControlFlow<(), ()>, E>; + ) -> Future<'a, 'ctx, ControlFlow<(), ()>, Self::Effect> + where + Self: 'a; } nameable! { pub struct Name['a, 'ctx, E]; - impl [E] for dyn RequestHint<'a, 'ctx, E> + 'a where { + impl [E] for dyn RequestHint<'ctx, Effect = E> + 'a where { E: Effect<'ctx>, 'ctx: 'a } |