8个版本 (4个稳定版)
1.3.0 | 2023年11月29日 |
---|---|
1.2.0 | 2023年3月24日 |
1.0.0 | 2020年2月23日 |
0.2.0 | 2017年12月10日 |
0.1.3 | 2017年12月9日 |
#73 在 过程宏 中
每月44次 下载
用于 unique_type_id_workspace
7KB
unique-type-id
一个用于为Rust类型生成唯一ID的Rust过程宏crate。
它做什么?
它简单地为类型实现一个只包含一个方法的trait - id() -> TypeId
,该方法返回一个唯一的正数。对于ID生成,过程宏读取名为"types.toml"的文件并查找其中的类型名称。您也可以使用UniqueTypeIdFile
属性指定另一个文件名。更详细地说
- 过程宏读取类型上的属性。
- 如果没有属性,它使用
types.toml
文件名作为类型文件名,否则使用指定的文件名。 - 对于每个使用宏的类型,它会尝试在类型文件中找到类型名称。如果找到了,它会返回它的ID,否则返回可用的ID。阅读测试可以帮助您理解这一点。
用法
- 在您的
Cargo.toml
中将unique-type-id
添加为依赖项
[dependencies]
unique-type-id = "1"
- 创建一个结构体或枚举并使用此trait
#[test]
fn unique_simple() {
use unique_type_id::UniqueTypeId;
#[derive(UniqueTypeId)]
struct Test1;
#[derive(UniqueTypeId)]
struct Test2;
assert_eq!(Test1::id().0, 1u64);
assert_eq!(Test2::id().0, 2u64);
}
这将生成一个类型文件(如果尚未创建),并将从0
开始的ID放置在未找到的类型中。这就是当您为类型预定义了ID集合时的样子
#[test]
fn unique_different_file() {
use unique_type_id::UniqueTypeId;
#[derive(UniqueTypeId)]
#[UniqueTypeIdFile = "types2.toml"]
struct Test1;
#[derive(UniqueTypeId)]
#[UniqueTypeIdFile = "types2.toml"]
struct Test2;
assert_eq!(Test1::id().0, 115u64);
assert_eq!(Test2::id().0, 232u64);
}
在这里,我们通过创建types2.toml
文件手动设置类型的ID。
选项
UniqueTypeIdFile
- 允许指定写入/读取ID的文件名。UniqueTypeIdType
- 允许更改ID数字类型从默认的u64
到用户首选的类型。UniqueTypeIdStart
- 允许为类型设置起始ID号码。如果类型布局文件非常知名并且可以保证不会发生冲突,则可以用来。
UniqueTypeIdFile
#[derive(UniqueTypeId)]
#[UniqueTypeIdFile = "types2.toml"]
struct Test1;
UniqueTypeIdType
#[derive(UniqueTypeId)]
#[UniqueTypeIdType = "i16"]
struct Test;
UniqueTypeIdStart
#[derive(UniqueTypeId)]
#[UniqueTypeIdStart = "23"]
struct Test;
备注
默认和自定义类型文件是在调用 cargo build
的目录相对路径下搜索的。
许可证
本项目受MIT许可证许可。
依赖项
~0.3–1MB
~20K SLoC