Trait rustc_serialize::DecoderHelpers [] [src]

pub trait DecoderHelpers: Decoder {
    fn read_to_vec<T, F>(&mut self, f: F) -> Result<Vec<T>, Self::Error> where F: FnMut(&mut Self) -> Result<T, Self::Error>;
}
[]

Trait with helper functions for implementing Decodable.

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

Required Methods

[]

Read a sequence into a vector.

Storing sequences as vectors is a common pattern. This method makes deserializing such sequences easier by wrapping the calls to Decoder::read_seq and Decoder::read_seq_elt.

Examples

use rustc_serialize::Decodable;
use rustc_serialize::Decoder;
use rustc_serialize::DecoderHelpers;

struct NumberSequence {
    elements: Vec<i32>,
}

impl Decodable for NumberSequence {
    fn decode<D: Decoder>(d: &mut D) -> Result<NumberSequence, D::Error> {
        d.read_struct("NumberSequence", 2, |d| {
            Ok(NumberSequence{
                elements: try!(d.read_struct_field("elements", 0, |d| {
                    d.read_to_vec(|d| { d.read_i32() })
                }))
            })
        })
    }
}

Implementors