Diffstat (limited to 'src/protocol.rs')
| -rw-r--r-- | src/protocol.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/protocol.rs b/src/protocol.rs index 60db903..238bbab 100644 --- a/src/protocol.rs +++ b/src/protocol.rs @@ -81,6 +81,21 @@ impl<'a, 'ctx> DerefMut for DynVisitor<'a, 'ctx> { } } +pub trait AsVisitor<'ctx> { + fn as_visitor<'a>(&'a mut self) -> DynVisitor<'a, 'ctx> + where + 'ctx: 'a; +} + +impl<'b, 'ctx> AsVisitor<'ctx> for DynVisitor<'b, 'ctx> { + fn as_visitor<'a>(&'a mut self) -> DynVisitor<'a, 'ctx> + where + 'ctx: 'a, + { + self.cast() + } +} + pub struct DynWalker<'a, 'ctx>(pub &'a mut (dyn AnyTrait<'ctx> + Send + Sync + 'a)); impl<'a, 'ctx> DynWalker<'a, 'ctx> { |