//! Deserialization support for the `application/x-www-form-urlencoded` format.
use form_urlencoded::parse; use form_urlencoded::Parse as UrlEncodedParse; use serde::de::value::MapDeserializer; use serde::de::Error as de_Error; use serde::de::{self, IntoDeserializer}; use serde::forward_to_deserialize_any; use std::borrow::Cow; use std::io::Read;
#[doc(inline)] pubuse serde::de::value::Error;
/// Deserializes a `application/x-www-form-urlencoded` value from a `&[u8]`. /// /// ``` /// let meal = vec![ /// ("bread".to_owned(), "baguette".to_owned()), /// ("cheese".to_owned(), "comté".to_owned()), /// ("meat".to_owned(), "ham".to_owned()), /// ("fat".to_owned(), "butter".to_owned()), /// ]; /// /// assert_eq!( /// serde_urlencoded::from_bytes::<Vec<(String, String)>>( /// b"bread=baguette&cheese=comt%C3%A9&meat=ham&fat=butter"), /// Ok(meal)); /// ``` pubfn from_bytes<'de, T>(input: &'de [u8]) -> Result<T, Error> where
T: de::Deserialize<'de>,
{
T::deserialize(Deserializer::new(parse(input)))
}
/// Deserializes a `application/x-www-form-urlencoded` value from a `&str`. /// /// ``` /// let meal = vec![ /// ("bread".to_owned(), "baguette".to_owned()), /// ("cheese".to_owned(), "comté".to_owned()), /// ("meat".to_owned(), "ham".to_owned()), /// ("fat".to_owned(), "butter".to_owned()), /// ]; /// /// assert_eq!( /// serde_urlencoded::from_str::<Vec<(String, String)>>( /// "bread=baguette&cheese=comt%C3%A9&meat=ham&fat=butter"), /// Ok(meal)); /// ``` pubfn from_str<'de, T>(input: &'de str) -> Result<T, Error> where
T: de::Deserialize<'de>,
{
from_bytes(input.as_bytes())
}
/// Convenience function that reads all bytes from `reader` and deserializes /// them with `from_bytes`. pubfn from_reader<T, R>(mut reader: R) -> Result<T, Error> where
T: de::DeserializeOwned,
R: Read,
{ letmut buf = vec![];
reader.read_to_end(&mut buf).map_err(|e| {
de::Error::custom(format_args!("could not read input: {}", e))
})?;
from_bytes(&buf)
}
/// A deserializer for the `application/x-www-form-urlencoded` format. /// /// * Supported top-level outputs are structs, maps and sequences of pairs, /// with or without a given length. /// /// * Main `deserialize` methods defers to `deserialize_map`. /// /// * Everything else but `deserialize_seq` and `deserialize_seq_fixed_size` /// defers to `deserialize`. pubstruct Deserializer<'de> {
inner: MapDeserializer<'de, PartIterator<'de>, Error>,
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.