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 str
Full input originally received for parsing.
input: &'de str
Input 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: bool
Whether 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: bool
Whether 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, 'a> Deserializer<'de> for &'a mut KeyValueDeserializer<'de>
impl<'de, 'a> Deserializer<'de> for &'a 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<'a, 'de> EnumAccess<'de> for &'a mut KeyValueDeserializer<'de>
impl<'a, 'de> EnumAccess<'de> for &'a mut KeyValueDeserializer<'de>
§type Error = ParseError
type Error = ParseError
§type Variant = &'a mut KeyValueDeserializer<'de>
type Variant = &'a 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<'a, 'de> VariantAccess<'de> for &'a mut KeyValueDeserializer<'de>
impl<'a, 'de> VariantAccess<'de> for &'a mut KeyValueDeserializer<'de>
§type Error = ParseError
type Error = ParseError
EnumAccess
.