From 2722a04e52fc719f6ec646755a56aadaee988130 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Tue, 1 Sep 2015 09:07:24 -0700 Subject: [PATCH] Document serde::ser::impls --- serde/src/ser/impls.rs | 49 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/serde/src/ser/impls.rs b/serde/src/ser/impls.rs index 1d21ec71..63aea2ec 100644 --- a/serde/src/ser/impls.rs +++ b/serde/src/ser/impls.rs @@ -1,4 +1,4 @@ -#![allow(missing_docs)] +//! Implementations for all of Rust's builtin types. use std::borrow::Cow; use std::collections::{ @@ -119,6 +119,27 @@ impl SeqVisitor for Option where T: Serialize { /////////////////////////////////////////////////////////////////////////////// +/// A `serde::Visitor` for sequence iterators. +/// +/// # Examples +/// +/// ``` +/// use serde::{Serialize, Serializer}; +/// use serde::ser::impls::SeqIteratorVisitor; +/// +/// struct Seq(Vec); +/// +/// impl Serialize for Seq { +/// fn serialize(&self, ser: &mut S) -> Result<(), S::Error> +/// where S: Serializer, +/// { +/// ser.visit_seq(SeqIteratorVisitor::new( +/// self.0.iter(), +/// Some(self.0.len()), +/// )) +/// } +/// } +/// ``` pub struct SeqIteratorVisitor { iter: Iter, len: Option, @@ -127,6 +148,7 @@ pub struct SeqIteratorVisitor { impl SeqIteratorVisitor where Iter: Iterator { + /// Construct a new `SeqIteratorVisitor`. #[inline] pub fn new(iter: Iter, len: Option) -> SeqIteratorVisitor { SeqIteratorVisitor { @@ -334,12 +356,14 @@ macro_rules! tuple_impls { } )+) => { $( + /// A tuple visitor. pub struct $TupleVisitor<'a, $($T: 'a),+> { tuple: &'a ($($T,)+), state: u8, } impl<'a, $($T: 'a),+> $TupleVisitor<'a, $($T),+> { + /// Construct a new, empty `TupleVisitor`. pub fn new(tuple: &'a ($($T,)+)) -> $TupleVisitor<'a, $($T),+> { $TupleVisitor { tuple: tuple, @@ -491,6 +515,28 @@ tuple_impls! { /////////////////////////////////////////////////////////////////////////////// +/// A `serde::Visitor` for (key, value) map iterators. +/// +/// # Examples +/// +/// ``` +/// use std::collections::HashMap; +/// use serde::{Serialize, Serializer}; +/// use serde::ser::impls::MapIteratorVisitor; +/// +/// struct Map(HashMap); +/// +/// impl Serialize for Map { +/// fn serialize(&self, ser: &mut S) -> Result<(), S::Error> +/// where S: Serializer, +/// { +/// ser.visit_map(MapIteratorVisitor::new( +/// self.0.iter(), +/// Some(self.0.len()), +/// )) +/// } +/// } +/// ``` pub struct MapIteratorVisitor { iter: Iter, len: Option, @@ -499,6 +545,7 @@ pub struct MapIteratorVisitor { impl MapIteratorVisitor where Iter: Iterator { + /// Construct a new `MapIteratorVisitor`. #[inline] pub fn new(iter: Iter, len: Option) -> MapIteratorVisitor { MapIteratorVisitor {