Macro zero_formatter::union_formatter [] [src]

macro_rules! union_formatter {
    (#[target($buffer:ty)]
    enum $name:ident : $key_type:ty {
        $($key_value:expr; $case_name:ident($field_type:ty)),*
    }) => { ... };
}

union_formatter define struct type and provide formatter.

object_formatter! {
    #[target(Buffer<Cursor<Vec<u8>>>)]
    AObject {
        0; a: i32,
        1; b: i64
    }
}

object_formatter! {
    #[target(Buffer<Cursor<Vec<u8>>>)]
    OtherObject {
        0; c: i32,
        1; d: i64
    }
}

union_formatter! {
    #[target(Buffer<Cursor<Vec<u8>>>)]
    enum UnionSample: i32 {
        0; A(AObject),
        1; Other(OtherObject)
    }
}

let a: UnionSample = UnionSample::A(AObject { a: 1, b: 2 });
try!(writer.serialize(0, a));
let other: UnionSample = UnionSample::Other(OtherObject { c: 3, d: 4 });
try!(writer.serialize(0, other));