Crates.io | wrapped-list |
lib.rs | wrapped-list |
version | 1.0.1 |
source | src |
created_at | 2023-03-18 11:09:43.897654 |
updated_at | 2023-03-18 23:37:40.464976 |
description | Macro for wrapping elements of a list with an object, function, or another macro at compile time |
homepage | |
repository | https://github.com/hunterlawson/wrapped-list |
max_upload_size | |
id | 813669 |
size | 12,887 |
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:
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)]);
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]);
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]);