variadiz

Crates.iovariadiz
lib.rsvariadiz
version1.1.1
sourcesrc
created_at2024-04-29 06:18:05.145495
updated_at2024-05-10 09:04:41.510928
descriptionVariadic function support for rust
homepage
repositoryhttps://github.com/NichtsHsu/variadiz
max_upload_size
id1223869
size25,381
Nihil (NichtsHsu)

documentation

https://docs.rs/variadiz

README

variadiz

Variadic function support for Rust.

Install

cargo add tuplez variadiz

Example

use variadiz::*;

#[variadic]
fn print<T, U>(mut counter: usize, non_variadic: T, others: Option<U>)
where
    T: std::fmt::Display,
    U: std::fmt::Debug,
{
    #[va_expand_ref(mut counter: usize)]
    {
        println!("{counter}: {:?}", others);
        *counter += 1;
    }
    #[va_expand_mut]
    {
        others.take();
    }
    #[va_expand(mut counter: usize, non_variadic: T)]
    {
        println!("[{non_variadic}] {counter}: {:?}", others);
        *counter += 1;
    }
}

print(
    0,
    20240429,
    va_args!(Some("hello"), Some(vec![1, 2, 3]), Some('e')),
);

Outputs:

0: Some("hello")
1: Some([1, 2, 3])
2: Some('e')
[20240429] 3: None
[20240429] 4: None
[20240429] 5: None

Check the documentation page for details.

Commit count: 32

cargo fmt