diff --git a/xso/src/fromxml.rs b/xso/src/fromxml.rs index 9ecc94b5e510449d76010e2d47ce39e2802a4fa0..3b3e1e7f7e5eadee2532913af5c61b33f3abc5dc 100644 --- a/xso/src/fromxml.rs +++ b/xso/src/fromxml.rs @@ -84,9 +84,9 @@ impl FromXml for Option { } /// Helper struct to construct an `Box` from XML events. -pub struct BoxBuilder(Box); +pub struct BoxBuilder(Box); -impl FromEventsBuilder for BoxBuilder { +impl FromEventsBuilder for BoxBuilder { type Output = Box; fn feed(&mut self, ev: rxml::Event, ctx: &Context<'_>) -> Result, Error> { @@ -94,8 +94,8 @@ impl FromEventsBuilder for BoxBuilder { } } -/// Parsers `T` into a `Box`. -impl FromXml for Box { +/// Parses `T` into a `Box`. +impl FromXml for Box { type Builder = BoxBuilder; fn from_events( @@ -107,6 +107,14 @@ impl FromXml for Box { } } +impl FromEventsBuilder for Box { + type Output = T::Output; + + fn feed(&mut self, ev: rxml::Event, ctx: &Context<'_>) -> Result, Error> { + (**self).feed(ev, ctx) + } +} + #[derive(Debug)] enum FallibleBuilderInner { Processing { depth: usize, builder: T },