variyak 0.2.0

macro to help call variadic functions given a container such as a Vec
Documentation
#![feature(c_variadic)]

use variyak::call_variadic;

fn main() {
    let data = vec![1, 2];
    let arg = 0;

    mod test {
        #[no_mangle]
        pub unsafe extern "C" fn my_func(_fixed: u32, mut _args: ...) -> bool {
            true
        }
    }

    unsafe {
        assert!(call_variadic!(test::my_func(arg, ...), data, n, data[n], 2));
    }

    unsafe {
        use test::my_func;
        assert!(call_variadic!(my_func(arg, ...), data, n, data[n], 2));
        assert!(call_variadic!(my_func(arg, ...), data, n, data[n], 2));
        assert!(call_variadic!(my_func(arg, arg, ..., arg), data, n, data[n], 2));
        assert!(call_variadic!(my_func(arg, ..., arg), data, n, data[n], 2));
        assert!(call_variadic!(my_func(arg, 42 + 27, ..., arg, 10usize), data, n, data[n], 2));
    };
}