pub struct MemoryTypeBuilder { /* private fields */ }
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::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
impl MemoryTypeBuilder
Sourcepub fn new() -> MemoryTypeBuilder
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.
Sourcepub fn min(&mut self, minimum: u64) -> &mut MemoryTypeBuilder
pub fn min(&mut self, minimum: u64) -> &mut MemoryTypeBuilder
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 MemoryTypeBuilder
pub fn max(&mut self, maximum: Option<u64>) -> &mut MemoryTypeBuilder
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 MemoryTypeBuilder
pub fn memory64(&mut self, memory64: bool) -> &mut MemoryTypeBuilder
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 MemoryTypeBuilder
pub fn page_size_log2(&mut self, page_size_log2: u8) -> &mut MemoryTypeBuilder
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.