Diffstat (limited to 'src/protocol.rs')
-rw-r--r--src/protocol.rs15
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> {