pub struct Memory {
pub idx_type: IndexType,
pub limits: Limits,
pub shared: bool,
pub page_size_log2: u8,
}
Expand description
WebAssembly linear memory.
Fields§
§idx_type: IndexType
The type of the index used to access the memory.
limits: Limits
The limits constrain the minimum and optionally the maximum size of a memory. The limits are given in units of page size.
Whether the memory may be shared between multiple threads.
page_size_log2: u8
The log2 of this memory’s page size, in bytes.
By default the page size is 64KiB (0x10000; 2**16; 1<<16; 65536) but the
custom-page-sizes proposal allows opting into a page size of 1
.
Implementations§
source§impl Memory
impl Memory
sourcepub const DEFAULT_PAGE_SIZE: u32 = 65_536u32
pub const DEFAULT_PAGE_SIZE: u32 = 65_536u32
WebAssembly page sizes are 64KiB by default.
sourcepub const DEFAULT_PAGE_SIZE_LOG2: u8 = 16u8
pub const DEFAULT_PAGE_SIZE_LOG2: u8 = 16u8
WebAssembly page sizes are 64KiB (or 2**16
) by default.
sourcepub fn minimum_byte_size(&self) -> Result<u64, SizeOverflow>
pub fn minimum_byte_size(&self) -> Result<u64, SizeOverflow>
Returns the minimum size, in bytes, that this memory must be.
§Errors
Returns an error if the calculation of the minimum size overflows the
u64
return type. This means that the memory can’t be allocated but
it’s deferred to the caller to how to deal with that.
sourcepub fn maximum_byte_size(&self) -> Result<u64, SizeOverflow>
pub fn maximum_byte_size(&self) -> Result<u64, SizeOverflow>
Returns the maximum size, in bytes, that this memory is allowed to be.
Note that the return value here is not an Option
despite the maximum
size of a linear memory being optional in wasm. If a maximum size
is not present in the memory’s type then a maximum size is selected for
it. For example the maximum size of a 32-bit memory is 1<<32
. The
maximum size of a 64-bit linear memory is chosen to be a value that
won’t ever be allowed at runtime.
§Errors
Returns an error if the calculation of the maximum size overflows the
u64
return type. This means that the memory can’t be allocated but
it’s deferred to the caller to how to deal with that.
sourcepub fn max_size_based_on_index_type(&self) -> u64
pub fn max_size_based_on_index_type(&self) -> u64
Returns the maximum size memory is allowed to be only based on the index type used by this memory.
For example 32-bit linear memories return 1<<32
from this method.
Trait Implementations§
source§impl<'de> Deserialize<'de> for Memory
impl<'de> Deserialize<'de> for Memory
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Copy for Memory
impl Eq for Memory
impl StructuralPartialEq for Memory
Auto Trait Implementations§
impl Freeze for Memory
impl RefUnwindSafe for Memory
impl Send for Memory
impl Sync for Memory
impl Unpin for Memory
impl UnwindSafe for Memory
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.