From ee9ffb2d9c5ae7eff064bc211d6c646319533ea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Sch=C3=A4fer?= Date: Thu, 1 May 2025 10:26:59 +0200 Subject: [PATCH] xso: make FromEventsBuilder implementations around Box more versatile By removing the implicit `Sized` bound, they can be used with `dyn _`. The `Sized` bound is unnecessary for a boxed value, so it is a superfluous restriction. Also, the use with `dyn _` may turn out useful in the future when we want to allow type-erased XSOs. --- xso/src/fromxml.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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 },