Plugin

Struct Plugin 

Source
pub struct Plugin<'a, O: Send + Sync, I: Info> { /* private fields */ }
Expand description

Represents a loaded plugin instance.

A Plugin encapsulates all the information and functionality related to a single plugin, including its metadata, execution state, and available functions.

§Type Parameters

  • 'a - Lifetime parameter for references within the plugin
  • O - Output type for plugin functions (must implement Send + Sync)
  • I - Plugin information type (must implement Info trait)

§Fields

  • manager - Reference to the manager responsible for this plugin
  • info - Plugin metadata and configuration
  • is_load - Whether the plugin is currently loaded and ready for execution
  • requests - Functions that this plugin must implement at the request of the host
  • registry - Functions exposed by this plugin to other plugins or the host

Implementations§

Source§

impl<'a, O: Send + Sync, I: Info> Plugin<'a, O, I>

Source

pub const fn info(&self) -> &PluginInfo<I>

Returns information about this plugin.

§Returns

Returns a reference to the plugin’s metadata and configuration.

Source

pub const fn is_load(&self) -> bool

Checks if the plugin is currently loaded and ready for execution.

§Returns

Returns true if the plugin is loaded, false otherwise.

Source

pub const fn get_requests(&self) -> &Vec<Box<dyn Function<Output = O>>>

Returns the list of function requests this plugin must implement.

Function requests are functions that this plugin must implement at the request of the host. These are functions that the host can call on this plugin when needed.

§Returns

Returns a reference to the vector of function requests.

Source

pub fn call_request( &self, name: &str, args: &[Variable], ) -> Result<O, PluginCallRequestError>

Calls a function request by name with the given arguments.

This method searches through the plugin’s requests and executes the one matching the provided name. These are functions that the plugin implements for the host to call.

§Parameters
  • name - Name of the function request to call
  • args - Arguments to pass to the function
§Returns

Returns Result<O, PluginCallRequestError> containing the function result on success, or an error if the request is not found.

Source

pub const fn get_registry(&self) -> &Registry<O>

Returns the registry of functions exposed by this plugin.

The registry contains functions that this plugin makes available to other plugins or the host application.

§Returns

Returns a reference to the function registry.

Source

pub fn register_function<F>( &mut self, function: F, ) -> Result<(), PluginRegisterFunctionError>
where F: Function<Output = O> + 'static,

Registers a new function in this plugin’s registry.

This method adds a function to the plugin’s registry, making it available for other plugins or the host to call.

§Parameters
  • function - The function to register
§Returns

Returns Result<(), PluginRegisterFunctionError> indicating success or failure. Fails if a function with the same name is already registered.

Source

pub fn call_function( &self, name: &str, args: &[Variable], ) -> Result<O, PluginCallFunctionError>

Calls a function from this plugin’s registry by name.

This method searches through the plugin’s registry and executes the function matching the provided name.

§Parameters
  • name - Name of the function to call
  • args - Arguments to pass to the function
§Returns

Returns Result<O, PluginCallFunctionError> containing the function result on success, or an error if the function is not found.

Trait Implementations§

Source§

impl<O: Send + Sync, I: Info> Debug for Plugin<'_, O, I>

Source§

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

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

impl<O: Send + Sync, I: Info, ID: AsRef<str>> PartialEq<(ID, &Version)> for Plugin<'_, O, I>

Source§

fn eq(&self, (id, version): &(ID, &Version)) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<O: Send + Sync, I: Info> PartialEq<Bundle> for Plugin<'_, O, I>

Source§

fn eq(&self, _: &Bundle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<O: Send + Sync, I: Info> PartialEq<Depend> for Plugin<'_, O, I>

Source§

fn eq(&self, _: &Depend) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<O: Send + Sync, I: Info> PartialEq<Plugin<'_, O, I>> for Bundle

Source§

fn eq(&self, other: &Plugin<'_, O, I>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<O: Send + Sync, I: Info> PartialEq<Plugin<'_, O, I>> for Depend

Source§

fn eq(&self, other: &Plugin<'_, O, I>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<O: Send + Sync, I: Info> PartialEq for Plugin<'_, O, I>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<O: Send + Sync, I: Info, ID: AsRef<str>> PartialOrd<(ID, &Version)> for Plugin<'_, O, I>

Source§

fn partial_cmp(&self, (id, version): &(ID, &Version)) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<O: Send + Sync, I: Info> PartialOrd<Bundle> for Plugin<'_, O, I>

Source§

fn partial_cmp(&self, _: &Bundle) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<O: Send + Sync, I: Info> PartialOrd<Plugin<'_, O, I>> for Bundle

Source§

fn partial_cmp(&self, other: &Plugin<'_, O, I>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<O: Send + Sync, I: Info> PartialOrd for Plugin<'_, O, I>

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<O: Send + Sync, I: Info> Eq for Plugin<'_, O, I>

Auto Trait Implementations§

§

impl<'a, O, I> !Freeze for Plugin<'a, O, I>

§

impl<'a, O, I> !RefUnwindSafe for Plugin<'a, O, I>

§

impl<'a, O, I> Send for Plugin<'a, O, I>

§

impl<'a, O, I> Sync for Plugin<'a, O, I>

§

impl<'a, O, I> Unpin for Plugin<'a, O, I>
where I: Unpin,

§

impl<'a, O, I> !UnwindSafe for Plugin<'a, O, I>

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

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

Source§

type Output = T

Should always be Self
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.