rustler 0.39.0

Safe Rust wrappers for creating Erlang NIF functions
Documentation
use crate::sys::{c_char, c_int, c_uint, ErlNifEnv, ErlNifFunc, ErlNifTerm};

pub struct Nif {
    pub name: *const c_char,
    pub arity: c_uint,
    pub flags: c_uint,
    // pub func: DEF_NIF_FUNC,
    pub raw_func: unsafe extern "C" fn(
        nif_env: *mut ErlNifEnv,
        argc: c_int,
        argv: *const ErlNifTerm,
    ) -> ErlNifTerm,
}

impl Nif {
    pub fn get_def(&self) -> ErlNifFunc {
        ErlNifFunc {
            arity: self.arity,
            flags: self.flags,
            function: self.raw_func,
            name: self.name,
        }
    }
}

unsafe impl Sync for Nif {}

inventory::collect!(Nif);