Skip to main content

LibraryHandle

Struct LibraryHandle 

Source
pub struct LibraryHandle(/* private fields */);
Available on macOS only.
Expand description

A RAII wrapper around a dlopen handle.

Opens a dynamic library on construction and closes it on drop. After an explicit close, the destructor is disarmed.

Implementations§

Source§

impl LibraryHandle

Source

pub fn open(path: &CStr) -> Result<Self, LoadError>

Loads the dynamic library at path with RTLD_LAZY binding.

Returns a handle that keeps the library mapped until it is closed or dropped.

§Errors

Returns LoadError if the library cannot be loaded.

Source

pub unsafe fn symbol(&self, name: &CStr) -> Result<LibrarySymbol, LoadError>

Resolves a named symbol from the loaded library.

The returned LibrarySymbol is typically transmuted into a typed function pointer via core::mem::transmute.

§Safety

The caller must ensure that:

  • name identifies a symbol whose actual signature matches the type it will be transmuted to.
  • The resulting LibrarySymbol (or any pointer derived from it) is not used after this handle is closed or dropped.
§Errors

Returns LoadError if the symbol cannot be found in the library.

Source

pub unsafe fn close(self) -> Result<(), LoadError>

Explicitly closes the library handle and returns any error from dlclose.

After this call the destructor is disarmed; dropping the handle is a no-op.

§Errors

Returns LoadError if dlclose fails.

§Safety

The caller must ensure that no LibrarySymbol (or function pointer derived from one) obtained from this handle is used after this call returns.

Trait Implementations§

Source§

impl Debug for LibraryHandle

Source§

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

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

impl Drop for LibraryHandle

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for LibraryHandle

Source§

impl Sync for LibraryHandle

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 = 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.