wasmtime

Struct MemoryTypeBuilder

source
pub struct MemoryTypeBuilder { /* private fields */ }
Available on crate feature runtime only.
Expand description

A builder for MemoryTypes.

A new builder can be constructed via its Default implementation.

When you’re done configuring, get the underlying MemoryType by calling the build method.

§Example

use wasmtime::MemoryTypeBuilder;

let memory_type = MemoryTypeBuilder::new()
    // Set the minimum size, in pages.
    .min(4096)
    // Set the maximum size, in pages.
    .max(Some(4096))
    // Set the page size to 1 byte (aka 2**0).
    .page_size_log2(0)
    // Get the underlying memory type.
    .build()?;

Implementations§

source§

impl MemoryTypeBuilder

source

pub fn new() -> MemoryTypeBuilder

Create a new builder for a MemoryType with the default settings.

By default memory types have the following properties:

  • The minimum memory size is 0 pages.
  • The maximum memory size is unspecified.
  • Memories use 32-bit indexes.
  • The page size is 64KiB.

Each option can be configued through the methods on the returned builder.

source

pub fn min(&mut self, minimum: u64) -> &mut Self

Set the minimum size, in units of pages, for the memory type being built.

The default minimum is 0.

source

pub fn max(&mut self, maximum: Option<u64>) -> &mut Self

Set the maximum size, in units of pages, for the memory type being built.

The default maximum is None.

source

pub fn memory64(&mut self, memory64: bool) -> &mut Self

Set whether this is a 64-bit memory or not.

If a memory is not a 64-bit memory, then it is a 32-bit memory.

The default is false, aka 32-bit memories.

Note that 64-bit memories are part of the memory64 proposal for WebAssembly which is not fully standardized yet.

source

pub fn shared(&mut self, shared: bool) -> &mut Self

Set the sharedness for the memory type being built.

The default is false, aka unshared.

Note that shared memories are part of the threads proposal for WebAssembly which is not fully standardized yet.

source

pub fn page_size_log2(&mut self, page_size_log2: u8) -> &mut Self

Set the log base 2 of the page size, in bytes, for the memory type being built.

The default value is 16, which results in the default Wasm page size of 64KiB (aka 216 or 65536).

Other than 16, the only valid value is 0, which results in a page size of one byte (aka 20). Single-byte page sizes can be used to get fine-grained control over a Wasm memory’s resource consumption and run Wasm in embedded environments with less than 64KiB of RAM, for example.

Future extensions to the core WebAssembly language might relax these constraints and introduce more valid page sizes, such as any power of two between 1 and 65536 inclusive.

Note that non-default page sizes are part of the custom-page-sizes proposal for WebAssembly which is not fully standardized yet.

source

pub fn build(&self) -> Result<MemoryType>

Get the underlying memory type that this builder has been building.

§Errors

Returns an error if the configured memory type is invalid, for example if the maximum size is smaller than the minimum size.

Trait Implementations§

source§

impl Default for MemoryTypeBuilder

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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
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.