catalejo_memory/
primitive.rs1use core::mem;
4
5use crate::behavior::Unassociated;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
9pub enum Primitive {
10 U8 = mem::size_of::<u8>().cast_signed(),
12
13 U16 = mem::size_of::<u16>().cast_signed(),
15
16 U32 = mem::size_of::<u32>().cast_signed(),
18
19 U64 = mem::size_of::<u64>().cast_signed(),
21}
22
23impl Primitive {
24 #[inline]
26 pub const fn appropriate<T>() -> Option<Self>
27 where
28 T: Unassociated,
29 {
30 match mem::size_of::<T>() {
31 1 => Some(Self::U8),
32 2 => Some(Self::U16),
33 4 => Some(Self::U32),
34 8 => Some(Self::U64),
35 _ => None,
36 }
37 }
38}
39
40#[derive(Clone, Copy)]
44#[repr(C)]
45pub union PrimitiveUnion {
46 pub u8: u8,
48
49 pub u16: u16,
51
52 pub u32: u32,
54
55 pub u64: u64,
57}