impl_serialize 3.1.4

Macro for common implementing methods in serde::Serializer trait
Documentation
use super::*;

#[test]
fn all() {
    #[derive(Clone, Copy)]
    struct MySerializer;

    impl ser::Serializer for MySerializer {
        type Error = SerializationError;
        type Ok = ();

        type SerializeMap = ser::Impossible<Self::Ok, Self::Error>;
        type SerializeSeq = ser::Impossible<Self::Ok, Self::Error>;
        type SerializeStruct = ser::Impossible<Self::Ok, Self::Error>;
        type SerializeStructVariant = ser::Impossible<Self::Ok, Self::Error>;
        type SerializeTuple = ser::Impossible<Self::Ok, Self::Error>;
        type SerializeTupleStruct = ser::Impossible<Self::Ok, Self::Error>;
        type SerializeTupleVariant = ser::Impossible<Self::Ok, Self::Error>;

        impl_serialize!(Err(SerializationError::CannotSerialize), [
            bool,
            bytes,
            i8, i16, i32, i64,
            u8, u16, u32, u64,
            f32, f64,
            char,
            str,
            none, some, unit,
            unit_struct, unit_variant,
            newtype_struct, newtype_variant,
            seq, map,
            tuple, tuple_struct, tuple_variant,
            struct, struct_variant
        ]);
    }

    let serializer = MySerializer;

    assert_eq!(
        serializer.serialize_bool(true).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_i8(4).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_i16(1).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_i32(1).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_i64(4).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_u8(4).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_u16(4).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_u32(4).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_u64(5).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_f32(4.3).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_f64(5.1).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_char('f').err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_str("str").err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_bytes(&[1, 2, 3, 4]).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_none().err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_some(&1).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_unit().err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_unit_struct("struct").err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer
            .serialize_unit_variant("struct", 5, "variant")
            .err()
            .unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer
            .serialize_newtype_struct("struct", "value")
            .err()
            .unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer
            .serialize_newtype_variant("struct", 5, "varint", "value")
            .err()
            .unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_seq(None).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_tuple(5).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_tuple_struct("name", 5).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer
            .serialize_tuple_variant("struct", 1, "varint", 5)
            .err()
            .unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_map(None).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer.serialize_struct("name", 1).err().unwrap(),
        SerializationError::CannotSerialize
    );

    assert_eq!(
        serializer
            .serialize_struct_variant("struct", 1, "varint", 5)
            .err()
            .unwrap(),
        SerializationError::CannotSerialize
    );
}