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