#![no_std]
pub trait BaseAddress {
fn ptr(&self) -> *const ();
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Static<const A: usize>;
impl<const A: usize> BaseAddress for Static<A> {
#[inline(always)]
fn ptr(&self) -> *const () {
A as *const ()
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Dynamic {
base: usize,
}
impl Dynamic {
#[inline]
pub const fn new(base: usize) -> Self {
Dynamic { base }
}
}
impl BaseAddress for Dynamic {
#[inline(always)]
fn ptr(&self) -> *const () {
self.base as *const ()
}
}