Diffstat (limited to 'src/build/builders/core/enum.rs')
| -rw-r--r-- | src/build/builders/core/enum.rs | 43 |
1 files changed, 4 insertions, 39 deletions
diff --git a/src/build/builders/core/enum.rs b/src/build/builders/core/enum.rs index aaa44ff..da66e9d 100644 --- a/src/build/builders/core/enum.rs +++ b/src/build/builders/core/enum.rs @@ -3,8 +3,8 @@ use core::fmt::{Debug, Display}; use effectful::bound::{Bool, IsSend, IsSync}; use effectful::effective::Effective; use effectful::environment::{DynBind, Environment, NativeForm}; -use effectful::forward_send_sync; use effectful::higher_ranked::Mut; +use effectful::SendSync; use crate::any::{OwnedStatic, TempBorrowedStatic, TempBorrowedStaticHrt}; use crate::protocol::visitor::{DynRecoverableScope, Recoverable, RecoverableProto}; @@ -20,6 +20,7 @@ use crate::{ Builder, BuilderTypes, DynWalkerObjSafe, Flow, }; +#[derive(SendSync)] pub struct EnumBuilder<'ctx, Info, Mode, E: Environment> where Info: EnumBuildInfo<'ctx, Mode, E>, @@ -27,20 +28,7 @@ where inner: Inner<'ctx, Info, Mode, E>, } -unsafe impl<'ctx, Info, Mode, E: Environment> IsSend<E::NeedSend> - for EnumBuilder<'ctx, Info, Mode, E> -where - Info: EnumBuildInfo<'ctx, Mode, E>, -{ -} - -unsafe impl<'ctx, Info, Mode, E: Environment> IsSync<E::NeedSync> - for EnumBuilder<'ctx, Info, Mode, E> -where - Info: EnumBuildInfo<'ctx, Mode, E>, -{ -} - +#[derive(SendSync)] enum Inner<'ctx, Info, Mode, E: Environment> where Info: EnumBuildInfo<'ctx, Mode, E>, @@ -51,16 +39,6 @@ where Value(Result<Info::T, Info::Error>), } -unsafe impl<'ctx, Info, Mode, E: Environment> IsSend<E::NeedSend> for Inner<'ctx, Info, Mode, E> where - Info: EnumBuildInfo<'ctx, Mode, E> -{ -} - -unsafe impl<'ctx, Info, Mode, E: Environment> IsSync<E::NeedSync> for Inner<'ctx, Info, Mode, E> where - Info: EnumBuildInfo<'ctx, Mode, E> -{ -} - pub trait EnumBuildInfo<'ctx, Mode, E: Environment> { type Builders: DynBind<E>; @@ -259,6 +237,7 @@ where } } +#[derive(SendSync)] struct VariantVisitor<'ctx, Info, Mode, E: Environment> where Info: EnumBuildInfo<'ctx, Mode, E>, @@ -266,20 +245,6 @@ where marker: Option<Info::VariantMarker>, } -unsafe impl<'ctx, Info, Mode, E: Environment> IsSend<E::NeedSend> - for VariantVisitor<'ctx, Info, Mode, E> -where - Info: EnumBuildInfo<'ctx, Mode, E>, -{ -} - -unsafe impl<'ctx, Info, Mode, E: Environment> IsSync<E::NeedSync> - for VariantVisitor<'ctx, Info, Mode, E> -where - Info: EnumBuildInfo<'ctx, Mode, E>, -{ -} - any_trait! { impl['ctx, Info, Mode][E] VariantVisitor<'ctx, Info, Mode, E> = [ ValueProto<TempBorrowedStaticHrt<str>, E>, |