userspace/macros/traits/
implement.rs

1#[macro_export]
2macro_rules! trait_implement_primitives {
3    ($($t:ty),*) => {
4        $crate::trait_implement_primitive!(
5            true, bool, char, f32, f64, i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128,
6            usize
7        );
8        $crate::trait_implement_bytes!(
9            bool, char, f32, f64, i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128, usize
10        );
11
12        impl $crate::traits::Bytes<crate::Origin, crate::Origin> for () {
13            const BYTES_SIZE: usize = core::mem::size_of::<()>();
14            fn from_bytes(
15                _bytes: [u8; <Self as $crate::traits::Bytes<crate::Origin, crate::Origin>>::BYTES_SIZE],
16                _endianness: bool,
17            ) -> Self {
18                ()
19            }
20            fn to_bytes(
21                &self,
22                _endianness: bool,
23            ) -> [u8; <Self as $crate::traits::Bytes<crate::Origin, crate::Origin>>::BYTES_SIZE] {
24                [0u8; 0]
25            }
26        }
27    };
28}
29
30// #[macro_export]
31// macro_rules! trait_implement_defaut_for_primitives_by_crate {
32//     ($crate_id:ident) => {
33//         pub trait $crate_id {}
34
35//         trait_implement_primitive!(
36//             $crate_id, true, bool, char, f32, f64, i8, i16, i32, i64, i128, isize, u8, u16, u32,
37//             u64, u128, usize
38//         );
39
40//         trait_implement_bytes!(
41//             $crate_id, bool, char, f32, f64, i8, i16, i32, i64, i128, isize, u8, u16, u32, u64,
42//             u128, usize
43//         );
44//     };
45// }
46// pub use trait_implement_defaut_for_primitives_by_crate;
47pub use trait_implement_primitives;