Skip to main content

FromXml

Trait FromXml 

Source
pub trait FromXml<'xml>: Sized {
    type Accumulator: Accumulate<Self>;

    const KIND: Kind;

    // Required methods
    fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool;
    fn deserialize<'cx>(
        into: &mut Self::Accumulator,
        field: &'static str,
        deserializer: &mut Deserializer<'cx, 'xml>,
    ) -> Result<(), Error>;
}
Expand description

Deserialize a type from XML

Required Associated Constants§

Source

const KIND: Kind

The kind of XML node this type represents

Required Associated Types§

Source

type Accumulator: Accumulate<Self>

The accumulator type used during deserialization

Required Methods§

Source

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Check if an element or attribute matches this type

Source

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Deserialize from XML into an accumulator

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'xml> FromXml<'xml> for IpAddr

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<IpAddr>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for bool

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<bool>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for char

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<char>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for f32

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<f32>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for f64

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<f64>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for i8

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<i8>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for i16

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<i16>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for i32

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<i32>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for i64

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<i64>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for isize

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<isize>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for u8

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<u8>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for u16

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<u16>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for u32

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<u32>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for u64

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<u64>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for ()

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<()>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, _: &'static str, _: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for usize

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<usize>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml> FromXml<'xml> for String

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Option<String>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml, 'a> FromXml<'xml> for Cow<'a, str>

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = CowStrAccumulator<'xml, 'a>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'_, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml, T: FromXml<'xml>> FromXml<'xml> for Cow<'_, [T]>
where [T]: ToOwned<Owned = Vec<T>>,

Source§

const KIND: Kind = Kind::Scalar

Source§

type Accumulator = Vec<T>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'_, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml, T: FromXml<'xml>> FromXml<'xml> for Option<T>

Source§

const KIND: Kind = T::KIND

Source§

type Accumulator = OptionAccumulator<T, <T as FromXml<'xml>>::Accumulator>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml, T: FromXml<'xml>> FromXml<'xml> for Box<T>

Source§

const KIND: Kind = T::KIND

Source§

type Accumulator = Option<Box<T>>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Source§

impl<'xml, T: FromXml<'xml>> FromXml<'xml> for Vec<T>

Source§

const KIND: Kind = T::KIND

Source§

type Accumulator = Vec<T>

Source§

fn matches(id: Id<'_>, field: Option<Id<'_>>) -> bool

Source§

fn deserialize<'cx>( into: &mut Self::Accumulator, field: &'static str, deserializer: &mut Deserializer<'cx, 'xml>, ) -> Result<(), Error>

Implementors§

Source§

impl<'xml, 'a> FromXml<'xml> for AnyElement<'a>
where 'xml: 'a,

Source§

const KIND: Kind = Kind::Element

Source§

type Accumulator = Option<AnyElement<'a>>