Macro rustler_sys::slice_args
source · [−]macro_rules! slice_args {
($f:expr) => { ... };
}
Expand description
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
use rustler_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)
}
}
}