Macro erlang_nif_sys::slice_args [−][src]
macro_rules! slice_args { ($f:expr) => { ... }; }
Wrapper to deliver NIF args as Rust slice.
A macro wrapper that combines the argc and args parameters into a
more Rustic slice (&[ERL_NIF_TERM]
). On release builds this macro
incurs zero overhead.
Examples
#[macro_use] extern crate erlang_nif_sys; use erlang_nif_sys::*; use std::mem; nif_init!("mymod", [ ("native_add", 2, slice_args!(native_add)) ]); fn native_add(env: *mut ErlNifEnv, args: &[ERL_NIF_TERM]) -> ERL_NIF_TERM { unsafe { let mut a: c_int = mem::uninitialized(); let mut b: c_int = mem::uninitialized(); if args.len() == 2 && 0 != enif_get_int(env, args[0], &mut a) && 0 != enif_get_int(env, args[1], &mut b) { enif_make_int(env, a+b) } else { enif_make_badarg(env) } } }