mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-19 19:11:03 +00:00
Document serde::ser::impls
This commit is contained in:
+48
-1
@@ -1,4 +1,4 @@
|
|||||||
#![allow(missing_docs)]
|
//! Implementations for all of Rust's builtin types.
|
||||||
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::collections::{
|
use std::collections::{
|
||||||
@@ -119,6 +119,27 @@ impl<T> SeqVisitor for Option<T> where T: Serialize {
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/// A `serde::Visitor` for sequence iterators.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use serde::{Serialize, Serializer};
|
||||||
|
/// use serde::ser::impls::SeqIteratorVisitor;
|
||||||
|
///
|
||||||
|
/// struct Seq(Vec<u32>);
|
||||||
|
///
|
||||||
|
/// impl Serialize for Seq {
|
||||||
|
/// fn serialize<S>(&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> {
|
pub struct SeqIteratorVisitor<Iter> {
|
||||||
iter: Iter,
|
iter: Iter,
|
||||||
len: Option<usize>,
|
len: Option<usize>,
|
||||||
@@ -127,6 +148,7 @@ pub struct SeqIteratorVisitor<Iter> {
|
|||||||
impl<T, Iter> SeqIteratorVisitor<Iter>
|
impl<T, Iter> SeqIteratorVisitor<Iter>
|
||||||
where Iter: Iterator<Item=T>
|
where Iter: Iterator<Item=T>
|
||||||
{
|
{
|
||||||
|
/// Construct a new `SeqIteratorVisitor<Iter>`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(iter: Iter, len: Option<usize>) -> SeqIteratorVisitor<Iter> {
|
pub fn new(iter: Iter, len: Option<usize>) -> SeqIteratorVisitor<Iter> {
|
||||||
SeqIteratorVisitor {
|
SeqIteratorVisitor {
|
||||||
@@ -334,12 +356,14 @@ macro_rules! tuple_impls {
|
|||||||
}
|
}
|
||||||
)+) => {
|
)+) => {
|
||||||
$(
|
$(
|
||||||
|
/// A tuple visitor.
|
||||||
pub struct $TupleVisitor<'a, $($T: 'a),+> {
|
pub struct $TupleVisitor<'a, $($T: 'a),+> {
|
||||||
tuple: &'a ($($T,)+),
|
tuple: &'a ($($T,)+),
|
||||||
state: u8,
|
state: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, $($T: 'a),+> $TupleVisitor<'a, $($T),+> {
|
impl<'a, $($T: 'a),+> $TupleVisitor<'a, $($T),+> {
|
||||||
|
/// Construct a new, empty `TupleVisitor`.
|
||||||
pub fn new(tuple: &'a ($($T,)+)) -> $TupleVisitor<'a, $($T),+> {
|
pub fn new(tuple: &'a ($($T,)+)) -> $TupleVisitor<'a, $($T),+> {
|
||||||
$TupleVisitor {
|
$TupleVisitor {
|
||||||
tuple: tuple,
|
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<u32, u32>);
|
||||||
|
///
|
||||||
|
/// impl Serialize for Map {
|
||||||
|
/// fn serialize<S>(&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> {
|
pub struct MapIteratorVisitor<Iter> {
|
||||||
iter: Iter,
|
iter: Iter,
|
||||||
len: Option<usize>,
|
len: Option<usize>,
|
||||||
@@ -499,6 +545,7 @@ pub struct MapIteratorVisitor<Iter> {
|
|||||||
impl<K, V, Iter> MapIteratorVisitor<Iter>
|
impl<K, V, Iter> MapIteratorVisitor<Iter>
|
||||||
where Iter: Iterator<Item=(K, V)>
|
where Iter: Iterator<Item=(K, V)>
|
||||||
{
|
{
|
||||||
|
/// Construct a new `MapIteratorVisitor<Iter>`.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn new(iter: Iter, len: Option<usize>) -> MapIteratorVisitor<Iter> {
|
pub fn new(iter: Iter, len: Option<usize>) -> MapIteratorVisitor<Iter> {
|
||||||
MapIteratorVisitor {
|
MapIteratorVisitor {
|
||||||
|
|||||||
Reference in New Issue
Block a user