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::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 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.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for MemoryTypeBuilder
impl RefUnwindSafe for MemoryTypeBuilder
impl Send for MemoryTypeBuilder
impl Sync for MemoryTypeBuilder
impl Unpin for MemoryTypeBuilder
impl UnwindSafe for MemoryTypeBuilder
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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