#type-level #generic #heterogeneous #binary #natural-numbers

nightly shoggoth

Generic and type-level programming for Rust

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

MIT license

46KB
1.5K SLoC

shoggoth.rs

Generic and type-level programming for Rust

build status

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

  1. Rust
  2. Cargo

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.

Dependencies