From 9a453f02364915bfc45e879267cbd0f710e746f1 Mon Sep 17 00:00:00 2001 From: Sam Scott Date: Thu, 9 Nov 2017 16:52:42 +0000 Subject: Add generic serialize `to_writer` method. --- src/ser.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src/ser.rs') diff --git a/src/ser.rs b/src/ser.rs index a78d6be..4206e60 100644 --- a/src/ser.rs +++ b/src/ser.rs @@ -63,6 +63,42 @@ pub fn to_string(input: &T) -> Result { String::from_utf8(buffer).map_err(Error::from) } +/// Serializes a value into a generic writer object. +/// +/// ``` +/// # #[macro_use] +/// # extern crate serde_derive; +/// # extern crate serde_qs; +/// #[derive(Deserialize, Serialize)] +/// struct Query { +/// name: String, +/// age: u8, +/// occupation: String, +/// } +/// +/// # fn main(){ +/// let q = Query { +/// name: "Alice".to_owned(), +/// age: 24, +/// occupation: "Student".to_owned(), +/// }; +/// +/// let mut buffer = Vec::new(); +/// serde_qs::to_writer(&q, &mut buffer).unwrap(); +/// assert_eq!( +/// String::from_utf8(buffer).unwrap(), +/// "name=Alice&age=24&occupation=Student"); +/// # } +/// ``` +pub fn to_writer(input: &T, writer: &mut W) -> Result<()> { + let mut first = true; + input.serialize(&mut QsSerializer { + writer: writer, + key: None, + first: &mut first, + }) +} + /// A serializer for the querystring format. /// /// * Supported top-level inputs are structs and maps. -- cgit v1.2.3