Diffstat (limited to 'src/build/builders/serde/deserialize.rs')
| -rw-r--r-- | src/build/builders/serde/deserialize.rs | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/build/builders/serde/deserialize.rs b/src/build/builders/serde/deserialize.rs index 8a9fa3e..1daa30f 100644 --- a/src/build/builders/serde/deserialize.rs +++ b/src/build/builders/serde/deserialize.rs @@ -7,10 +7,8 @@ use serde::{de::SeqAccess, forward_to_deserialize_any, Deserialize, Deserializer use crate::{ any::static_wrapper::OwnedStatic, any_trait, - protocol::{ - visitor::{Sequence, SequenceScope, Status, Value}, - AsObj, AsyncEffect, Yield, Effect, SyncEffect, - }, + effect::{AsObj, AsyncEffect, Effect, SyncEffect, Yield}, + protocol::visitor::{Sequence, SequenceScope, Status, Value}, AsVisitor, Builder as _, }; @@ -25,7 +23,8 @@ impl std::error::Error for Error {} pub struct Builder<T, E>(Result<T, Error>, PhantomData<fn() -> E>); -impl<'ctx, T: Deserialize<'ctx>, E: Effect<'ctx, ControlFlow<(), ()>>> crate::Builder<'ctx, E> for Builder<T, E> +impl<'ctx, T: Deserialize<'ctx>, E: Effect<'ctx, ControlFlow<(), ()>>> crate::Builder<'ctx, E> + for Builder<T, E> where Self: AsVisitor<'ctx, E>, { @@ -33,7 +32,10 @@ where type Value = T; - fn build<'a>(self) -> Result<Self::Value, Self::Error> where Self: 'a { + fn build<'a>(self) -> Result<Self::Value, Self::Error> + where + Self: 'a, + { self.0 } @@ -60,7 +62,7 @@ impl<'ctx, T: Deserialize<'ctx> + Send> AsVisitor<'ctx, AsyncEffect> for Builder any_trait! { impl['a, 'ctx, T: Deserialize<'ctx>, E] Builder<T, E> = [ - dyn Value<'ctx, OwnedStatic<bool>, SyncEffect> + 'a, + dyn Value<'a, 'ctx, OwnedStatic<bool>, SyncEffect> + 'a, dyn Sequence<'ctx, SyncEffect> + 'a, ] } @@ -70,12 +72,14 @@ enum InjectedValue<'a, 'ctx> { Sequence(&'a mut dyn SequenceScope<'ctx, SyncEffect>), } -impl<'ctx, T: Deserialize<'ctx>, E> Value<'ctx, OwnedStatic<bool>, SyncEffect> for Builder<T, E> { +impl<'a, 'ctx: 'a, T: Deserialize<'ctx>, E> Value<'a, 'ctx, OwnedStatic<bool>, SyncEffect> + for Builder<T, E> +{ #[inline] - fn visit<'a>(&'a mut self, OwnedStatic(value): OwnedStatic<bool>) -> Yield<'a, 'ctx, ControlFlow<(), ()>, SyncEffect> - where - 'ctx: 'a, - { + fn visit( + &'a mut self, + OwnedStatic(value): OwnedStatic<bool>, + ) -> Yield<'a, 'ctx, ControlFlow<(), ()>, SyncEffect> { self.0 = T::deserialize(InjectedValue::Bool(value)); if self.0.is_err() { @@ -88,7 +92,10 @@ impl<'ctx, T: Deserialize<'ctx>, E> Value<'ctx, OwnedStatic<bool>, SyncEffect> f impl<'ctx, T: Deserialize<'ctx>, E> Sequence<'ctx, SyncEffect> for Builder<T, E> { #[inline] - fn visit<'a>(&'a mut self, scope: &'a mut dyn SequenceScope<'ctx, SyncEffect>) -> Yield<'a, 'ctx, ControlFlow<(), ()>, SyncEffect> + fn visit<'a>( + &'a mut self, + scope: &'a mut dyn SequenceScope<'ctx, SyncEffect>, + ) -> Yield<'a, 'ctx, ControlFlow<(), ()>, SyncEffect> where 'ctx: 'a, { |