#typemap #macro-derive #meta-programming #类型到值映射

no-std typemap-meta

一个简单的编译时宏,用于创建类型到值的映射

2个不稳定版本

0.2.0 2023年6月30日
0.1.0 2021年5月31日

#1010 in Rust模式

34 每月下载量

MIT/Apache

19KB
399

typemap-meta

Crates.io Docs.rs Build Status

Enlightware®软件。

概述

这是一个简单的编译时(因此称为meta)推导宏,用于创建类型到值的映射(因此称为typemap)。与执行运行时查找的crate(如typemaptype-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-metatypemap-meta-derive,前者从后者导出宏。您的项目中只需要导入前者。

许可证

以下任一许可证下授权:

任您选择。

依赖关系

~1.5MB
~36K SLoC