serde_osc/ser/
serializer_defaults.rs

1//! Provide default implementations of serialize_xxx
2//! to implement the serde::ser::Serializer trait.
3#[doc(hidden)]
4#[macro_export]
5macro_rules! default_ser_one {
6    ($result:ident, $func:ident($($arg:ty),*)) => {
7        fn $func(self, $(_: $arg,)*) -> ResultE<Self::$result> {
8            Err(Error::UnsupportedType)
9        }
10    };
11}
12
13#[doc(hidden)]
14#[macro_export]
15macro_rules! default_ser_one_sized {
16    ($func:ident($($arg:ty),*)) => {
17        fn $func<T: ?Sized + Serialize>(self, $(_: $arg,)*) -> ResultE<Self::Ok> {
18            Err(Error::UnsupportedType)
19        }
20    };
21}
22
23#[doc(hidden)]
24#[macro_export]
25macro_rules! default_ser_helper {
26    (bool) => { default_ser_one!{Ok, serialize_bool(bool)} };
27    (i8) => { default_ser_one!{Ok, serialize_i8(i8)} };
28    (i16) => { default_ser_one!{Ok, serialize_i16(i16)} };
29    (i32) => { default_ser_one!{Ok, serialize_i32(i32)} };
30    (i64) => { default_ser_one!{Ok, serialize_i64(i64)} };
31    (u8) => { default_ser_one!{Ok, serialize_u8(u8)} };
32    (u16) => { default_ser_one!{Ok, serialize_u16(u16)} };
33    (u32) => { default_ser_one!{Ok, serialize_u32(u32)} };
34    (u64) => { default_ser_one!{Ok, serialize_u64(u64)} };
35    (f32) => { default_ser_one!{Ok, serialize_f32(f32)} };
36    (f64) => { default_ser_one!{Ok, serialize_f64(f64)} };
37    (char) => { default_ser_one!{Ok, serialize_char(char)} };
38    (str) => { default_ser_one!{Ok, serialize_str(&str)} };
39    (bytes) => { default_ser_one!{Ok, serialize_bytes(&[u8])} };
40    (none) => { default_ser_one!{Ok, serialize_none()} };
41    (some) => { default_ser_one_sized!{serialize_some(&T)} };
42    (unit) => { default_ser_one!{Ok, serialize_unit()} };
43    (unit_struct) => { default_ser_one!{Ok, serialize_unit_struct(&'static str)} };
44    (unit_variant) => { default_ser_one!{Ok, serialize_unit_variant(&'static str, u32, &'static str)} };
45    (newtype_struct) => { default_ser_one_sized!{serialize_newtype_struct(&'static str, &T)} };
46    (newtype_variant) => { default_ser_one_sized!{serialize_newtype_variant(&'static str, u32, &'static str, &T)} };
47    (seq) => { default_ser_one!{SerializeSeq, serialize_seq(Option<usize>)} };
48    (tuple) => { default_ser_one!{SerializeTuple, serialize_tuple(usize)} };
49    (tuple_struct) => { default_ser_one!{SerializeTupleStruct, serialize_tuple_struct(&'static str, usize)} };
50    (tuple_variant) => { default_ser_one!{SerializeTupleVariant, serialize_tuple_variant(&'static str, u32, &'static str, usize)} };
51    (map) => { default_ser_one!{SerializeMap, serialize_map(Option<usize>)} };
52    (struct) => { default_ser_one!{SerializeStruct, serialize_struct(&'static str, usize)} };
53    (struct_variant) => { default_ser_one!{SerializeStructVariant, serialize_struct_variant(&'static str, u32, &'static str, usize)} };
54}
55
56#[doc(hidden)]
57#[macro_export]
58macro_rules! default_ser {
59    ($($func:ident)*) => {
60        $(default_ser_helper!{$func})*
61    };
62}
63