use core::mem::{size_of, size_of_val};
mod bit_size;
pub use bit_size::*;
impl<T> DataSize for T {}
pub trait DataSize: Sized {
const BYTES: usize = size_of::<Self>();
const UBITS: usize = Self::UBYTES * 8;
const UBYTES: usize = size_of::<usize>();
fn pointer_ratio(&self) -> (usize, usize) {
#[inline]
fn gcd(m: usize, n: usize) -> usize {
if n == 0 {
m
} else {
gcd(n, m % n)
}
}
let g = gcd(Self::UBYTES, Self::BYTES);
(Self::UBYTES / g, Self::BYTES / g)
}
fn stack_byte_size(&self) -> usize {
size_of_val(self)
}
}