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