Diffstat (limited to 'src/protocol/visitor/value.rs')
| -rw-r--r-- | src/protocol/visitor/value.rs | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/protocol/visitor/value.rs b/src/protocol/visitor/value.rs index 59bf907..5a6e7c2 100644 --- a/src/protocol/visitor/value.rs +++ b/src/protocol/visitor/value.rs @@ -5,7 +5,7 @@ use effectful::{ bound::{Bool, IsSend, IsSync}, effective::Effective, - environment::{DynBind, EnvConfig, Environment, NativeForm}, + environment::{DynBind, EnvConfig, Environment, NativeForm}, SendSync, }; use crate::{ @@ -41,6 +41,7 @@ pub trait Value<'ctx, T: ?Sized + TypeName::MemberType<E>, E: Environment>: DynB 'ctx: 'a; } +#[derive(SendSync)] pub struct ValueProto<T: ?Sized + TypeName::MemberType<E>, E: Environment>(Marker<(*const T, E)>); impl<'a, 'ctx, T: ?Sized, E> TypeName::MemberTypeForLt<'a, 'ctx, E, &'a &'ctx ()> @@ -61,7 +62,7 @@ where type Higher = ValueProto<T, E>; } -#[derive(Copy, Clone, PartialEq, Debug)] +#[derive(Copy, Clone, PartialEq, Debug, SendSync)] pub struct ValueKnown<'a, T: ?Sized> { /// A preview of the value. /// @@ -69,10 +70,7 @@ pub struct ValueKnown<'a, T: ?Sized> { pub preview: Option<&'a T>, } -unsafe impl<'a, T: ?Sized + IsSync<F>, F: Bool> IsSend<F> for ValueKnown<'a, T> {} -unsafe impl<'a, T: ?Sized + IsSync<F>, F: Bool> IsSync<F> for ValueKnown<'a, T> {} - -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, SendSync)] pub struct ValueKnownHrt<T: ?Sized>(Marker<T>); impl<'a, 'ctx, E: EnvConfig, T> Meta::MemberTypeForLt<'a, 'ctx, E, &'a &'ctx ()> |