pub trait Memory: Sized {
type Memwidth: RegInt;
type Access: Access;
type Endian: Endian;
// Required methods
fn first_entry_ptr(&self) -> *mut Self::Memwidth;
fn num_entries(&self) -> usize;
fn width(&self) -> usize;
// Provided methods
fn index(&self, idx: usize) -> MemEntry<Self> { ... }
fn slice(&self, range: impl RangeBounds<usize>) -> MemEntryIter<Self> ⓘ { ... }
fn iter(&self) -> MemEntryIter<Self> ⓘ { ... }
}Expand description
Behaviors common to all SystemRDL memories
Required Associated Types§
Required Methods§
fn first_entry_ptr(&self) -> *mut Self::Memwidth
Sourcefn num_entries(&self) -> usize
fn num_entries(&self) -> usize
Number of memory entries
Provided Methods§
Sourcefn index(&self, idx: usize) -> MemEntry<Self>
fn index(&self, idx: usize) -> MemEntry<Self>
Access the memory entry at a specific index. Panics if out of bounds.
Sourcefn slice(&self, range: impl RangeBounds<usize>) -> MemEntryIter<Self> ⓘ
fn slice(&self, range: impl RangeBounds<usize>) -> MemEntryIter<Self> ⓘ
Iterate over a range of memory entries
Sourcefn iter(&self) -> MemEntryIter<Self> ⓘ
fn iter(&self) -> MemEntryIter<Self> ⓘ
Iterate over all memory entries
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.