pub trait Mapper {
// Required methods
unsafe fn map_aligned(
&mut self,
address: PhysicalAddress,
size: usize
) -> Result<VirtualAddress, &'static str>;
unsafe fn unmap_aligned(
&mut self,
address: VirtualAddress,
size: usize
) -> Result<(), &'static str>;
fn page_size(&self) -> usize;
// Provided methods
unsafe fn map(
&mut self,
address: PhysicalAddress,
size: usize
) -> Result<VirtualAddress, &'static str> { ... }
unsafe fn unmap(
&mut self,
address: VirtualAddress,
size: usize
) -> Result<(), &'static str> { ... }
}