Skip to main content

LibraryEntry

Struct LibraryEntry 

Source
pub struct LibraryEntry { /* private fields */ }
Available on crate feature libloading only.
Expand description

An EntryProvider which loads an entry from a dynamic library file.

This uses the libloading library under the hood. It will not be available if the associated libloading Cargo feature of clack-host is not enabled.

Implementations§

Source§

impl LibraryEntry

Source

pub unsafe fn load_from_path( path: impl AsRef<OsStr>, ) -> Result<Self, PluginEntryError>

Loads a CLAP entry from a dynamic library file located at the given path.

§Errors

This function will return an error if library file could not be loaded, if the clap_entry symbol could not be extracted from the given library, or if the symbol’s value is NULL.

§Safety

This function loads an external library object file, which is inherently unsafe, as even just loading it can trigger any behavior in your application, including Undefined Behavior.

Additionally, users

Source

pub unsafe fn load_from_library( library: Library, ) -> Result<Self, PluginEntryError>

Wraps a given Library object to load a CLAP entry from.

This function will look for the standard clap_entry symbol to get the EntryDescriptor pointer from. If you need to load that pointer from another, non-standard symbol, see load_from_symbol_in_library.

§Errors

This function will return an error if the clap_entry symbol could not be extracted from the given library, or if the symbol’s value is NULL.

§Safety

Users of this function must ensure the symbol clap_entry in the given library is ABI compatible with a pointer to an EntryDescriptor.

Source

pub unsafe fn load_from_symbol_in_library( library: Library, symbol_name: &CStr, ) -> Result<Self, PluginEntryError>

Wraps a given Library object to load a CLAP entry from a given symbol it contains.

§Errors

This function will return an error if the symbol could not be extracted from the given library, or if the symbol’s value is NULL.

§Safety

Users of this function must ensure the given symbol symbol_name in the given library is ABI compatible with a pointer to an EntryDescriptor.

Trait Implementations§

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

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

fn try_from(value: U) -> Result<T, !>

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.