[][src]Trait rustc_serialize::EncoderHelpers

pub trait EncoderHelpers: Encoder {
    fn emit_from_vec<T, F>(&mut self, v: &[T], f: F) -> Result<(), Self::Error>
    where
        F: FnMut(&mut Self, &T) -> Result<(), Self::Error>
; }

Trait with helper functions for implementing Encodable.

This trait is implemented for everything that implements Encoder. Encodable implementations can make use of it to make their implementations easier.

Required methods

fn emit_from_vec<T, F>(&mut self, v: &[T], f: F) -> Result<(), Self::Error> where
    F: FnMut(&mut Self, &T) -> Result<(), Self::Error>, 

Emit a vector as a sequence.

Storing sequences as vectors is a common pattern. This method makes encoding such sequences easier by wrapping the calls to Encoder::emit_seq and Encoder::emit_seq_elt.

Examples

use rustc_serialize::Encodable;
use rustc_serialize::Encoder;
use rustc_serialize::EncoderHelpers;

struct NumberSequence {
    elements: Vec<i32>,
}

impl Encodable for NumberSequence {
    fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> {
        s.emit_struct("NumberSequence", 1, |s| {
            s.emit_struct_field("elements", 0, |s| {
                s.emit_from_vec(&self.elements, |s,e| {
                    s.emit_i32(*e)
                })
            })
        })
    }
}
Loading content...

Implementors

impl<S: Encoder> EncoderHelpers for S[src]

Loading content...