19 releases
Uses old Rust 2015
0.0.19 | Feb 12, 2015 |
---|---|
0.0.18 | Feb 11, 2015 |
0.0.11 | Jan 31, 2015 |
#1459 in Rust patterns
Used in 2 crates
46KB
1.5K
SLoC
shoggoth.rs
Generic and type-level programming for Rust
It was a terrible, indescribable thing vaster than any subway train—a shapeless congeries of protoplasmic bubbles, faintly self-luminous, and with myriads of temporary eyes forming and un-forming as pustules of greenish light all over the tunnel-filling front that bore down upon us, crushing the frantic penguins and slithering over the glistening floor that it and its kind had swept so evilly free of all litter.
—H. P. Lovecraft, At The Mountains of Madness
Synopsis
This library implements generic and type-level programming functionality. It is heavily inspired by Miles Sabin's Shapeless for Scala.
Features
Current
- heterogeneous lists
- type-level operations (polyadic, curried, composable, higher-order)
- type-level bits and booleans
- type-level binary natural numbers and integers
- type-level lists (mappable with type-level operations)
- type-level list zippers
- type-level lenses
Future
- more functionality for working with hlists/tuples
- coproducts
- hlist/vinyl-style records
- type-level binary rationals
- type macros
Documentation
See the API documentation here.
Requirements
You can install both with the following:
$ curl -s https://static.rust-lang.org/rustup.sh | sudo sh
See Installing Rust for further details.
Usage
$ cargo build ## build library and binary
$ cargo test ## run tests in ./tests
$ cargo bench ## run benchmarks in ./benches
Discussion
There is an IRC channel on freenode (chat.freenode.net) at #epsilonz.