diff --git a/xso/src/asxml.rs b/xso/src/asxml.rs index 3d15bd91d4ac2edc0976025b0d6ea5e3687bd827..3b4e449e23b12b41478acad7ef907c011d7b5ba4 100644 --- a/xso/src/asxml.rs +++ b/xso/src/asxml.rs @@ -38,6 +38,8 @@ impl<'x, T: Iterator, Error>>> Iterator for OptionAsXml AsXml for Option { type ItemIter<'x> = OptionAsXml> where T: 'x; @@ -60,6 +62,7 @@ impl<'x, T: Iterator, Error>>> Iterator for BoxAsXml { } } +/// Emits the contents of `T` unchanged. impl AsXml for Box { type ItemIter<'x> = BoxAsXml> where T: 'x; diff --git a/xso/src/fromxml.rs b/xso/src/fromxml.rs index 3c07f6278dfba2a19a2dcd3b32a7a40817c76e33..56d86c8f7b6a17d63dc5fd9a83ade52f3f297509 100644 --- a/xso/src/fromxml.rs +++ b/xso/src/fromxml.rs @@ -26,6 +26,12 @@ impl FromEventsBuilder for OptionBuilder { } } +/// Parsers `T` into `Some(.)`. +/// +/// Note that this never generates `None`: The main use case is to allow +/// external (i.e. without calling `from_events`) defaulting to `None` and +/// for optional serialisation (the [`AsXml`][`crate::AsXml`] implementation +/// on `Option` emits nothing for `None`). impl FromXml for Option { type Builder = OptionBuilder; @@ -48,6 +54,7 @@ impl FromEventsBuilder for BoxBuilder { } } +/// Parsers `T` into a `Box`. impl FromXml for Box { type Builder = BoxBuilder;