Diffstat (limited to 'src/protocol.rs')
| -rw-r--r-- | src/protocol.rs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/protocol.rs b/src/protocol.rs index 0d4f597..47b45a5 100644 --- a/src/protocol.rs +++ b/src/protocol.rs @@ -62,8 +62,12 @@ use effectful::{bound::SsBound, DynBind, SendSync}; use crate::{any::AnyTrait, hkt::ImpliedBound}; pub trait AnyTraitDynBind<'lt, E: SsBound>: AnyTrait<'lt> + DynBind<E> { - fn as_any_trait<'u>(&self) -> &(dyn AnyTrait<'lt> + 'u) where Self: 'u; - fn as_any_trait_mut<'u>(&mut self) -> &mut (dyn AnyTrait<'lt> + 'u) where Self: 'u; + fn as_any_trait<'u>(&self) -> &(dyn AnyTrait<'lt> + 'u) + where + Self: 'u; + fn as_any_trait_mut<'u>(&mut self) -> &mut (dyn AnyTrait<'lt> + 'u) + where + Self: 'u; } impl<'lt, E, T> AnyTraitDynBind<'lt, E> for T @@ -71,11 +75,17 @@ where E: SsBound, T: AnyTrait<'lt> + DynBind<E>, { - fn as_any_trait<'u>(&self) -> &(dyn AnyTrait<'lt> + 'u) where Self: 'u { + fn as_any_trait<'u>(&self) -> &(dyn AnyTrait<'lt> + 'u) + where + Self: 'u, + { self } - fn as_any_trait_mut<'u>(&mut self) -> &mut (dyn AnyTrait<'lt> + 'u) where Self: 'u { + fn as_any_trait_mut<'u>(&mut self) -> &mut (dyn AnyTrait<'lt> + 'u) + where + Self: 'u, + { self } } @@ -130,7 +140,7 @@ impl<'r, 'src, E: SsBound> AsVisitor<'src, E> for DynVisitor<'r, 'src, E> { #[derive(SendSync)] pub struct DynWalker<'r, 'src, E: SsBound> { _b: ImpliedBound<'r, 'src>, - any: &'r mut dyn AnyTraitDynBind<'src, E> + any: &'r mut dyn AnyTraitDynBind<'src, E>, } impl<'r, 'src, E: SsBound> DynWalker<'r, 'src, E> { |