Crate variyak[][src]

This crate provides a macro call_variadic which can be used to construct boilerplate code to call variadic functions using data from a container such as a Vec.

Example

    let data = vec![1, 2];
    call_variadic!(
        my_func(arg, ...)   // func
        data,               // container
        n,                  // index
        data[n],            // expand
        2,                  // limit
    );

    // Generates:
    //     let container_len = data.len();
    //     match container_len {
    //         0 => my_func(arg),
    //         1 => my_func(arg, {
    //             let n = 0;
    //             data[n]
    //         }),
    //         2 => my_func(
    //             arg,
    //             {
    //                 let n = 0;
    //                 data[n]
    //             },
    //             {
    //                 let n = 1;
    //                 data[n]
    //             },
    //         ),
    //         _ => panic!("expected container size of: 0..=2 got data.len(): {}", container_len)
    //         )),
    //     }

Modules

export

Macros

call_variadic

Call a variadic function given a container