2个稳定版本
1.0.1 | 2020年6月28日 |
---|---|
1.0.0 | 2019年9月13日 |
#1501 在 数据结构
用于 rcodec
10KB
132 代码行
pl-hlist
这个Rust库提供对异构列表(称为HList
)的支持。一个HList
是一个功能性强、类型安全的元组类似数据结构,可以包含不同类型的数据元素。
这个库有三个层级
- 由
HCons
和HNil
类型组成的基本HList
数据结构。 - 一个用于从一系列元素构建
HList
的hlist!
宏。 - 一个用于结构体的
HListSupport
插件/属性,当声明为结构体时,允许轻松地将结构体实例转换为/从HList
表示形式。
下一节将详细介绍这些层级的用法。
用法
在您的Cargo.toml
中添加依赖项
[dependencies]
pl-hlist = "1.0"
然后在您的crate中
use pl_hlist::*;
可以手动按如下方式构建一个HList
let x: HCons<u8, HCons<u32, HNil>> = HCons(1u8, HCons(666u32, HNil));
hlist!
宏提供了构建HList
的方便快捷方式
let x: HCons<u8, HCons<u32, HNil>> = hlist!(1u8, 666u32);
可以将自定义的HListSupport
derive 属性应用于结构体声明,以自动实现将该结构体转换为/从HList
表示形式的支持
#[derive(HListSupport)]
struct TestStruct {
foo: u8,
bar: u32
}
let hlist0 = hlist!(1u8, 666u32);
let s = TestStruct::from_hlist(hlist0);
assert_eq!(s.foo, 1u8);
assert_eq!(s.bar, 666u32);
let hlist1 = s.into_hlist();
assert_eq!(hlist0, hlist1);
许可证
pl-hlist
是在MIT许可证下分发的。请参阅LICENSE以获取更多详细信息。
依赖项
~1.5MB
~36K SLoC