Skip to content
Generic and type-level programming in Rust
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
macros
src
.gitignore
.travis.yml
Cargo.toml
LICENSE
README.md

README.md

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

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.

You can’t perform that action at this time.