[−][src]Struct susywasmi::MemoryRef
Reference to a memory (See MemoryInstance
for details).
This reference has a reference-counting semantics.
Methods from Deref<Target = MemoryInstance>
pub fn initial(&self) -> Pages
[src]
Returns number of pages this MemoryInstance
was created with.
pub fn maximum(&self) -> Option<Pages>
[src]
Returns maximum amount of pages this MemoryInstance
can grow to.
Returns None
if there is no limit set.
Maximum memory size cannot exceed 65536
pages or 4GiB.
pub fn current_size(&self) -> Pages
[src]
Returns current linear memory size.
Maximum memory size cannot exceed 65536
pages or 4GiB.
Example
To convert number of pages to number of bytes you can use the following code:
use susywasmi::MemoryInstance; use susywasmi::memory_units::*; let memory = MemoryInstance::alloc(Pages(1), None).unwrap(); let byte_size: Bytes = memory.current_size().into(); assert_eq!( byte_size, Bytes(65536), );
pub fn get_value<T: LittleEndianConvert>(&self, offset: u32) -> Result<T, Error>
[src]
Get value from memory at given offset.
pub fn get(&self, offset: u32, size: usize) -> Result<Vec<u8>, Error>
[src]
Copy data from memory at given offset.
This will allocate vector for you.
If you can provide a mutable slice you can use get_into
.
pub fn get_into(&self, offset: u32, target: &mut [u8]) -> Result<(), Error>
[src]
Copy data from given offset in the memory into target
slice.
Errors
Returns Err
if the specified region is out of bounds.
pub fn set(&self, offset: u32, value: &[u8]) -> Result<(), Error>
[src]
Copy data in the memory at given offset.
pub fn set_value<T: LittleEndianConvert>(
&self,
offset: u32,
value: T
) -> Result<(), Error>
[src]
&self,
offset: u32,
value: T
) -> Result<(), Error>
Copy value in the memory at given offset.
pub fn grow(&self, additional: Pages) -> Result<Pages, Error>
[src]
Increases the size of the linear memory by given number of pages. Returns previous memory size if succeeds.
Errors
Returns Err
if attempted to allocate more memory than permited by the limit.
pub fn copy(
&self,
src_offset: usize,
dst_offset: usize,
len: usize
) -> Result<(), Error>
[src]
&self,
src_offset: usize,
dst_offset: usize,
len: usize
) -> Result<(), Error>
Copy contents of one memory region to another.
Semantically equivalent to memmove
.
Errors
Returns Err
if either of specified regions is out of bounds.
pub fn copy_nonoverlapping(
&self,
src_offset: usize,
dst_offset: usize,
len: usize
) -> Result<(), Error>
[src]
&self,
src_offset: usize,
dst_offset: usize,
len: usize
) -> Result<(), Error>
Copy contents of one memory region to another (non-overlapping version).
Semantically equivalent to memcpy
.
but returns Error if source overlaping with destination.
Errors
Returns Err
if:
- either of specified regions is out of bounds,
- these regions overlaps.
pub fn clear(&self, offset: usize, new_val: u8, len: usize) -> Result<(), Error>
[src]
Fill the memory region with the specified value.
Semantically equivalent to memset
.
Errors
Returns Err
if the specified region is out of bounds.
pub fn zero(&self, offset: usize, len: usize) -> Result<(), Error>
[src]
Fill the specified memory region with zeroes.
Errors
Returns Err
if the specified region is out of bounds.
pub fn with_direct_access<R, F: FnOnce(&[u8]) -> R>(&self, f: F) -> R
[src]
Provides direct access to the underlying memory buffer.
Panics
Any call that requires write access to memory (such as set
, clear
, etc) made within
the closure will panic. Note that the buffer size may be arbitraty. Proceed with caution.
pub fn with_direct_access_mut<R, F: FnOnce(&mut Vec<u8>) -> R>(&self, f: F) -> R
[src]
Trait Implementations
impl Clone for MemoryRef
[src]
fn clone(&self) -> MemoryRef
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Deref for MemoryRef
[src]
type Target = MemoryInstance
The resulting type after dereferencing.
fn deref(&self) -> &MemoryInstance
[src]
impl Debug for MemoryRef
[src]
Auto Trait Implementations
Blanket Implementations
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,