Struct wiggle::wasmtime::WasmtimeGuestMemory
source · pub struct WasmtimeGuestMemory<'a> { /* private fields */ }
Expand description
Lightweight wasmtime::Memory
wrapper so we can implement the
wiggle::GuestMemory
trait on it.
Implementations§
Trait Implementations§
source§impl GuestMemory for WasmtimeGuestMemory<'_>
impl GuestMemory for WasmtimeGuestMemory<'_>
source§fn base(&self) -> &[UnsafeCell<u8>]
fn base(&self) -> &[UnsafeCell<u8>]
Returns the base allocation of this guest memory, located in host
memory. Read more
source§fn has_outstanding_borrows(&self) -> bool
fn has_outstanding_borrows(&self) -> bool
Indicates whether any outstanding borrows are known to the
GuestMemory
. This function must be false
in order for it to be
safe to recursively call into a WebAssembly module, or to manipulate
the WebAssembly memory by any other means.Check if a region of linear memory has any shared borrows.
source§fn is_mut_borrowed(&self, r: Region) -> bool
fn is_mut_borrowed(&self, r: Region) -> bool
Check if a region of linear memory is exclusively borrowed. This is called during any
GuestPtr::read
or GuestPtr::write
operation to ensure that wiggle is not reading or
writing a region of memory which Rust believes it has exclusive access to.Shared borrow a region of linear memory. This is used when constructing a
GuestSlice
or GuestStr
. Those types will give Rust &
(shared reference) access
to the region of linear memory.source§fn mut_borrow(&self, r: Region) -> Result<BorrowHandle, GuestError>
fn mut_borrow(&self, r: Region) -> Result<BorrowHandle, GuestError>
Exclusively borrow a region of linear memory. This is used when constructing a
GuestSliceMut
or GuestStrMut
. Those types will give Rust &mut
access
to the region of linear memory, therefore, the GuestMemory
impl must
guarantee that at most one BorrowHandle
is issued to a given region,
GuestMemory::has_outstanding_borrows
is true for the duration of the
borrow, and that GuestMemory::is_mut_borrowed
of any overlapping region
is false for the duration of the borrow.Unborrow a previously borrowed shared region. As long as
GuestSlice
and
GuestStr
are implemented correctly, a shared BorrowHandle
should only be
unborrowed once.source§fn mut_unborrow(&self, h: BorrowHandle)
fn mut_unborrow(&self, h: BorrowHandle)
Unborrow a previously borrowed mutable region. As long as
GuestSliceMut
and
GuestStrMut
are implemented correctly, a mut BorrowHandle
should only be
unborrowed once.Check if the underlying memory is shared across multiple threads; e.g.,
with a WebAssembly shared memory.
impl Send for WasmtimeGuestMemory<'_>
impl Sync for WasmtimeGuestMemory<'_>
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for WasmtimeGuestMemory<'a>
impl<'a> Unpin for WasmtimeGuestMemory<'a>
impl<'a> !UnwindSafe for WasmtimeGuestMemory<'a>
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
Mutably borrows from an owned value. Read more