[][src]Struct wasmer_runtime::Memory

pub struct Memory { /* fields omitted */ }

A shared or unshared wasm linear memory.

A Memory represents the memory used by a wasm instance.

Methods

impl Memory[src]

pub fn new(desc: MemoryDescriptor) -> Result<Memory, CreationError>[src]

Create a new Memory from a MemoryDescriptor

Usage:

fn create_memory() -> Result<()> {
    let descriptor = MemoryDescriptor::new(Pages(10), None, false).unwrap();

    let memory = Memory::new(descriptor)?;
    Ok(())
}

pub fn descriptor(&self) -> MemoryDescriptor[src]

Return the MemoryDescriptor that this memory was created with.

pub fn grow(&self, delta: Pages) -> Result<Pages, GrowError>[src]

Grow this memory by the specified number of pages.

pub fn size(&self) -> Pages[src]

The size, in wasm pages, of this memory.

pub fn view<T>(&self) -> MemoryView<T, NonAtomically> where
    T: ValueType
[src]

Return a "view" of the currently accessible memory. By default, the view is unsynchronized, using regular memory accesses. You can force a memory view to use atomic accesses by calling the atomically method.

Notes:

This method is safe (as in, it won't cause the host to crash or have UB), but it doesn't obey rust's rules involving data races, especially concurrent ones. Therefore, if this memory is shared between multiple threads, a single memory location can be mutated concurrently without synchronization.

Usage:

// Without synchronization.
let view: MemoryView<u8> = memory.view();
for byte in view[0x1000 .. 0x1010].iter().map(Cell::get) {
    println!("byte: {}", byte);
}

// With synchronization.
let atomic_view = view.atomically();
for byte in atomic_view[0x1000 .. 0x1010].iter().map(|atom| atom.load(Ordering::SeqCst)) {
    println!("byte: {}", byte);
}

Trait Implementations

impl Clone for Memory[src]

impl Debug for Memory[src]

impl IsExport for Memory[src]

Auto Trait Implementations

impl !RefUnwindSafe for Memory

impl Send for Memory

impl Sync for Memory

impl Unpin for Memory

impl !UnwindSafe for Memory

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.