Struct serde_keyvalue::KeyValueDeserializer
source · pub struct KeyValueDeserializer<'de> {
original_input: &'de str,
input: &'de str,
next_identifier: Option<&'de str>,
has_equal: bool,
top_struct_parsed: bool,
}Expand description
Serde deserializer for key-values strings.
Fields§
§original_input: &'de strFull input originally received for parsing.
input: &'de strInput currently remaining to parse.
next_identifier: Option<&'de str>If set, then deserialize_identifier will take and return its content the next time it is
called instead of trying to parse an identifier from the input. This is needed to allow the
name of the first field of a struct to be omitted, e.g.
–block “/path/to/disk.img,ro=true”
instead of
–block “path=/path/to/disk.img,ro=true”
has_equal: boolWhether the ‘=’ sign has been parsed after a key. The absence of ‘=’ is only valid for
boolean fields, in which case the field’s value will be true.
top_struct_parsed: boolWhether the top structure has been parsed yet or not. The top structure is the only one that does not require to be enclosed within braces.
Implementations§
source§impl<'de> KeyValueDeserializer<'de>
impl<'de> KeyValueDeserializer<'de>
sourcepub fn error_here(&self, kind: ErrorKind) -> ParseError
pub fn error_here(&self, kind: ErrorKind) -> ParseError
Return an kind error for the current position of the input.
sourcepub fn peek_char(&self) -> Option<char>
pub fn peek_char(&self) -> Option<char>
Returns the next char in the input string without consuming it, or None if we reached the end of input.
sourcepub fn next_char(&mut self) -> Option<char>
pub fn next_char(&mut self) -> Option<char>
Returns the next char in the input string and consume it, or returns None if we reached the end of input.
sourcefn confirm_separator(&mut self) -> Result<(), ParseError>
fn confirm_separator(&mut self) -> Result<(), ParseError>
Confirm that we have a separator (i.e. ‘,’ or ‘]’) character or have reached the end of the input string.
sourcepub fn parse_identifier(&mut self) -> Result<&'de str, ParseError>
pub fn parse_identifier(&mut self) -> Result<&'de str, ParseError>
Attempts to parse an identifier, either for a key or for the value of an enum type.
sourcepub fn parse_string(&mut self) -> Result<Cow<'de, str>, ParseError>
pub fn parse_string(&mut self) -> Result<Cow<'de, str>, ParseError>
Attempts to parse a string.
sourcepub fn parse_bool(&mut self) -> Result<bool, ParseError>
pub fn parse_bool(&mut self) -> Result<bool, ParseError>
Attempt to parse a boolean.
sourcepub fn parse_number<T>(&mut self) -> Result<T, ParseError>where
T: Num<FromStrRadixErr = ParseIntError>,
pub fn parse_number<T>(&mut self) -> Result<T, ParseError>where
T: Num<FromStrRadixErr = ParseIntError>,
Attempt to parse a positive or negative number.
sourcepub fn finish(self) -> Result<(), ParseError>
pub fn finish(self) -> Result<(), ParseError>
Consume this deserializer and return a TrailingCharacters error if some input was
remaining.
This is useful to confirm that the whole input has been consumed without any extra elements.
Trait Implementations§
source§impl<'de> Deserializer<'de> for &mut KeyValueDeserializer<'de>
impl<'de> Deserializer<'de> for &mut KeyValueDeserializer<'de>
§type Error = ParseError
type Error = ParseError
source§fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserializer to figure out how to drive the visitor based
on what data type is in the input. Read moresource§fn deserialize_bool<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_bool<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a bool value.source§fn deserialize_i8<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_i8<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting an i8 value.source§fn deserialize_i16<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_i16<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting an i16 value.source§fn deserialize_i32<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_i32<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting an i32 value.source§fn deserialize_i64<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_i64<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting an i64 value.source§fn deserialize_u8<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_u8<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a u8 value.source§fn deserialize_u16<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_u16<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a u16 value.source§fn deserialize_u32<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_u32<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a u32 value.source§fn deserialize_u64<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_u64<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a u64 value.source§fn deserialize_f32<V>(self, _visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_f32<V>(self, _visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a f32 value.source§fn deserialize_f64<V>(self, _visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_f64<V>(self, _visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a f64 value.source§fn deserialize_char<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_char<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a char value.source§fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a string value and does
not benefit from taking ownership of buffered data owned by the
Deserializer. Read moresource§fn deserialize_string<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_string<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a string value and would
benefit from taking ownership of buffered data owned by the
Deserializer. Read moresource§fn deserialize_bytes<V>(self, _visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_bytes<V>(self, _visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a byte array and does not
benefit from taking ownership of buffered data owned by the
Deserializer. Read moresource§fn deserialize_byte_buf<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_byte_buf<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a byte array and would
benefit from taking ownership of buffered data owned by the
Deserializer. Read moresource§fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting an optional value. Read moresource§fn deserialize_unit<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_unit<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a unit value.source§fn deserialize_unit_struct<V>(
self,
_name: &'static str,
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_unit_struct<V>(
self,
_name: &'static str,
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a unit struct with a
particular name.source§fn deserialize_newtype_struct<V>(
self,
_name: &'static str,
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_newtype_struct<V>(
self,
_name: &'static str,
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a newtype struct with a
particular name.source§fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a sequence of values.source§fn deserialize_tuple<V>(
self,
_len: usize,
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_tuple<V>(
self,
_len: usize,
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a sequence of values and
knows how many values there are without looking at the serialized data.source§fn deserialize_tuple_struct<V>(
self,
_name: &'static str,
_len: usize,
_visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_tuple_struct<V>(
self,
_name: &'static str,
_len: usize,
_visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a tuple struct with a
particular name and number of fields.source§fn deserialize_map<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_map<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting a map of key-value pairs.source§fn deserialize_struct<V>(
self,
_name: &'static str,
fields: &'static [&'static str],
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_struct<V>(
self,
_name: &'static str,
fields: &'static [&'static str],
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
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, ParseError>where
V: Visitor<'de>,
fn deserialize_enum<V>(
self,
_name: &'static str,
_variants: &'static [&'static str],
visitor: V,
) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting an enum value with a
particular name and possible variants.source§fn deserialize_identifier<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_identifier<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type is expecting the name of a struct
field or the discriminant of an enum variant.source§fn deserialize_ignored_any<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
fn deserialize_ignored_any<V>(self, visitor: V) -> Result<V::Value, ParseError>where
V: Visitor<'de>,
Deserialize type needs to deserialize a value whose type
doesn’t matter because it is ignored. Read moresource§fn deserialize_i128<V>(
self,
visitor: V,
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
fn deserialize_i128<V>(
self,
visitor: V,
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
source§fn deserialize_u128<V>(
self,
visitor: V,
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
fn deserialize_u128<V>(
self,
visitor: V,
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
source§fn is_human_readable(&self) -> bool
fn is_human_readable(&self) -> bool
Deserialize implementations should expect to
deserialize their human-readable form. Read moresource§impl<'de> EnumAccess<'de> for &mut KeyValueDeserializer<'de>
impl<'de> EnumAccess<'de> for &mut KeyValueDeserializer<'de>
§type Error = ParseError
type Error = ParseError
§type Variant = &mut KeyValueDeserializer<'de>
type Variant = &mut KeyValueDeserializer<'de>
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), ParseError>where
V: DeserializeSeed<'de>,
fn variant_seed<V>(
self,
seed: V,
) -> Result<(V::Value, Self::Variant), ParseError>where
V: DeserializeSeed<'de>,
variant is called to identify which variant to deserialize. Read moresource§impl<'de> From<&'de str> for KeyValueDeserializer<'de>
impl<'de> From<&'de str> for KeyValueDeserializer<'de>
source§impl<'de> MapAccess<'de> for KeyValueDeserializer<'de>
impl<'de> MapAccess<'de> for KeyValueDeserializer<'de>
§type Error = ParseError
type Error = ParseError
source§fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, ParseError>where
K: DeserializeSeed<'de>,
fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, ParseError>where
K: DeserializeSeed<'de>,
Ok(Some(key)) for the next key in the map, or Ok(None)
if there are no more remaining entries. Read moresource§fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, ParseError>where
V: DeserializeSeed<'de>,
fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, ParseError>where
V: DeserializeSeed<'de>,
Ok(value) for the next value in the map. Read moresource§fn next_entry_seed<K, V>(
&mut self,
kseed: K,
vseed: V,
) -> Result<Option<(<K as DeserializeSeed<'de>>::Value, <V as DeserializeSeed<'de>>::Value)>, Self::Error>where
K: DeserializeSeed<'de>,
V: DeserializeSeed<'de>,
fn next_entry_seed<K, V>(
&mut self,
kseed: K,
vseed: V,
) -> Result<Option<(<K as DeserializeSeed<'de>>::Value, <V as DeserializeSeed<'de>>::Value)>, Self::Error>where
K: DeserializeSeed<'de>,
V: DeserializeSeed<'de>,
Ok(Some((key, value))) for the next (key-value) pair in
the map, or Ok(None) if there are no more remaining items. Read moresource§fn next_key<K>(&mut self) -> Result<Option<K>, Self::Error>where
K: Deserialize<'de>,
fn next_key<K>(&mut self) -> Result<Option<K>, Self::Error>where
K: Deserialize<'de>,
Ok(Some(key)) for the next key in the map, or Ok(None)
if there are no more remaining entries. Read moresource§fn next_value<V>(&mut self) -> Result<V, Self::Error>where
V: Deserialize<'de>,
fn next_value<V>(&mut self) -> Result<V, Self::Error>where
V: Deserialize<'de>,
Ok(value) for the next value in the map. Read moresource§fn next_entry<K, V>(&mut self) -> Result<Option<(K, V)>, Self::Error>where
K: Deserialize<'de>,
V: Deserialize<'de>,
fn next_entry<K, V>(&mut self) -> Result<Option<(K, V)>, Self::Error>where
K: Deserialize<'de>,
V: Deserialize<'de>,
Ok(Some((key, value))) for the next (key-value) pair in
the map, or Ok(None) if there are no more remaining items. Read moresource§impl<'de> SeqAccess<'de> for KeyValueDeserializer<'de>
impl<'de> SeqAccess<'de> for KeyValueDeserializer<'de>
§type Error = ParseError
type Error = ParseError
source§fn next_element_seed<T>(
&mut self,
seed: T,
) -> Result<Option<T::Value>, ParseError>where
T: DeserializeSeed<'de>,
fn next_element_seed<T>(
&mut self,
seed: T,
) -> Result<Option<T::Value>, ParseError>where
T: DeserializeSeed<'de>,
Ok(Some(value)) for the next value in the sequence, or
Ok(None) if there are no more remaining items. Read moresource§fn next_element<T>(&mut self) -> Result<Option<T>, Self::Error>where
T: Deserialize<'de>,
fn next_element<T>(&mut self) -> Result<Option<T>, Self::Error>where
T: Deserialize<'de>,
Ok(Some(value)) for the next value in the sequence, or
Ok(None) if there are no more remaining items. Read moresource§impl<'de> VariantAccess<'de> for &mut KeyValueDeserializer<'de>
impl<'de> VariantAccess<'de> for &mut KeyValueDeserializer<'de>
§type Error = ParseError
type Error = ParseError
EnumAccess.