wasmtime

Trait LinearMemory

source
pub unsafe trait LinearMemory:
    Send
    + Sync
    + 'static {
    // Required methods
    fn byte_size(&self) -> usize;
    fn byte_capacity(&self) -> usize;
    fn grow_to(&mut self, new_size: usize) -> Result<()>;
    fn as_ptr(&self) -> *mut u8;
}
Available on crate feature runtime only.
Expand description

A linear memory. This trait provides an interface for raw memory buffers which are used by wasmtime, e.g. inside [‘Memory’]. Such buffers are in principle not thread safe. By implementing this trait together with MemoryCreator, one can supply wasmtime with custom allocated host managed memory.

§Safety

The memory should be page aligned and a multiple of page size. To prevent possible silent overflows, the memory should be protected by a guard page. Additionally the safety concerns explained in [‘Memory’], for accessing the memory apply here as well.

Note that this is a relatively new and experimental feature and it is recommended to be familiar with wasmtime runtime code to use it.

Required Methods§

source

fn byte_size(&self) -> usize

Returns the number of allocated bytes which are accessible at this time.

source

fn byte_capacity(&self) -> usize

Returns byte capacity of this linear memory’s current allocation.

Growth up to this value should not relocate the linear memory base pointer.

source

fn grow_to(&mut self, new_size: usize) -> Result<()>

Grows this memory to have the new_size, in bytes, specified.

Returns Err if memory can’t be grown by the specified amount of bytes. The error may be downcastable to std::io::Error. Returns Ok if memory was grown successfully.

source

fn as_ptr(&self) -> *mut u8

Return the allocated memory as a mutable pointer to u8.

Implementors§