1#![no_std]
3
4pub trait BaseAddress {
6 fn ptr(&self) -> *const ();
8}
9
10#[derive(Clone, Debug, PartialEq, Eq)]
15pub struct Static<const A: usize>;
16
17impl<const A: usize> BaseAddress for Static<A> {
18 #[inline(always)]
19 fn ptr(&self) -> *const () {
20 A as *const ()
21 }
22}
23
24#[derive(Clone, Debug, PartialEq, Eq)]
26pub struct Dynamic {
27 base: usize,
28}
29
30impl Dynamic {
31 #[inline]
33 pub const fn new(base: usize) -> Self {
34 Dynamic { base }
35 }
36}
37
38impl BaseAddress for Dynamic {
39 #[inline(always)]
40 fn ptr(&self) -> *const () {
41 self.base as *const ()
42 }
43}