From 0d8a10fae66f09b00f67c511d5606db0dee187c6 Mon Sep 17 00:00:00 2001 From: timofey Date: Sat, 29 Jul 2023 20:35:32 +0000 Subject: [PATCH] decouple `RegularAtomic` from `ImplMode` --- src/rstd/atomic/atomic_object.rs | 8 ++++++-- src/rstd/atomic/modes.rs | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/rstd/atomic/atomic_object.rs b/src/rstd/atomic/atomic_object.rs index 2007bab..1a6b839 100644 --- a/src/rstd/atomic/atomic_object.rs +++ b/src/rstd/atomic/atomic_object.rs @@ -94,7 +94,9 @@ impl ImplMode for AtomicFactory { type Mode = A::Mode; } -impl<'a, Ctx: Context<'a>, A: RegularAtomic> AoProxy<'a, Ctx> for WithMode { +impl<'a, Ctx: Context<'a>, A: RegularAtomic + ImplMode> AoProxy<'a, Ctx> + for WithMode +{ type Mtbl = AtomicObject; type Fctr = AtomicFactory; @@ -108,7 +110,9 @@ impl<'a, Ctx: Context<'a>, A: RegularAtomic> AoProxy<'a, Ctx> for WithMode, A: RegularAtomic> RegularFactory<'a, Ctx> for AtomicFactory { +impl<'a, Ctx: Context<'a>, A: RegularAtomic + ImplMode> RegularFactory<'a, Ctx> + for AtomicFactory +{ fn rdeserialize(&self, inctx: impl InCtx<'a, Ctx>) -> ParseResult<'a, Ctx, Self> { Ok(A::a_deserialize(inctx)?.into()) } diff --git a/src/rstd/atomic/modes.rs b/src/rstd/atomic/modes.rs index 7a051da..b38f5fa 100644 --- a/src/rstd/atomic/modes.rs +++ b/src/rstd/atomic/modes.rs @@ -63,7 +63,7 @@ where } } -pub trait RegularAtomic: AtomicBase + ImplMode { +pub trait RegularAtomic: AtomicBase + ParseMode { fn ra_deserialize(inlining: impl Inlining) -> AParseResult; fn ra_extend(self, tail: &[u8]) -> AParseResult; }