Diffstat (limited to 'src/protocol.rs')
-rw-r--r--src/protocol.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/protocol.rs b/src/protocol.rs
index 5889605..6293e3d 100644
--- a/src/protocol.rs
+++ b/src/protocol.rs
@@ -57,12 +57,19 @@ pub mod walker;
use core::ops::{Deref, DerefMut};
-use effectful::{bound::{IsSend, IsSync}, environment::Environment};
+use effectful::{
+ bound::{IsSend, IsSync},
+ environment::Environment,
+};
use crate::any::AnyTrait;
pub struct DynVisitor<'a, 'ctx, Env: Environment>(pub &'a mut (dyn AnyTrait<'ctx, Env> + 'a));
+unsafe impl<'a, 'ctx, E: Environment> IsSend<E::NeedSend> for DynVisitor<'a, 'ctx, E> {}
+
+unsafe impl<'a, 'ctx, E: Environment> IsSync<E::NeedSync> for DynVisitor<'a, 'ctx, E> {}
+
impl<'a, 'ctx, Env: Environment> DynVisitor<'a, 'ctx, Env> {
pub fn cast<'b>(&'b mut self) -> DynVisitor<'b, 'ctx, Env> {
DynVisitor(&mut *self.0)