Struct extism::Plugin

source ·
pub struct Plugin {
    pub id: Uuid,
    /* private fields */
}
Expand description

Plugin contains everything needed to execute a WASM function

Fields§

§id: Uuid

A unique ID for each plugin

Implementations§

source§

impl Plugin

source

pub fn new<'a>( wasm: impl Into<WasmInput<'a>>, imports: impl IntoIterator<Item = Function>, with_wasi: bool ) -> Result<Plugin, Error>

Create a new plugin from a Manifest or WebAssembly module, and host functions. The with_wasi parameter determines whether or not the module should be executed with WASI enabled.

source

pub fn function_exists(&mut self, function: impl AsRef<str>) -> bool

Returns true if the given function exists, otherwise false

source

pub fn reset(&mut self) -> Result<(), Error>

Reset Extism runtime, this will invalidate all allocated memory

source

pub fn has_wasi(&self) -> bool

Determine if wasi is enabled

source

pub fn call<'a, 'b, T: ToBytes<'a>, U: FromBytes<'b>>( &'b mut self, name: impl AsRef<str>, input: T ) -> Result<U, Error>

Call a function by name with the given input, the return value is the output data returned by the plugin. The return type can be anything that implements FromBytes. This data will be invalidated next time the plugin is called.

§Arguments
  • name - A string representing the name of the export function to call
  • input - The input argument to the function. Type should implment ToBytes.
§Examples
// call takes a ToBytes and FromBytes type
// this function takes an &str and returns an &str
let output = plugin.call::<&str, &str>("greet", "Benjamin")?;
assert_eq!(output, "Hello, Benjamin!");
source

pub fn call_get_error_code<'a, 'b, T: ToBytes<'a>, U: FromBytes<'b>>( &'b mut self, name: impl AsRef<str>, input: T ) -> Result<U, (Error, i32)>

Similar to Plugin::call, but returns the Extism error code along with the Error. It is assumed if Ok(_) is returned that the error code was 0.

All Extism plugin calls return an error code, Plugin::call consumes the error code, while Plugin::call_get_error_code preserves it - this function should only be used when you need to inspect the actual return value of a plugin function when it fails.

source

pub fn cancel_handle(&self) -> CancelHandle

Get a CancelHandle, which can be used from another thread to cancel a running plugin

Trait Implementations§

source§

impl Debug for Plugin

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Send for Plugin

source§

impl Sync for Plugin

Auto Trait Implementations§

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> GetSetFdFlags for T

source§

fn get_fd_flags(&self) -> Result<FdFlags, Error>
where T: AsFilelike,

Query the “status” flags for the self file descriptor.
source§

fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>
where T: AsFilelike,

Create a new SetFdFlags value for use with set_fd_flags. Read more
source§

fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>
where T: AsFilelike,

Set the “status” flags for the self file descriptor. Read more
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> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Pointee for T

§

type Pointer = u32

source§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_> ) -> Result<(), Error>

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

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