2 stable releases
1.0.1 | Mar 18, 2023 |
---|
#2637 in Rust patterns
24 downloads per month
12KB
169 lines
wrapped-list
This crate provides macros which allow you to create lists of elements that are wrappped by an object, function, or another macro at compile time. Check out the documentation.
wrapped_list![Box::new; value_1, value_2, ...]
Expands to:
[Box::new(value_1), Box::new(value_2), ...]
With this you can:
- Wrap values with a tuple struct or enum
- Wrap values with an object or function
- Wrap values with a macro
Examples
Wrap values with a tuple struct or enum
use wrapped_list::wrapped_list;
#[derive(Debug, PartialEq, Eq)]
struct Wrapper(i32);
let wrapped_items = wrapped_list![Wrapper; 1, 2, 3, 4];
assert_eq!(wrapped_items, [Wrapper(1), Wrapper(2), Wrapper(3), Wrapper(4)]);
Wrap values with an object or function
use wrapped_list::wrapped_list;
let boxed_items = wrapped_list![Box::new; 1, 2, 3];
assert_eq!(boxed_items, [Box::new(1), Box::new(2), Box::new(3)])
use wrapped_list::wrapped_list;
let func = |x| x * 2;
let doubled = wrapped_list![func; 1, 2, 3];
assert_eq!(doubled, [2, 4, 6]);
Wrap values with a macro
use wrapped_list::wrapped_list;
macro_rules! add_one {
($e:expr) => {
$e + 1
};
}
let one_more = wrapped_list![add_one!; 1, 2, 3];
assert_eq!(one_more, [2, 3, 4]);