[−][src]Crate pergola
This is a small crate that provides a generic unital-join-semilattice type
- (hereafter: "lattice") along with a few common instances.
- Lattices are defined in two separate pieces: a definition trait
LatticeDef
that provides the type-and-functions for a given lattice and a- user interface struct
LatticeElt
that's parameterized by aLatticeDef
- and provides convenient methods to work with (including impls of standard
- Rust operator traits).
- This unusual split exists because many types have multiple equally viable
- lattices you can build on them (eg. u32-with-min or u32-with-max) and we want
- to avoid both coupling any given lattice definition to the type or
- accidentally inheriting an impl for any of the type's "standard semantics" as
- the lattice semantics, eg. we don't want to inherit u32's standard partial
- order as any lattice's partial order, unless explicitly building such a
- lattice.
Structs
LatticeElt | Write code that uses lattices over this type, and it will delegate
to the functions of the parameter |
Traits
LatticeDef | Implement this trait on a (typically vacuous) type to define a specific lattice as a type-with-some-choice-of-operators. |