Struct PassFatPointerAndRead

Source
pub struct PassFatPointerAndRead<T>(/* private fields */);
Expand description

Pass a value into the host by a fat pointer.

This casts the value into a &[u8] and passes a pointer to that byte blob and its length to the host. Then the host reads that blob and converts it into an owned type and passes it (either as an owned type or as a reference) to the host function.

Raw FFI type: u64 (a fat pointer; upper 32 bits is the size, lower 32 bits is the pointer)

Trait Implementations§

Source§

impl<'a> FromFFIValue<'a> for PassFatPointerAndRead<&'a [u8]>

Source§

type Owned = Vec<u8>

The owned inner type.
Source§

fn from_ffi_value( context: &mut dyn FunctionContext, arg: Self::FFIType, ) -> Result<Self::Owned>

Creates Self::Owned from the given arg received through the FFI boundary from the runtime.
Source§

fn take_from_owned(owned: &'a mut Self::Owned) -> Self::Inner

Creates Self::Inner from an owned value.
Source§

fn write_back_into_runtime( _value: Self::Owned, _context: &mut dyn FunctionContext, _arg: Self::FFIType, ) -> Result<()>

Write back a modified value back into the runtime’s memory. Read more
Source§

impl<'a> FromFFIValue<'a> for PassFatPointerAndRead<&'a str>

Source§

type Owned = String

The owned inner type.
Source§

fn from_ffi_value( context: &mut dyn FunctionContext, arg: Self::FFIType, ) -> Result<Self::Owned>

Creates Self::Owned from the given arg received through the FFI boundary from the runtime.
Source§

fn take_from_owned(owned: &'a mut Self::Owned) -> Self::Inner

Creates Self::Inner from an owned value.
Source§

fn write_back_into_runtime( _value: Self::Owned, _context: &mut dyn FunctionContext, _arg: Self::FFIType, ) -> Result<()>

Write back a modified value back into the runtime’s memory. Read more
Source§

impl<'a> FromFFIValue<'a> for PassFatPointerAndRead<Vec<u8>>

Source§

type Owned = Vec<u8>

The owned inner type.
Source§

fn from_ffi_value( context: &mut dyn FunctionContext, arg: Self::FFIType, ) -> Result<Self::Owned>

Creates Self::Owned from the given arg received through the FFI boundary from the runtime.
Source§

fn take_from_owned(owned: &'a mut Self::Owned) -> Self::Inner

Creates Self::Inner from an owned value.
Source§

fn write_back_into_runtime( _value: Self::Owned, _context: &mut dyn FunctionContext, _arg: Self::FFIType, ) -> Result<()>

Write back a modified value back into the runtime’s memory. Read more
Source§

impl<T> RIType for PassFatPointerAndRead<T>

Source§

type FFIType = u64

The raw FFI type that is used to pass Self through the host <-> runtime boundary.
Source§

type Inner = T

The inner type without any serialization strategy wrapper.

Auto Trait Implementations§

§

impl<T> Freeze for PassFatPointerAndRead<T>

§

impl<T> RefUnwindSafe for PassFatPointerAndRead<T>
where T: RefUnwindSafe,

§

impl<T> Send for PassFatPointerAndRead<T>
where T: Send,

§

impl<T> Sync for PassFatPointerAndRead<T>
where T: Sync,

§

impl<T> Unpin for PassFatPointerAndRead<T>
where T: Unpin,

§

impl<T> UnwindSafe for PassFatPointerAndRead<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> MaybeRefUnwindSafe for T
where T: RefUnwindSafe,