Struct SharedLib

Source
pub struct SharedLib { /* private fields */ }
Expand description

Structure representing a shared library.

Implementations§

Source§

impl SharedLib

Source

pub unsafe fn new(lib_path: LibPath) -> Result<SharedLib, SharedLibError>

Create a new shared library from the given path.

§Safety

This function is unsafe because it loads a shared library, which is generally unsafe as it is a foregin code.

Source

pub unsafe fn get_fn<T>( &self, fn_name: &str, ) -> Result<SharedLibFn<'_, T>, SharedLibError>

Get a function by name from the shared library.

§Safety

This function is unsafe because it loads a function from the shared library, which is generally unsafe as it is a foregin code.

§Example
use std::path::PathBuf;
use shared_lib::*;
unsafe {
    let lib_path = LibPath::new(PathBuf::from("path/to/shared/library"), "shared_library".into());
    let lib = SharedLib::new(lib_path).expect("Failed to load shared library");
    let add_fn = lib.get_fn::<fn(usize, usize) -> usize>("add").expect("Failed to get 'add' function from shared library");
    let result = add_fn.run(1, 2);
}

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.