2个不稳定版本
0.2.0 | 2023年6月30日 |
---|---|
0.1.0 | 2021年5月31日 |
#1010 in Rust模式
34 每月下载量
19KB
399 行
typemap-meta
Enlightware®软件。
概述
这是一个简单的编译时(因此称为meta)推导宏,用于创建类型到值的映射(因此称为typemap)。与执行运行时查找的crate(如typemap
或type-map
)不同,这种方法通过使用推导宏和泛型来换取编译时安全性和更快的执行速度。
这个crate与no_std
兼容。
使用方法
要使用这个crate,首先将其添加到您的Cargo.toml
[dependencies]
typemap-meta = "0.2"
然后,您可以创建一个包含不同异构类型的元组结构体,并推导出Typemap
,然后使用get!
宏(Typemap::Get
的语法糖)
#[derive(Typemap)]
struct Test(i32, f32);
let t = Test(1, 2.0);
assert_eq!(*get!(t, i32), 1);
assert_eq!(*get!(t, f32), 2.0);
还提供了可变版本
#[derive(Typemap)]
#[typemap_mut]
struct Test(i32, f32);
let mut t = Test(1, 2.0);
*get_mut!(t, i32) = 3;
*get_mut!(t, f32) = 4.0;
assert_eq!(*get!(t, i32), 3);
assert_eq!(*get!(t, f32), 4.0);
crate结构
由于目前过程宏必须在它们自己的crate中定义(参见文档),我们有两个crate:typemap-meta
和typemap-meta-derive
,前者从后者导出宏。您的项目中只需要导入前者。
许可证
以下任一许可证下授权:
- Apache License 2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任您选择。
依赖关系
~1.5MB
~36K SLoC