Struct node_testing::client::sc_executor::wasmi::MemoryRef [−]
pub struct MemoryRef(_);
Expand description
Reference to a memory (See MemoryInstance
for details).
This reference has a reference-counting semantics.
Methods from Deref<Target = MemoryInstance>
Returns maximum amount of pages this MemoryInstance
can grow to.
Returns None
if there is no limit set.
Maximum memory size cannot exceed 65536
pages or 4GiB.
pub fn current_size(&self) -> Pages
pub fn current_size(&self) -> Pages
Returns current linear memory size.
Maximum memory size cannot exceed 65536
pages or 4GiB.
Example
To convert number of pages to number of bytes you can use the following code:
use wasmi::MemoryInstance; use wasmi::memory_units::*; let memory = MemoryInstance::alloc(Pages(1), None).unwrap(); let byte_size: Bytes = memory.current_size().into(); assert_eq!( byte_size, Bytes(65536), );
pub fn get_value<T>(&self, offset: u32) -> Result<T, Error> where
T: LittleEndianConvert,
pub fn get_value<T>(&self, offset: u32) -> Result<T, Error> where
T: LittleEndianConvert,
Get value from memory at given offset.
Copy data from memory at given offset.
This will allocate vector for you.
If you can provide a mutable slice you can use get_into
.
Copy data from given offset in the memory into target
slice.
Errors
Returns Err
if the specified region is out of bounds.
Copy data in the memory at given offset.
Copy value in the memory at given offset.
Increases the size of the linear memory by given number of pages. Returns previous memory size if succeeds.
Errors
Returns Err
if attempted to allocate more memory than permited by the limit.
Copy contents of one memory region to another.
Semantically equivalent to memmove
.
Errors
Returns Err
if either of specified regions is out of bounds.
Copy contents of one memory region to another (non-overlapping version).
Semantically equivalent to memcpy
.
but returns Error if source overlaping with destination.
Errors
Returns Err
if:
- either of specified regions is out of bounds,
- these regions overlaps.
Fill the memory region with the specified value.
Semantically equivalent to memset
.
Errors
Returns Err
if the specified region is out of bounds.
Fill the specified memory region with zeroes.
Errors
Returns Err
if the specified region is out of bounds.
Set every byte in the entire linear memory to 0, preserving its size.
Might be useful for some optimization shenanigans.
pub fn with_direct_access<R, F>(&self, f: F) -> R where
F: FnOnce(&[u8]) -> R,
pub fn with_direct_access<R, F>(&self, f: F) -> R where
F: FnOnce(&[u8]) -> R,
pub fn with_direct_access_mut<R, F>(&self, f: F) -> R where
F: FnOnce(&mut [u8]) -> R,
pub fn with_direct_access_mut<R, F>(&self, f: F) -> R where
F: FnOnce(&mut [u8]) -> R,
pub fn direct_access(&'a self) -> impl AsRef<[u8]> + 'a
pub fn direct_access(&'a self) -> impl AsRef<[u8]> + 'a
Trait Implementations
type Target = MemoryInstance
type Target = MemoryInstance
The resulting type after dereferencing.
pub fn deref(&self) -> &MemoryInstance
pub fn deref(&self) -> &MemoryInstance
Dereferences the value.
Auto Trait Implementations
impl !RefUnwindSafe for MemoryRef
impl !UnwindSafe for MemoryRef
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self
The inverse inclusion map: attempts to construct self
from the equivalent element of its
superset. Read more
pub fn is_in_subset(&self) -> bool
pub fn is_in_subset(&self) -> bool
Checks if self
is actually part of its subset T
(and can be converted to it).
pub fn to_subset_unchecked(&self) -> SS
pub fn to_subset_unchecked(&self) -> SS
Use with care! Same as self.to_subset
but without any property checks. Always succeeds.
pub fn from_subset(element: &SS) -> SP
pub fn from_subset(element: &SS) -> SP
The inclusion map: converts self
to the equivalent element of its superset.
The counterpart to unchecked_from
.
Consume self to return an equivalent value of T
.
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
impl<T> MaybeDebug for T where
T: Debug,
impl<T> MaybeDebug for T where
T: Debug,