1 个不稳定版本
0.5.5 | 2024年7月23日 |
---|
1576 在 过程宏 中
每月 下载量 156
在 4 个crate中使用(通过 lattices)
21KB
466 行
#[derive(Lattice)]
宏
多个格子的结构可以形成一个 积 格子。这种情况的最简单例子是 Pair
格子,它是两个子格子的积。对于两个以上的格子,或者为了提高可读性,用户可以创建自己的积格子结构体,其中每个字段都是一个子格子,并使用 #[derive(Lattice)]
宏来自动推导格子特性。
推导 Merge
、PartialEq
、PartialOrd
、LatticeOrd
、IsBot
、IsTop
和 LatticeFrom
,因此也推导了 Lattice
。或者可以单独推导特性:#[derive(Merge, LatticeOrd, IsBot, IsTop, LatticeFrom)]
。注意,LatticeOrd
也推导了 PartialEq
和 PartialOrd
。
请注意,所有字段必须是格类型。如果任何字段不能是格类型,则 where
子句将阻止特质的实现编译。
这些 derive 宏将创建一组通用的泛型,以允许不同类型之间的转换和合并。例如,给定以下结构体
#[derive(Lattice)]
struct MyLattice<KeySet, Epoch>
where
KeySet: Collection,
Epoch: Ord,
{
keys: SetUnion<KeySet>,
epoch: Max<Epoch>,
}
将创建以下形式的 derive 宏 impl
impl<KeySet, Epoch, KeySetOther, EpochOther>
Merge<MyLattice<KeySetOther, EpochOther>> for MyLattice<KeySet, Epoch>
where
KeySet: Collection,
Epoch: Ord,
KeySetOther: Collection,
EpochOther: Ord,
{
// ...
}
依赖项
~3MB
~57K SLoC