serde_macros 0.6.13

Macros to auto-generate implementations for the serde framework
extern crate num;
extern crate serde;


pub enum Enum {
    A,
    B(u32),
    C {
        a: i8,
        b: i8,
    },
}
impl ::serde::ser::Serialize for Enum {
    fn serialize<__S>(&self, serializer: &mut __S) -> ::std::result::Result<(), __S::Error>
        where __S: ::serde::ser::Serializer
    {
        match *self {
            Enum::A => {
                ::serde::ser::Serializer::serialize_unit_variant(serializer, "Enum", 0usize, "A")
            }
            Enum::B(ref __simple_value) => {
                ::serde::ser::Serializer::serialize_newtype_variant(serializer,
                                                                    "Enum",
                                                                    1usize,
                                                                    "B",
                                                                    __simple_value)
            }
            Enum::C { a: ref __field0, b: ref __field1 } => {
                struct __VariantStruct<'__variant> {
                    a: &'__variant i8,
                    b: &'__variant i8,
                    #[serde(skip_serializing)]
                    __phantom: ::std::marker::PhantomData<Enum>,
                }
                struct Visitor<'__variant: '__a, '__a> {
                    state: usize,
                    value: __VariantStruct<'__variant>,
                    _structure_ty: ::std::marker::PhantomData<&'__a __VariantStruct<'__variant>>,
                }
                impl<'__variant: '__a, '__a> ::serde::ser::MapVisitor for Visitor<'__variant, '__a> {
                    #[inline]
                    fn visit<S>(&mut self,
                                serializer: &mut S)
                                -> ::std::result::Result<Option<()>, S::Error>
                        where S: ::serde::ser::Serializer
                    {
                        loop {
                            match self.state {
                                0usize => {
                                    self.state += 1;
                                    {
                                    }
                                    return Ok(Some(match serializer.serialize_struct_variant_elt("a",
                                                                                                     &self.value.a)
                                                           {
                                                           ::std::result::Result::Ok(val)
                                                           => val,
                                                           ::std::result::Result::Err(err)
                                                           => {
                                                               return ::std::result::Result::Err(::std::convert::From::from(err))
                                                           }
                                                       }));
                                }
                                1usize => {
                                    self.state += 1;
                                    {
                                    }
                                    return Ok(Some(match serializer.serialize_struct_variant_elt("b",
                                                                                                     &self.value.b)
                                                           {
                                                           ::std::result::Result::Ok(val)
                                                           => val,
                                                           ::std::result::Result::Err(err)
                                                           => {
                                                               return ::std::result::Result::Err(::std::convert::From::from(err))
                                                           }
                                                       }));
                                }
                                _ => {
                                    return Ok(None);
                                }
                            }
                        }
                    }
                    #[inline]
                    fn len(&self) -> Option<usize> {
                        Some(0 + 1 + 1)
                    }
                }
                serializer.serialize_struct_variant("Enum", 2usize, "C",
                                                        Visitor{value:
                                                                    __VariantStruct{a:
                                                                                        __field0,
                                                                                    b:
                                                                                        __field1,
                                                                                    __phantom:
                                                                                        ::std::marker::PhantomData::<Enum>,},
                                                                state: 0,
                                                                _structure_ty:
                                                                    ::std::marker::PhantomData,})
            }
        }
    }
}