Skip to main content

Memory

Struct Memory 

Source
pub struct Memory {
    pub values: Vec<Value>,
}
Expand description

§A linear memory, freely addressable per word

The memory can be accessed from a script through the read and write operators.

Aside from this, the stack is an important communication channel between script and host. Please refer to Eval’s memory field for more information on that.

§Constructing a Memory instance

By default, Memory has a size of 1024 words and is initially empty. This is controlled by its Default implementation.

If you want to override this size, you can do so by overwriting the values field with a Vec of the desired length.

Fields§

§values: Vec<Value>

§The values in the memory

Implementations§

Source§

impl Memory

Source

pub fn read(&self, address: u32) -> Result<Value, InvalidAddress>

§Read the value at the provided address
Source

pub fn write( &mut self, address: u32, value: Value, ) -> Result<(), InvalidAddress>

§Write a value to an address
Source

pub fn to_i32_slice(&self) -> &[i32]

§Access the memory as a slice of i32 values
Source

pub fn to_u32_slice(&self) -> &[u32]

§Access the memory as a slice of u32 values

Trait Implementations§

Source§

impl Debug for Memory

Source§

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

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

impl Default for Memory

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> 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.