#list #macro #object #function #wrap #compile-time

wrapped-list

宏,用于在编译时将对象、函数或另一个宏包裹列表元素

2 个稳定版本

1.0.1 2023 年 3 月 18 日

#2637Rust 模式

每月 24 次下载

MIT/Apache

12KB
169

wrapped-list

Build Crate License

此软件包提供宏,允许您在编译时创建被对象、函数或另一个宏包裹的元素列表。查看 文档

wrapped_list![Box::new; value_1, value_2, ...]

展开为

[Box::new(value_1), Box::new(value_2), ...]

使用此工具您可以

示例

使用元组结构体或枚举包裹值

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]);

无运行时依赖