Skip to main content

Decodable

Trait Decodable 

Source
pub trait Decodable: Sized {
    // Required method
    fn decode<D: Decoder>(d: &mut D) -> Result<Self, D::Error>;
}
Expand description

Trait for deserializing a type.

This can be implemented for custom data types to allow them to be decoded with Decoder implementations. Most of Rust’s built-in or standard data types (like i32 and Vec<T>) have Decodable implementations provided by this module.

Note that, in general, you should let the compiler implement this for you by using the derive(RustcDecodable) attribute.

§Examples

extern crate rustc_serialize;

#[derive(RustcDecodable)]
struct Point {
    x: i32,
    y: i32,
}

This generates code equivalent to:

extern crate rustc_serialize;
use rustc_serialize::Decodable;
use rustc_serialize::Decoder;

struct Point {
    x: i32,
    y: i32,
}

impl Decodable for Point {
    fn decode<D: Decoder>(d: &mut D) -> Result<Point, D::Error> {
        d.read_struct("Point", 2, |d| {
            let x = try!(d.read_struct_field("x", 0, |d| { d.read_i32() }));
            let y = try!(d.read_struct_field("y", 1, |d| { d.read_i32() }));
            Ok(Point{ x: x, y: y })
        })
    }
}

Required Methods§

Source

fn decode<D: Decoder>(d: &mut D) -> Result<Self, D::Error>

Deserialize a value using a Decoder.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Decodable for ()

Source§

impl Decodable for PathBuf

Source§

impl Decodable for String

Source§

impl Decodable for bool

Source§

impl Decodable for char

Source§

impl Decodable for f32

Source§

impl Decodable for f64

Source§

impl Decodable for i8

Source§

impl Decodable for i16

Source§

impl Decodable for i32

Source§

impl Decodable for i64

Source§

impl Decodable for isize

Source§

impl Decodable for u8

Source§

impl Decodable for u16

Source§

impl Decodable for u32

Source§

impl Decodable for u64

Source§

impl Decodable for usize

Source§

impl<'a, T> Decodable for Cow<'a, T>
where T: ToOwned + ?Sized, T::Owned: Decodable,

Source§

fn decode<D: Decoder>(d: &mut D) -> Result<Cow<'a, T>, D::Error>

Source§

impl<K, V> Decodable for HashMap<K, V>
where K: Decodable + Hash + Eq, V: Decodable,

Source§

fn decode<D: Decoder>(d: &mut D) -> Result<HashMap<K, V>, D::Error>

Source§

impl<K: Decodable + Ord, V: Decodable> Decodable for BTreeMap<K, V>

Source§

impl<T0: Decodable, T1: Decodable, T2: Decodable, T3: Decodable, T4: Decodable, T5: Decodable, T6: Decodable, T7: Decodable, T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

impl<T1: Decodable, T2: Decodable, T3: Decodable, T4: Decodable, T5: Decodable, T6: Decodable, T7: Decodable, T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

impl<T2: Decodable, T3: Decodable, T4: Decodable, T5: Decodable, T6: Decodable, T7: Decodable, T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

impl<T3: Decodable, T4: Decodable, T5: Decodable, T6: Decodable, T7: Decodable, T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

impl<T4: Decodable, T5: Decodable, T6: Decodable, T7: Decodable, T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T4, T5, T6, T7, T8, T9, T10, T11)

Source§

impl<T5: Decodable, T6: Decodable, T7: Decodable, T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T5, T6, T7, T8, T9, T10, T11)

Source§

impl<T6: Decodable, T7: Decodable, T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T6, T7, T8, T9, T10, T11)

Source§

impl<T7: Decodable, T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T7, T8, T9, T10, T11)

Source§

impl<T8: Decodable, T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T8, T9, T10, T11)

Source§

impl<T9: Decodable, T10: Decodable, T11: Decodable> Decodable for (T9, T10, T11)

Source§

impl<T10: Decodable, T11: Decodable> Decodable for (T10, T11)

Source§

impl<T11: Decodable> Decodable for (T11,)

Source§

impl<T: Decodable + Copy> Decodable for Cell<T>

Source§

impl<T: Decodable + Ord> Decodable for BTreeSet<T>

Source§

impl<T: Decodable + Send + Sync> Decodable for Arc<T>

Source§

impl<T: Decodable, E: Decodable> Decodable for Result<T, E>

Source§

fn decode<D: Decoder>(d: &mut D) -> Result<Result<T, E>, D::Error>

Source§

impl<T: Decodable> Decodable for Box<T>

Source§

impl<T: Decodable> Decodable for Box<[T]>

Source§

impl<T: Decodable> Decodable for LinkedList<T>

Source§

impl<T: Decodable> Decodable for Option<T>

Source§

impl<T: Decodable> Decodable for Rc<T>

Source§

fn decode<D: Decoder>(d: &mut D) -> Result<Rc<T>, D::Error>

Source§

impl<T: Decodable> Decodable for RefCell<T>

Source§

impl<T: Decodable> Decodable for Vec<T>

Source§

impl<T: Decodable> Decodable for VecDeque<T>

Source§

impl<T: Decodable> Decodable for [T; 0]

Source§

impl<T: Decodable> Decodable for [T; 1]

Source§

impl<T: Decodable> Decodable for [T; 2]

Source§

impl<T: Decodable> Decodable for [T; 3]

Source§

impl<T: Decodable> Decodable for [T; 4]

Source§

impl<T: Decodable> Decodable for [T; 5]

Source§

impl<T: Decodable> Decodable for [T; 6]

Source§

impl<T: Decodable> Decodable for [T; 7]

Source§

impl<T: Decodable> Decodable for [T; 8]

Source§

impl<T: Decodable> Decodable for [T; 9]

Source§

impl<T: Decodable> Decodable for [T; 10]

Source§

impl<T: Decodable> Decodable for [T; 11]

Source§

impl<T: Decodable> Decodable for [T; 12]

Source§

impl<T: Decodable> Decodable for [T; 13]

Source§

impl<T: Decodable> Decodable for [T; 14]

Source§

impl<T: Decodable> Decodable for [T; 15]

Source§

impl<T: Decodable> Decodable for [T; 16]

Source§

impl<T: Decodable> Decodable for [T; 17]

Source§

impl<T: Decodable> Decodable for [T; 18]

Source§

impl<T: Decodable> Decodable for [T; 19]

Source§

impl<T: Decodable> Decodable for [T; 20]

Source§

impl<T: Decodable> Decodable for [T; 21]

Source§

impl<T: Decodable> Decodable for [T; 22]

Source§

impl<T: Decodable> Decodable for [T; 23]

Source§

impl<T: Decodable> Decodable for [T; 24]

Source§

impl<T: Decodable> Decodable for [T; 25]

Source§

impl<T: Decodable> Decodable for [T; 26]

Source§

impl<T: Decodable> Decodable for [T; 27]

Source§

impl<T: Decodable> Decodable for [T; 28]

Source§

impl<T: Decodable> Decodable for [T; 29]

Source§

impl<T: Decodable> Decodable for [T; 30]

Source§

impl<T: Decodable> Decodable for [T; 31]

Source§

impl<T: Decodable> Decodable for [T; 32]

Source§

impl<T> Decodable for HashSet<T>
where T: Decodable + Hash + Eq,

Source§

impl<T> Decodable for PhantomData<T>

Implementors§