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