quick_xml::de

Struct SimpleTypeDeserializer

Source
pub struct SimpleTypeDeserializer<'de, 'a> { /* private fields */ }
Available on crate feature serialize only.
Expand description

A deserializer for an xml probably escaped and encoded value of XSD simple types. This deserializer will borrow from the input as much as possible.

deserialize_any() returns the whole string that deserializer contains.

Escaping the value is actually not always necessary, for instance when converting to a float, we don’t expect any escapable character anyway. In that cases deserializer skips unescaping step.

Used for deserialize values from:

  • attribute values (<... ...="value" ...>)
  • mixed text / CDATA content (<...>text<![CDATA[cdata]]></...>)

This deserializer processes items as following:

  • numbers are parsed from a text content using FromStr; in case of error Visitor::visit_borrowed_str, Visitor::visit_str, or Visitor::visit_string is called; it is responsibility of the type to return an error if it does not able to process passed data;
  • booleans converted from the text according to the XML specification:
  • strings returned as is;
  • characters also returned as strings. If string contain more than one character or empty, it is responsibility of a type to return an error;
  • Option always deserialized as Some using the same deserializer. If attribute or text content is missed, then the deserializer even wouldn’t be used, so if it is used, then the value should be;
  • units (()) and unit structs always deserialized successfully, the content is ignored;
  • newtype structs forwards deserialization to the inner type using the same deserializer;
  • sequences, tuples and tuple structs are deserialized as xs:lists. Only sequences of primitive types is possible to deserialize this way and they should be delimited by a space ( , \t, \r, or \n);
  • structs and maps delegates to Self::deserialize_str which calls Visitor::visit_borrowed_str or Visitor::visit_string; it is responsibility of the type to return an error if it does not able to process passed data;
  • enums:
    • the variant name is deserialized using the same deserializer;
    • the content is deserialized using the deserializer that always returns unit (()):
  • identifiers are deserialized as strings.

Implementations§

Source§

impl<'de, 'a> SimpleTypeDeserializer<'de, 'a>

Source

pub fn from_text(text: Cow<'de, str>) -> Self

Creates a deserializer from a value, that possible borrowed from input.

It is assumed that text does not have entities.

Source

pub fn from_text_content(value: Text<'de>) -> Self

Creates a deserializer from an XML text node, that possible borrowed from input.

It is assumed that text does not have entities.

This constructor used internally to deserialize from text nodes.

Trait Implementations§

Source§

impl<'de, 'a> Deserializer<'de> for SimpleTypeDeserializer<'de, 'a>

Source§

fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Forwards deserialization to the Self::deserialize_str

Source§

fn deserialize_char<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Forwards deserialization to the Self::deserialize_str

Source§

fn deserialize_string<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Forwards deserialization to the Self::deserialize_str

Source§

fn deserialize_bytes<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Forwards deserialization to the Self::deserialize_str

Source§

fn deserialize_byte_buf<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Forwards deserialization to the Self::deserialize_str

Source§

fn deserialize_unit_struct<V>( self, _name: &'static str, visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Forwards deserialization to the Self::deserialize_unit

Source§

fn deserialize_tuple<V>( self, _len: usize, visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Representation of tuples the same as sequences.

Source§

fn deserialize_tuple_struct<V>( self, _name: &'static str, len: usize, visitor: V, ) -> Result<V::Value, DeError>
where V: Visitor<'de>,

Representation of named tuples the same as unnamed tuples.

Source§

fn deserialize_identifier<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Forwards deserialization to the Self::deserialize_str

Source§

type Error = DeError

The error type that can be returned if some error occurs during deserialization.
Source§

fn deserialize_bool<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a bool value.
Source§

fn deserialize_i8<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting an i8 value.
Source§

fn deserialize_i16<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting an i16 value.
Source§

fn deserialize_i32<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting an i32 value.
Source§

fn deserialize_i64<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting an i64 value.
Source§

fn deserialize_u8<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a u8 value.
Source§

fn deserialize_u16<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a u16 value.
Source§

fn deserialize_u32<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a u32 value.
Source§

fn deserialize_u64<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a u64 value.
Source§

fn deserialize_i128<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting an i128 value. Read more
Source§

fn deserialize_u128<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting an u128 value. Read more
Source§

fn deserialize_f32<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a f32 value.
Source§

fn deserialize_f64<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a f64 value.
Source§

fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a string value and does not benefit from taking ownership of buffered data owned by the Deserializer. Read more
Source§

fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting an optional value. Read more
Source§

fn deserialize_unit<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a unit value.
Source§

fn deserialize_newtype_struct<V>( self, _name: &'static str, visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a newtype struct with a particular name.
Source§

fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting a sequence of values.
Source§

fn deserialize_map<V: Visitor<'de>>( self, visitor: V, ) -> Result<V::Value, Self::Error>

Hint that the Deserialize type is expecting a map of key-value pairs.
Source§

fn deserialize_struct<V: Visitor<'de>>( self, _: &'static str, _: &'static [&'static str], visitor: V, ) -> Result<V::Value, Self::Error>

Hint that the Deserialize type is expecting a struct with a particular name and fields.
Source§

fn deserialize_enum<V>( self, _name: &'static str, _variants: &'static [&'static str], visitor: V, ) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type is expecting an enum value with a particular name and possible variants.
Source§

fn deserialize_ignored_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where V: Visitor<'de>,

Hint that the Deserialize type needs to deserialize a value whose type doesn’t matter because it is ignored. Read more
Source§

fn is_human_readable(&self) -> bool

Determine whether Deserialize implementations should expect to deserialize their human-readable form. Read more
Source§

impl<'de, 'a> EnumAccess<'de> for SimpleTypeDeserializer<'de, 'a>

Source§

type Error = DeError

The error type that can be returned if some error occurs during deserialization.
Source§

type Variant = UnitOnly

The Visitor that will be used to deserialize the content of the enum variant.
Source§

fn variant_seed<V>(self, seed: V) -> Result<(V::Value, Self::Variant), DeError>
where V: DeserializeSeed<'de>,

variant is called to identify which variant to deserialize. Read more
Source§

fn variant<V>(self) -> Result<(V, Self::Variant), Self::Error>
where V: Deserialize<'de>,

variant is called to identify which variant to deserialize. Read more
Source§

impl<'de, 'a> IntoDeserializer<'de, DeError> for SimpleTypeDeserializer<'de, 'a>

Source§

type Deserializer = SimpleTypeDeserializer<'de, 'a>

The type of the deserializer being converted into.
Source§

fn into_deserializer(self) -> Self

Convert this value into a deserializer.

Auto Trait Implementations§

§

impl<'de, 'a> Freeze for SimpleTypeDeserializer<'de, 'a>

§

impl<'de, 'a> RefUnwindSafe for SimpleTypeDeserializer<'de, 'a>

§

impl<'de, 'a> Send for SimpleTypeDeserializer<'de, 'a>

§

impl<'de, 'a> Sync for SimpleTypeDeserializer<'de, 'a>

§

impl<'de, 'a> Unpin for SimpleTypeDeserializer<'de, 'a>

§

impl<'de, 'a> UnwindSafe for SimpleTypeDeserializer<'de, 'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.