Diffstat (limited to 'src/build/builders/debug.rs')
| -rw-r--r-- | src/build/builders/debug.rs | 92 |
1 files changed, 50 insertions, 42 deletions
diff --git a/src/build/builders/debug.rs b/src/build/builders/debug.rs index 68d9de6..17749dc 100644 --- a/src/build/builders/debug.rs +++ b/src/build/builders/debug.rs @@ -1,17 +1,15 @@ use core::{any::TypeId, marker::PhantomData}; use crate::{ - any::static_wrapper::{DynOwnedStatic, OwnedStatic}, + any::OwnedStatic, any_trait, effect::{Effect, Future}, + protocol::Walker, protocol::{ self, visitor::{ - request_hint::{DynRequestHint, RequestHint}, - sequence::{DynSequence, Sequence}, - tag::{DynTag, Tag, TagDyn}, - value::{DynValue, Value}, - Status, + DynRequestHint, DynSequence, DynSequenceScope, DynTag, DynValue, RequestHint, Sequence, + Tag, TagDyn, Value, VisitResult, }, }, DynWalker, Flow, @@ -24,10 +22,10 @@ any_trait! { DynRequestHint<'ctx, E>, // DynRecoverable<'a, 'ctx, E>, DynTag<'ctx, TagDyn, E>, - DynValue<'ctx, DynOwnedStatic<&'static str>, E>, - DynValue<'ctx, DynOwnedStatic<TypeId>, E>, - DynValue<'ctx, DynOwnedStatic<usize>, E>, - DynValue<'ctx, DynOwnedStatic<bool>, E>, + DynValue<'ctx, OwnedStatic<&'static str>, E>, + DynValue<'ctx, OwnedStatic<TypeId>, E>, + DynValue<'ctx, OwnedStatic<usize>, E>, + DynValue<'ctx, OwnedStatic<bool>, E>, // DynValue<'a, 'ctx, OwnedStatic<&'static [&'static str]>, E>, DynSequence<'ctx, E>, ] else { @@ -61,12 +59,12 @@ impl<E: Effect> Visitor<E> { impl<'ctx, E: Effect> RequestHint<'ctx, E> for Visitor<E> { fn request_hint<'a>( &'a mut self, - _walker: crate::protocol::Walker<'a, 'ctx>, - ) -> Future<'a, Flow, E> { + _walker: Walker<'a, 'ctx>, + ) -> Future<'a, VisitResult<Walker<'a, 'ctx>>, E> { // self.tab(); // println!("Visit request hint (no hint given)"); // println!("Visit request hint (hint for recoverable)"); - E::ready(Flow::Continue) + E::ready(Flow::Continue.into()) } } @@ -75,7 +73,7 @@ impl<'ctx, E: Effect> Tag<'ctx, TagDyn, E> for Visitor<E> { &'a mut self, kind: TagDyn, walker: DynWalker<'a, 'ctx, E>, - ) -> Future<'a, Status, E> { + ) -> Future<'a, VisitResult<DynWalker<'a, 'ctx, E>>, E> { E::wrap(async move { match kind.0 { crate::TAG_TYPE_NAME => { @@ -86,7 +84,7 @@ impl<'ctx, E: Effect> Tag<'ctx, TagDyn, E> for Visitor<E> { let _ = walker.walk(self).await; self.0 -= 1; - Status::r#continue() + Flow::Continue.into() } crate::TAG_KEY => { self.tab(); @@ -96,7 +94,7 @@ impl<'ctx, E: Effect> Tag<'ctx, TagDyn, E> for Visitor<E> { let _ = walker.walk(self).await; self.0 -= 1; - Status::r#continue() + Flow::Continue.into() } crate::TAG_VALUE => { self.tab(); @@ -106,79 +104,89 @@ impl<'ctx, E: Effect> Tag<'ctx, TagDyn, E> for Visitor<E> { let _ = walker.walk(self).await; self.0 -= 1; - Status::r#continue() + Flow::Continue.into() } - _ => Status::skipped(), + _ => VisitResult::Skipped(walker), } }) } } -impl<'ctx, E: Effect> Value<'ctx, DynOwnedStatic<&'static str>, E> for Visitor<E> { +impl<'ctx, E: Effect> Value<'ctx, OwnedStatic<&'static str>, E> for Visitor<E> { fn visit<'a>( &'a mut self, OwnedStatic(value): OwnedStatic<&'static str>, - ) -> Future<'a, Flow, E> + ) -> Future<'a, VisitResult<OwnedStatic<&'static str>>, E> where - 'ctx: 'a + 'ctx: 'a, { self.tab(); println!("{:?}", value); - E::ready(Flow::Continue) + E::ready(Flow::Continue.into()) } } -impl<'ctx, E: Effect> Value<'ctx, DynOwnedStatic<usize>, E> for Visitor<E> { +impl<'ctx, E: Effect> Value<'ctx, OwnedStatic<usize>, E> for Visitor<E> { fn visit<'a>( &'a mut self, OwnedStatic(value): OwnedStatic<usize>, - ) -> Future<'a, Flow, E> + ) -> Future<'a, VisitResult<OwnedStatic<usize>>, E> where - 'ctx: 'a { + 'ctx: 'a, + { self.tab(); println!("{}", value); - E::ready(Flow::Continue) + E::ready(Flow::Continue.into()) } } -impl<'ctx, E: Effect> Value<'ctx, DynOwnedStatic<bool>, E> for Visitor<E> { - fn visit<'a>(&'a mut self, OwnedStatic(value): OwnedStatic<bool>) -> Future<'a, Flow, E> - where 'ctx: 'a{ +impl<'ctx, E: Effect> Value<'ctx, OwnedStatic<bool>, E> for Visitor<E> { + fn visit<'a>( + &'a mut self, + OwnedStatic(value): OwnedStatic<bool>, + ) -> Future<'a, VisitResult<OwnedStatic<bool>>, E> + where + 'ctx: 'a, + { self.tab(); println!("{}", value); - E::ready(Flow::Continue) + E::ready(Flow::Continue.into()) } } -impl<'ctx, E: Effect> Value<'ctx, DynOwnedStatic<&'static [&'static str]>, E> for Visitor<E> { +impl<'ctx, E: Effect> Value<'ctx, OwnedStatic<&'static [&'static str]>, E> for Visitor<E> { fn visit<'a>( &'a mut self, OwnedStatic(value): OwnedStatic<&'static [&'static str]>, - ) -> Future<'a, Flow, E> - where 'ctx: 'a{ + ) -> Future<'a, VisitResult<OwnedStatic<&'static [&'static str]>>, E> + where + 'ctx: 'a, + { self.tab(); println!("{:?}", value); - E::ready(Flow::Continue) + E::ready(Flow::Continue.into()) } } -impl<'ctx, E: Effect> Value<'ctx, DynOwnedStatic<TypeId>, E> for Visitor<E> { +impl<'ctx, E: Effect> Value<'ctx, OwnedStatic<TypeId>, E> for Visitor<E> { fn visit<'a>( &'a mut self, OwnedStatic(value): OwnedStatic<TypeId>, - ) -> Future<'a, Flow, E> - where 'ctx: 'a{ + ) -> Future<'a, VisitResult<OwnedStatic<TypeId>>, E> + where + 'ctx: 'a, + { self.tab(); println!("Visit type ID: {:?}", value); - E::ready(Flow::Continue) + E::ready(Flow::Continue.into()) } } impl<'ctx, E: Effect> Sequence<'ctx, E> for Visitor<E> { fn visit<'a>( &'a mut self, - scope: protocol::visitor::sequence::DynSequenceScope<'a, 'ctx, E>, - ) -> Future<'a, Flow, E> { + scope: protocol::visitor::DynSequenceScope<'a, 'ctx, E>, + ) -> Future<'a, VisitResult<DynSequenceScope<'a, 'ctx, E>>, E> { E::wrap(async { self.tab(); println!("sequence{:?}", scope.size_hint().await); @@ -198,13 +206,13 @@ impl<'ctx, E: Effect> Sequence<'ctx, E> for Visitor<E> { break Flow::Continue; } Flow::Continue => {} - Flow::Break => break Flow::Break, + Flow::Err => break Flow::Err, } index += 1; self.0 -= 1; }; self.0 -= 2; - flow + flow.into() }) } } |