Struct wasmtime::MemoryTypeBuilder
source · pub struct MemoryTypeBuilder { /* private fields */ }
runtime
only.Expand description
A builder for MemoryType
s.
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::default()
// 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
impl MemoryTypeBuilder
sourcepub fn min(&mut self, minimum: u64) -> &mut Self
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
.
sourcepub fn max(&mut self, maximum: Option<u64>) -> &mut Self
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
.
sourcepub fn memory64(&mut self, memory64: bool) -> &mut Self
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.
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.
sourcepub fn page_size_log2(&mut self, page_size_log2: u8) -> &mut Self
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.
sourcepub fn build(&self) -> Result<MemoryType>
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.