libnode_rs 0.0.2

Library embedding Nodejs (libnode) within Rust
Documentation
use std::sync::OnceLock;

#[cfg(not(windows))]
pub type DynSymbol<T> = libloading::os::unix::Symbol<T>;

#[cfg(windows)]
pub type DynSymbol<T> = libloading::os::windows::Symbol<T>;

#[cfg(not(windows))]
pub type DynLibrary = libloading::os::unix::Library;

#[cfg(windows)]
pub type DynLibrary = libloading::os::windows::Library;

static LIBNODE: OnceLock<DynLibrary> = OnceLock::new();

pub fn libnode() -> &'static DynLibrary {
  LIBNODE.get_or_init(|| {
    let libnode_path = std::env::var("LIBNODE_PATH").expect("$LIBNODE_PATH not set");
    unsafe { DynLibrary::new(libnode_path).expect("failed to load libnode") }
  })
}

pub fn libnode_sym<T>(symbol: &[u8]) -> DynSymbol<T> {
  unsafe { libnode().get(symbol.as_ref()) }.expect("Unable to find symbol in library")
}