Struct SimpleVolAddr

Source
pub struct SimpleVolAddr<T> { /* private fields */ }
Expand description

Represents a simple MMIO address that can be safely read or written.

Unlike with raw pointers, this type favors unsafe construction and then assumes that all usage is safe once the value has been constructed.

The convention is that addresses using this type are “plain” addresses.

  • Reads will just get the current value (without any other side effect).
  • Writes will set a new value without changing any other memory of the system (though usually there’s a hardware side effect).
  • If you perform a write, and then you immediately perform a read, you’ll read back exactly whatever you just wrote (the same as with normal memory).

For addresses where there’s anything weird going on (read-only, write-only, read and write represent different effects, etc) then other volatile address types are used.

Note: values of this type can safely alias one another.

Implementations§

Source§

impl<T> SimpleVolAddr<T>

Source

pub fn read(&self) -> T
where T: Copy,

Reads the current value at the address.

Source

pub fn write(&self, t: T)
where T: Copy,

Writes a new value to the address.

Trait Implementations§

Source§

impl<T: Clone> Clone for SimpleVolAddr<T>

Source§

fn clone(&self) -> SimpleVolAddr<T>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for SimpleVolAddr<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> PartialEq for SimpleVolAddr<T>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: Copy> Copy for SimpleVolAddr<T>

Source§

impl<T> Eq for SimpleVolAddr<T>

Auto Trait Implementations§

§

impl<T> Freeze for SimpleVolAddr<T>

§

impl<T> RefUnwindSafe for SimpleVolAddr<T>
where T: RefUnwindSafe,

§

impl<T> Send for SimpleVolAddr<T>
where T: Send,

§

impl<T> Sync for SimpleVolAddr<T>
where T: Sync,

§

impl<T> Unpin for SimpleVolAddr<T>
where T: Unpin,

§

impl<T> UnwindSafe for SimpleVolAddr<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.