pub trait Format {}
macro_rules! impl_format {
($(#[$attr:meta] $t:ty)*) => {
$(
#[$attr]
impl Format for $t {}
)*
};
}
macro_rules! create_format {
($(#[$attr:meta] $t:ident)*) => {
$(
#[$attr]
#[derive(Copy, Clone, Debug, Default)]
pub struct $t;
impl_format!(#[$attr] $t);
)*
};
}
impl_format!(
i8
u8
i16
u16
i32
u32
i64
u64
f32
f64
bool
String
);
serde::serde_if_integer128!(impl_format!(
i128
u128
););
create_format!(
Uppercase
Lowercase
);
pub trait Strictness {}
#[derive(Copy, Clone, Debug, Default)]
pub struct Strict;
impl Strictness for Strict {}
#[derive(Copy, Clone, Debug, Default)]
pub struct Flexible;
impl Strictness for Flexible {}