2014-07-17 06:47:44 -04:00
# Awesome Rust
2014-07-17 09:05:35 -04:00
A curated list of awesome Rust code and resources. Inspired by the other [awesome lists ](https://github.com/bayandin/awesome-awesomeness ).
2014-07-17 07:02:40 -04:00
2014-10-13 12:20:56 -04:00
Only projects that are stable and useful to users are added. Projects that do not compile with Rust-nightly for a longer time are moved to [UNSTABLE.md ](UNSTABLE.md ).
2014-07-18 03:02:27 -04:00
2014-07-17 07:02:40 -04:00
- [Awesome Rust ](#awesome-rust )
2014-07-17 09:05:35 -04:00
- [Code ](#code )
2014-07-18 02:24:50 -04:00
- [Audio ](#audio )
2014-07-20 10:24:03 -04:00
- [Build system ](#build-system )
2014-07-26 06:38:16 -04:00
- [Command-line argument parsing ](#command-line-argument-parsing )
2014-07-17 10:34:35 -04:00
- [Compression ](#compression )
2014-07-18 02:35:28 -04:00
- [Computation ](#computation )
2014-07-17 10:34:35 -04:00
- [Cryptography ](#cryptography )
2014-07-20 10:06:24 -04:00
- [Database ](#database )
2014-07-20 08:56:41 -04:00
- [Encoding ](#encoding )
2014-07-21 02:21:16 -04:00
- [Game development ](#game-development )
2014-07-21 01:56:17 -04:00
- [Games ](#games )
2014-07-20 09:02:45 -04:00
- [GUI ](#gui )
2014-10-12 06:37:13 -04:00
- [Image processing ](#image-processing )
2014-07-20 10:30:14 -04:00
- [Network programming ](#network-programming )
2014-07-20 10:31:40 -04:00
- [Template engine ](#template-engine )
2014-07-23 09:47:33 -04:00
- [Testing ](#testing )
2014-07-20 10:30:14 -04:00
- [Web programming ](#web-programming )
2014-07-17 09:05:35 -04:00
- [Resources ](#resources )
2014-07-17 07:02:40 -04:00
2014-07-17 09:05:35 -04:00
## Code
2014-10-11 09:02:35 -04:00
2014-07-18 02:24:50 -04:00
### Audio
* [bjz/openal-rs ](https://github.com/bjz/openal-rs/ ) — [OpenAL 1.1 ](http://www.openal.org/ ) bindings
2014-10-12 07:35:55 -04:00
* [JeremyLetang/ears ](https://github.com/JeremyLetang/ears ) — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile [<img src="https://travis-ci.org/jeremyletang/ears.svg?branch=master"> ](https://travis-ci.org/JeremyLetang/ears )
* [JeremyLetang/rust-portaudio ](https://github.com/JeremyLetang/rust-portaudio ) — [PortAudio ](http://www.portaudio.com/ ) bindings [<img src="https://travis-ci.org/jeremyletang/rust-portaudio.svg?branch=master"> ](https://travis-ci.org/JeremyLetang/rust-portaudio )
* [musitdev/rust-portmidi ](https://github.com/musitdev/rust-portmidi ) — [PortMidi ](http://portmedia.sourceforge.net/portmidi/ ) bindings [<img src="https://travis-ci.org/musitdev/rust-portmidi.svg?branch=master"> ](https://travis-ci.org/musitdev/rust-portmidi )
2014-07-18 02:24:50 -04:00
2014-07-20 10:24:03 -04:00
### Build system
* [Cargo ](http://crates.io ) — the Rust package manager
* CMake
2014-10-12 07:35:55 -04:00
* [SiegeLord/RustCMake ](https://github.com/SiegeLord/RustCMake ) — an example project showing usage of CMake with Rust [<img src="https://travis-ci.org/SiegeLord/RustCMake.svg?branch=master"> ](https://travis-ci.org/SiegeLord/RustCMake )
2014-07-20 10:24:03 -04:00
* Make
* [PistonDevelopers/rust-empty ](https://github.com/PistonDevelopers/rust-empty ) — a Makefile to get started with Rust
2014-07-26 06:38:16 -04:00
### Command-line argument parsing
2014-10-12 13:35:27 -04:00
* [docopt/docopt.rs ](https://github.com/docopt/docopt.rs ) — a Rust implementation of [DocOpt ](http://docopt.org ) [<img src="https://travis-ci.org/docopt/docopt.rs.svg?branch=master"> ](https://travis-ci.org/docopt/docopt.rs )
2014-07-26 06:38:16 -04:00
2014-07-17 10:31:09 -04:00
### Compression
2014-11-02 13:45:17 -05:00
* [alexcrichton/bzip2-rs ](https://github.com/alexcrichton/bzip2-rs ) — [libbz2 ](http://www.bzip.org ) bindings [<img src="https://travis-ci.org/alexcrichton/bzip2-rs.svg?branch=master"> ](https://travis-ci.org/alexcrichton/bzip2-rs )
2014-11-18 12:50:14 -05:00
* [alexcrichton/flate2-rs ](https://github.com/alexcrichton/flate2-rs ) — [miniz ](https://code.google.com/p/miniz/ ) bindings [<img src="https://travis-ci.org/alexcrichton/flate2-rs.svg?branch=master"> ](https://travis-ci.org/alexcrichton/flate2-rs )
2014-11-02 13:47:00 -05:00
* [alexcrichton/tar-rs ](https://github.com/alexcrichton/tar-rs ) — tar archive reading/writing in Rust [<img src="https://travis-ci.org/alexcrichton/tar-rs.svg?branch=master"> ](https://travis-ci.org/alexcrichton/tar-rs )
2014-10-12 07:35:55 -04:00
* [lifthrasiir/rust-zip ](https://github.com/lifthrasiir/rust-zip ) — read and write ZIP archives [<img src="https://travis-ci.org/lifthrasiir/rust-zip.svg?branch=master"> ](https://travis-ci.org/lifthrasiir/rust-zip )
2014-07-17 10:31:09 -04:00
2014-07-18 02:35:53 -04:00
### Computation
2014-10-11 09:02:35 -04:00
2014-10-12 07:35:55 -04:00
* [eholk/rust-opencl ](https://github.com/eholk/rust-opencl ) — [OpenCL ](https://www.khronos.org/opencl/ ) bindings [<img src="https://travis-ci.org/eholk/rust-opencl.svg?branch=master"> ](https://travis-ci.org/eholk/rust-opencl )
2014-10-14 14:02:41 -04:00
* [thestinger/rust-gmp ](https://github.com/thestinger/rust-gmp ) — [libgmp ](https://gmplib.org/ ) bindings
2014-07-18 02:35:28 -04:00
2014-07-17 10:34:35 -04:00
### Cryptography
2014-10-12 07:35:55 -04:00
* [DaGenix/rust-crypto ](https://github.com/DaGenix/rust-crypto ) — cryptographic algorithms in Rust [<img src="https://travis-ci.org/DaGenix/rust-crypto.svg?branch=master"> ](https://travis-ci.org/DaGenix/rust-crypto )
2014-10-07 14:50:15 -04:00
* [dnaq/sodiumoxide ](https://github.com/dnaq/sodiumoxide ) — [libsodium ](https://github.com/jedisct1/libsodium ) bindings
2014-10-12 06:31:09 -04:00
* [klutzy/suruga ](https://github.com/klutzy/suruga ) — a Rust implementation of [TLS 1.2 ](http://tools.ietf.org/html/rfc5246 )
2014-10-12 06:20:43 -04:00
* [seb-m/common.rs ](https://github.com/klutzy/suruga ) — Common Rust crypto utilities
2014-11-02 13:36:41 -05:00
* [sfackler/rust-openssl ](https://github.com/sfackler/rust-openssl ) — [OpenSSL ](https://www.openssl.org/ ) bindings [<img src="https://travis-ci.org/sfackler/rust-openssl.svg?branch=master"> ](https://travis-ci.org/sfackler/rust-openssl )
2014-07-17 10:34:35 -04:00
2014-07-20 10:06:24 -04:00
### Database
2014-11-20 13:10:27 -05:00
* NoSQL
* RethinkDB
2014-07-20 10:06:24 -04:00
* SQL
* MySql
2014-10-12 07:35:55 -04:00
* [blackbeam/rust-mysql-simple ](https://github.com/blackbeam/rust-mysql-simple ) — a native MySql client [<img src="https://travis-ci.org/blackbeam/rust-mysql-simple.svg?branch=master"> ](https://travis-ci.org/blackbeam/rust-mysql-simple )
2014-07-20 10:06:24 -04:00
* PostgreSql
2014-10-12 07:35:55 -04:00
* [sfackler/rust-postgres ](https://github.com/sfackler/rust-postgres ) — a native [PostgreSQL ](http://www.postgresql.org ) client [<img src="https://travis-ci.org/sfackler/rust-postgres.svg?branch=master"> ](https://travis-ci.org/sfackler/rust-postgres )
2014-07-20 10:06:24 -04:00
* Sqlite
2014-10-11 09:02:35 -04:00
* [linuxfood/rustsqlite ](https://github.com/linuxfood/rustsqlite ) — [Sqlite3 ](http://www.sqlite.org/ ) bindings
2014-07-20 10:06:24 -04:00
2014-07-20 08:56:41 -04:00
### Encoding
* Cap'n Proto
2014-10-12 07:35:55 -04:00
* [dwrensha/capnproto-rust ](https://github.com/dwrensha/capnproto-rust ) — [<img src="https://travis-ci.org/dwrensha/capnproto-rust.svg?branch=master"> ](https://travis-ci.org/dwrensha/capnproto-rust )
2014-07-20 08:56:41 -04:00
* Character Encoding
2014-10-12 07:35:55 -04:00
* [lifthrasiir/rust-encoding ](https://github.com/lifthrasiir/rust-encoding ) — [<img src="https://travis-ci.org/lifthrasiir/rust-encoding.svg?branch=master"> ](https://travis-ci.org/lifthrasiir/rust-encoding )
2014-07-20 08:56:41 -04:00
* CSV
2014-10-12 07:35:55 -04:00
* [BurntSushi/rust-csv ](https://github.com/BurntSushi/rust-csv ) — [<img src="https://api.travis-ci.org/BurntSushi/rust-csv.svg?branch=master"> ](https://travis-ci.org/BurntSushi/rust-csv )
2014-10-18 10:07:46 -04:00
* HTML
* [servo/html5ever ](https://github.com/servo/html5ever ) — High-performance browser-grade HTML5 parser [<img src="https://travis-ci.org/servo/html5ever.svg?branch=master"> ](https://travis-ci.org/servo/html5ever )
2014-07-20 08:56:41 -04:00
* MsgPck
2014-10-12 07:35:55 -04:00
* [mneumann/rust-msgpack ](https://github.com/mneumann/rust-msgpack ) — [<img src="https://travis-ci.org/mneumann/rust-msgpack.svg?branch=master"> ](https://travis-ci.org/mneumann/rust-msgpack )
2014-07-20 08:56:41 -04:00
* ProtocolBuffers
2014-10-12 07:35:55 -04:00
* [stepancheg/rust-protobuf ](https://github.com/stepancheg/rust-protobuf ) — [<img src="https://travis-ci.org/stepancheg/rust-protobuf.svg?branch=master"> ](https://travis-ci.org/stepancheg/rust-protobuf )
2014-07-20 08:56:41 -04:00
* TOML
2014-11-18 12:51:18 -05:00
* [alexcrichton/toml-rs ](https://github.com/alexcrichton/toml-rs ) — [<img src="https://travis-ci.org/alexcrichton/toml-rs.svg?branch=master"> ](https://travis-ci.org/alexcrichton/toml-rs )
2014-07-20 08:56:41 -04:00
* Tnetstring
* XML
2014-10-12 07:35:55 -04:00
* [Florob/RustyXML ](https://github.com/Florob/RustyXML ) — an XML parser written in Rust [<img src="https://travis-ci.org/Florob/RustyXML.svg?branch=master"> ](https://travis-ci.org/Florob/RustyXM )
* [netvl/rust-xml ](https://github.com/netvl/rust-xml ) — a streaming XML library [<img src="https://travis-ci.org/netvl/rust-xml.svg?branch=master"> ](https://travis-ci.org/netvl/rust-xml )
2014-07-20 08:56:41 -04:00
2014-07-21 02:21:16 -04:00
### Game development
2014-11-01 12:23:30 -04:00
* [bbodi/rust-voxlap ](https://github.com/bbodi/rust-voxlap ) — [Voxlap ](http://advsys.net/ken/voxlap.htm ) bindings
2014-10-12 07:39:43 -04:00
* [PistonDevelopers/piston ](https://github.com/pistondevelopers/piston ) — [<img src="https://travis-ci.org/PistonDevelopers/piston.svg?branch=master"> ](https://travis-ci.org/PistonDevelopers/piston )
2014-10-13 12:20:56 -04:00
* [SiegeLord/RustAllegro ](https://github.com/SiegeLord/RustAllegro ) — [Allegro 5 ](http://liballeg.org/ ) bindings [<img src="https://travis-ci.org/SiegeLord/RustAllegro.svg?branch=master"> ](https://travis-ci.org/SiegeLord/RustAllegro )
2014-07-21 02:21:16 -04:00
2014-07-21 01:59:17 -04:00
### Games
2014-07-21 01:56:17 -04:00
2014-11-20 13:13:04 -05:00
* [Coeuvre/rust-2048 ](https://github.com/Coeuvre/rust-2048 )
2014-10-12 07:35:55 -04:00
* [lifthrasiir/angolmois-rust ](https://github.com/lifthrasiir/angolmois-rust ) — a minimalistic music video game which supports the BMS format [<img src="https://travis-ci.org/lifthrasiir/angolmois-rust.svg?branch=master"> ](https://travis-ci.org/lifthrasiir/angolmois-rust )
2014-07-21 01:57:41 -04:00
2014-07-20 09:02:45 -04:00
### GUI
2014-07-20 08:56:41 -04:00
2014-07-20 09:02:45 -04:00
* Cocoa
2014-10-11 09:02:35 -04:00
* [mozilla-servo/rust-cocoa ](https://github.com/mozilla-servo/rust-cocoa )
* Gtk+
2014-10-12 07:35:55 -04:00
* [JeremyLetang/rgtk ](https://github.com/JeremyLetang/rgtk ) — [Gtk+ ](http://www.gtk.org ) bindings [<img src="https://travis-ci.org/jeremyletang/rgtk.svg?branch=master"> ](https://travis-ci.org/jeremyletang/rgtk )
2014-07-20 09:02:45 -04:00
* ncurses
2014-10-12 07:35:55 -04:00
* [jeaye/ncurses-rs ](https://github.com/jeaye/ncurses-rs ) — [<img src="https://travis-ci.org/jeaye/ncurses-rs.svg?branch=master"> ](https://travis-ci.org/jeaye/ncurses-rs )
2014-10-12 06:49:36 -04:00
* OpenGL
2014-11-20 13:13:04 -05:00
* [bjz/gl-rs ](https://github.com/bjz/gl-rs )
* [bjz/glfw-rs ](https://github.com/bjz/glfw-rs )
* [servo/rust-glut ](https://github.com/mozilla-servo/rust-glut )
2014-10-23 12:48:17 -04:00
* [tomaka/glutin ](https://github.com/tomaka/glutin ) — Rust alternative to [GLFW ](http://www.glfw.org/ ) [<img src="https://travis-ci.org/tomaka/glutin.svg?branch=master"> ](https://travis-ci.org/tomaka/glutin )
2014-08-06 04:34:31 -04:00
* SDL
2014-10-12 07:35:55 -04:00
* [AngryLawyer/rust-sdl2 ](https://github.com/AngryLawyer/rust-sdl2 ) — [SDL2 ](http://www.libsdl.org/ ) bindings [<img src="https://travis-ci.org/AngryLawyer/rust-sdl2.svg?branch=master"> ](https://travis-ci.org/AngryLawyer/rust-sdl2 )
* [brson/rust-sdl ](https://github.com/brson/rust-sdl ) — [SDL1 ](http://www.libsdl.org/ ) bindings [<img src="https://travis-ci.org/brson/rust-sdl.svg?branch=master"> ](https://travis-ci.org/brson/rust-sdl )
2014-10-12 07:24:24 -04:00
* SFML
2014-10-12 07:43:33 -04:00
* [jeremyletang/rust-sfml ](https://github.com/JeremyLetang/rust-sfml ) — [SFML ](http://www.sfml-dev.org/ ) bindings [<img src="https://travis-ci.org/jeremyletang/rust-sfml.svg?branch=master"> ](https://travis-ci.org/jeremyLetang/rust-sfml )
2014-07-20 09:02:45 -04:00
* Termbox
2014-10-12 07:41:06 -04:00
* [gchp/rustbox ](https://github.com/gchp/rustbox ) — a Rust implementation of [termbox ](http://github.com/nsf/termbox )
2014-10-11 09:24:17 -04:00
* wxWidgets
2014-07-20 08:56:41 -04:00
2014-10-12 06:37:13 -04:00
### Image processing
2014-10-12 07:35:55 -04:00
* [PistonDevelopers/image ](https://github.com/PistonDevelopers/image ) — Basic imaging processing functions and methods for converting to and from image formats [<img src="https://travis-ci.org/PistonDevelopers/image.svg?branch=master"> ](https://travis-ci.org/PistonDevelopers/image )
2014-10-12 06:37:13 -04:00
2014-07-20 10:30:14 -04:00
### Network programming
2014-10-14 14:02:41 -04:00
* Low level
* [libpnet/libpnet ](https://github.com/libpnet/libpnet ) — Cross-platform, low level networking [<img src="https://api.travis-ci.org/libpnet/libpnet.svg?branch=master"> ](https://travis-ci.org/libpnet/libpnet )
2014-10-27 13:04:59 -04:00
* NanoMsg
* [thehydroimpulse/nanomsg.rs ](https://github.com/thehydroimpulse/nanomsg.rs ) — a modern messaging library that is the successor to ZeroMQ [<img src="https://travis-ci.org/thehydroimpulse/nanomsg.rs.svg?branch=master"> ](https://travis-ci.org/thehydroimpulse/nanomsg.rs )
2014-10-14 14:02:41 -04:00
* SSH
* [alexcrichton/ssh2-rs ](https://github.com/alexcrichton/ssh2-rs ) — [libssh2 ](http://www.libssh2.org/ ) bindings [<img src="https://travis-ci.org/alexcrichton/ssh2-rs.svg?branch=master"> ](https://travis-ci.org/alexcrichton/ssh2-rs )
* Stomp
* [zslayton/stomp-rs ](https://github.com/zslayton/stomp-rs ) — [STOMP 1.2 ](http://stomp.github.io/stomp-specification-1.2.html ) client implementation in Rust [<img src="https://api.travis-ci.org/zslayton/stomp-rs.svg?branch=master"> ](https://travis-ci.org/zslayton/stomp-rs )
2014-07-20 10:30:14 -04:00
* ZeroMQ
2014-07-20 10:31:40 -04:00
### Template engine
* Mustache
2014-10-12 13:28:14 -04:00
* [rustache/rustache ](https://github.com/rustache/rustache ) — [<img src="https://travis-ci.org/rustache/rustache.svg?branch=master"> ](https://travis-ci.org/rustache/rustache )
2014-07-20 10:31:40 -04:00
2014-07-23 09:47:33 -04:00
### Testing
2014-10-12 07:35:55 -04:00
* [BurntSushi/quickcheck ](https://github.com/BurntSushi/quickcheck ) — a Rust implementation of [QuickCheck ](http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck1 ) [<img src="https://travis-ci.org/BurntSushi/quickcheck.svg?branch=master"> ](https://travis-ci.org/BurntSushi/quickcheck )
2014-07-23 09:47:33 -04:00
2014-07-20 10:30:14 -04:00
### Web programming
2014-07-17 06:47:44 -04:00
2014-10-11 09:02:35 -04:00
See also [http://arewewebyet.com/ ](http://arewewebyet.com/ )
2014-07-17 06:47:44 -04:00
2014-10-11 09:02:35 -04:00
* Core
2014-10-12 07:35:55 -04:00
* [chris-morgan/rust-http ](https://github.com/chris-morgan/rust-http ) — will be replaced by [Teepee ](http://teepee.rs/ ) [<img src="https://travis-ci.org/chris-morgan/rust-http.svg?branch=master"> ](https://travis-ci.org/chris-morgan/rust-http )
2014-12-10 14:07:59 -05:00
* [hyperium/hyper ](https://github.com/hyperium/hyper ) — an HTTP implementation [<img src="https://travis-ci.org/hyperium/hyper.svg?branch=master"> ](https://travis-ci.org/hyperium/hyper )
2014-10-11 09:02:35 -04:00
* Client
* [carllerche/curl-rust ](https://github.com/carllerche/curl-rust ) — [libcurl ](http://curl.haxx.se/libcurl/ ) bindings
2014-10-12 08:12:17 -04:00
* [vhbit/curl-rs ](https://github.com/vhbit/curl-rs ) — [libcurl ](http://curl.haxx.se/libcurl/ ) bindings
2014-10-11 09:02:35 -04:00
* Server
2014-12-10 14:07:59 -05:00
* [Iron ](http://ironframework.io/ ) — a Middleware-based server framework [<img src="https://travis-ci.org/iron/iron.svg?branch=master"> ](https://travis-ci.org/iron/iron )
2014-10-12 12:27:18 -04:00
* [Nickel ](http://nickel.rs/ ) — inspired by [Express ](http://expressjs.com/ ) [<img src="https://travis-ci.org/nickel-org/nickel.rs.svg?branch=master"> ](https://travis-ci.org/nickel-org/nickel.rs )
2014-12-10 14:13:21 -05:00
* [Rustless ](http://rustless.org/ ) — a REST-like API micro-framework inspired by[Grape](https://github.com/intridea/grape) and [Hyper ](https://github.com/hyperium/hyper ) [<img src="https://travis-ci.org/rustless/rustless.svg?branch=master"> ](https://travis-ci.org/rustless/rustless )
2014-07-18 02:16:18 -04:00
2014-07-17 09:05:35 -04:00
## Resources
2014-07-20 10:12:39 -04:00
2014-10-11 09:02:35 -04:00
* [Rust by Example ](http://rustbyexample.com/ )
* [Rust CI ](http://www.rust-ci.org ) — a [Travis CI ](https://travis-ci.com ) dashboard for Rust projects
2014-11-01 12:23:30 -04:00
* [Rust Guidelines ](http://aturon.github.io )