You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 KiB
32 KiB
Awesome Rust
A curated list of awesome Rust code and resources. Inspired by the other awesome lists.
The goal is to have only projects that are mostly stable and useful to users.
- Awesome Rust
- Applications written in Rust
- Libraries
- Audio
- Build system
- Command-line argument parsing
- Compression
- Computation
- Cryptography
- Database
- Data structures
- Date and time
- Encoding
- Filesystem
- Game development
- Games
- GUI
- Image processing
- Markup language
- Mobile
- Network programming
- Platform specific
- Template engine
- Testing
- Text processing
- Web programming
- Resources
- Development Tools
- License
Applications written in Rust
- buster/rrun — A command launcher for Linux, similar to gmrun
- BurntSushi/xsv — A fast CSV command line tool (slicing, indexing, selecting, searching, sampling, etc.)
- gchp/iota — a simple text editor written in Rust
- imjacobclark/Herd - an experimental HTTP load testing application written in Rust
- kbknapp/docli - a command line utility for managing DigitalOcean infrastructure
- MaidSafe — a decentralized platform.
- seppo0010/rsedis — Redis reimplementation in Rust.
- Servo — a prototype web browser engine written in Rust
- thoughtram/clog — a conventional changelog port (generates a changelog from git metadata)
- uutils/coreutils — cross-platform Rust rewrite of the GNU coreutils
Games
- Coeuvre/rust-2048
- lifthrasiir/angolmois-rust — a minimalistic music video game which supports the BMS format
- xojoc/snake-piston — a Snake game in Rust
Libraries
Audio
- GuillaumeGomez/rust-fmod — FMOD bindings
- JeremyLetang/ears — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile
- JeremyLetang/rust-portaudio — PortAudio bindings
- jpernst/openal-rs — OpenAL 1.1 bindings
- RustAudio
- samdoshi/portmidi-rs — PortMidi bindings
Build system
- Cargo — the Rust package manager
- CMake
- SiegeLord/RustCMake — an example project showing usage of CMake with Rust
- SiegeLord/RustCMake — an example project showing usage of CMake with Rust
Command-line argument parsing
- docopt/docopt.rs — a Rust implementation of DocOpt
- kbknapp/clap-rs — a simple to use, full featured command-line argument parser
Compression
- alexcrichton/bzip2-rs — libbz2 bindings
- alexcrichton/flate2-rs — miniz bindings
- alexcrichton/tar-rs — tar archive reading/writing in Rust
- slackito/zip — read and write ZIP archives
Computation
- BLAS
- mikkyang/rust-blas — BLAS bindings
- stainless-steel/blas — BLAS bindings
- GMP
- thestinger/rust-gmp — libgmp bindings
- thestinger/rust-gmp — libgmp bindings
- GSL
- GuillaumeGomez/rust-GSL — GSL bindings
- GuillaumeGomez/rust-GSL — GSL bindings
- LAPACK
- stainless-steel/lapack — LAPACK bindings
- stainless-steel/lapack — LAPACK bindings
- OpenCL
- luqmana/rust-opencl — OpenCL bindings
- luqmana/rust-opencl — OpenCL bindings
Cryptography
- DaGenix/rust-crypto — cryptographic algorithms in Rust
- dnaq/sodiumoxide — libsodium bindings
- klutzy/suruga — a Rust implementation of TLS 1.2
- seb-m/common.rs — Common Rust crypto utilities
- sfackler/rust-openssl — OpenSSL bindings
Database
- NoSQL
- Cassandra
- tupshin/cassandra-rust — Cassandra bindings
- Elastic (formerly Elasticsearch)
- [benashford/rs-es] (https://github.com/benashford/rs-es) — A Rust client for the [Elastic] (https://www.elastic.co/) REST API
- [benashford/rs-es] (https://github.com/benashford/rs-es) — A Rust client for the [Elastic] (https://www.elastic.co/) REST API
- ForestDB
- vhbit/sherwood — ForestDB bindings
- vhbit/sherwood — ForestDB bindings
- LMDB
- vhbit/lmdb-rs — LMDB bindings
- vhbit/lmdb-rs — LMDB bindings
- Redis
- mitsuhiko/redis-rs — Redis library in Rust
- mitsuhiko/redis-rs — Redis library in Rust
- Cassandra
- SQL
- MySql
- blackbeam/rust-mysql-simple — a native MySql client
- blackbeam/rust-mysql-simple — a native MySql client
- PostgreSql
- sfackler/rust-postgres — a native PostgreSQL client
- sfackler/rust-postgres — a native PostgreSQL client
- Sqlite
- dckc/rust-sqlite3 — Sqlite3 bindings
- jgallagher/rusqlite — Sqlite3 bindings
- linuxfood/rustsqlite — Sqlite3 bindings
- dckc/rust-sqlite3 — Sqlite3 bindings
- MySql
Date and time
Data structures
- bluss/rust-itertools —
- reem/rust-typemap —
- serde-rs/serde — a framework to generically serialize Rust data structures
Encoding
- TyOverby/bincode — a binary encoder/decoder in Rust
- Bencode
- arjantop/rust-bencode — Bencode implementation in Rust
- arjantop/rust-bencode — Bencode implementation in Rust
- Byte swapping
- BurntSushi/byteorder — Supports big-endian, little-endian and native byte orders
- BurntSushi/byteorder — Supports big-endian, little-endian and native byte orders
- Cap'n Proto
- CBOR
- BurntSushi/rust-cbor — Supports JSON conversion and type-based encoding/decoding
- BurntSushi/rust-cbor — Supports JSON conversion and type-based encoding/decoding
- Character Encoding
- CSV
- HTML
- servo/html5ever — High-performance browser-grade HTML5 parser
- servo/html5ever — High-performance browser-grade HTML5 parser
- MsgPack
- mneumann/rust-msgpack —
- 3Hren/msgpack-rust — a pure Rust low/high level MessagePack implementation
- mneumann/rust-msgpack —
- ProtocolBuffers
- TOML
- Tnetstring
- XML
- Florob/RustyXML — an XML parser written in Rust
- netvl/xml-rs — a streaming XML library
- Florob/RustyXML — an XML parser written in Rust
- YAML
- chyh1990/yaml-rust — The missing YAML 1.2 implementation for Rust.
- kimhyunkang/libyaml-rust — libyaml bindings
- chyh1990/yaml-rust — The missing YAML 1.2 implementation for Rust.
Filesystem
- FUSE
- zargony/rust-fuse — FUSE bindings
- zargony/rust-fuse — FUSE bindings
Game development
- bbodi/rust-voxlap — Voxlap bindings
- PistonDevelopers/piston —
- SiegeLord/RustAllegro — Allegro 5 bindings
GUI
- Cocoa
- IUP
- dcampbell24/iup-rust — IUP bindings
- dcampbell24/iup-rust — IUP bindings
- GTK+
- rust-gnome/gtk — GTK+ bindings
- rust-gnome/gtk — GTK+ bindings
- ncurses
- jeaye/ncurses-rs — ncurses bindings
- jeaye/ncurses-rs — ncurses bindings
- OpenGL
- bjz/gl-rs —
- bjz/glfw-rs —
- servo/rust-glut
- tomaka/glutin — Rust alternative to GLFW
- bjz/gl-rs —
- Qt
- cyndis/qmlrs — QtQuick bindings
- cyndis/qmlrs — QtQuick bindings
- SDL
- AngryLawyer/rust-sdl2 — SDL2 bindings
- brson/rust-sdl — SDL1 bindings
- PistonDevelopers/conrod — An easy-to-use, immediate-mode, 2D GUI library written entirely in Rust
- AngryLawyer/rust-sdl2 — SDL2 bindings
- SFML
- jeremyletang/rust-sfml — SFML bindings
- jeremyletang/rust-sfml — SFML bindings
- Termbox
- gchp/rustbox — a Rust implementation of termbox
- gchp/rustbox — a Rust implementation of termbox
Image processing
- chyh1990/imageproc — An advanced image processing library for Rust.
- cybergeek94/img-hash — Perceptual image hashing and comparison for equality and similarity.
- PistonDevelopers/image — Basic imaging processing functions and methods for converting to and from image formats
Markup language
- CommonMark
- google/pulldown-cmark — CommonMark parser in Rust
Mobile
- tomaka/android-rs-glue — glue between Rust and Android
- vhbit/ObjCrust — using Rust to create an iOS static library
Network programming
- Beanstalkd
- schickling/rust-beanstalkd — Beanstalkd bindings
- schickling/rust-beanstalkd — Beanstalkd bindings
- FTP
- mattnenterprise/rust-ftp — An FTP client for Rust
- mattnenterprise/rust-ftp — An FTP client for Rust
- Low level
- libpnet/libpnet — Cross-platform, low level networking
- libpnet/libpnet — Cross-platform, low level networking
- NanoMsg
- thehydroimpulse/nanomsg.rs — a modern messaging library that is the successor to ZeroMQ
- thehydroimpulse/nanomsg.rs — a modern messaging library that is the successor to ZeroMQ
- NNTP
- mattnenterprise/rust-nntp — A NNTP client for Rust
- mattnenterprise/rust-nntp — A NNTP client for Rust
- POP3
- mattnenterprise/rust-pop3 — A POP3 client for Rust
- mattnenterprise/rust-pop3 — A POP3 client for Rust
- SSH
- alexcrichton/ssh2-rs — libssh2 bindings
- alexcrichton/ssh2-rs — libssh2 bindings
- Stomp
- zslayton/stomp-rs — STOMP 1.2 client implementation in Rust
- zslayton/stomp-rs — STOMP 1.2 client implementation in Rust
- uTP
- meqif/rust-utp — A uTP (Micro Transport Protocol) library for Rust.
- meqif/rust-utp — A uTP (Micro Transport Protocol) library for Rust.
- ZeroMQ
- erickt/rust-zmq — ZeroMQ bindings
- erickt/rust-zmq — ZeroMQ bindings
Platform specific
- DigitalOcean
- kbknapp/doapi — DigitalOcean v2 API bindings
- kbknapp/doapi — DigitalOcean v2 API bindings
- Linux
- carllerche/nix-rust — Linux API bindings
- carllerche/nix-rust — Linux API bindings
- Windows
- retep998/winapi-rs — Windows API bindings
- retep998/winapi-rs — Windows API bindings
Template engine
- HTML
- lfairy/maud — compile-time HTML templates
- Stebalien/horrorshow-rs — compile-time HTML templates
- lfairy/maud — compile-time HTML templates
- Mustache
- sunng87/handlebars-iron — Handlebars-rust as an Iron web framework middleware.
- sunng87/handlebars-rust — Handlebars template engine with inheritance, custom helper support.
Testing
- BurntSushi/quickcheck — a Rust implementation of QuickCheck
- farcaller/shiny — a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi
Text processing
- BurntSushi/suffix — Linear time suffix array construction (with Unicode support)
- BurntSushi/tabwriter — Elastic tab stops (i.e., text column alignment)
- rust-lang/regex — Regular expressions (RE2 style)
Web programming
See also http://arewewebyet.com/
- Client
- carllerche/curl-rust — libcurl bindings
- hyperium/hyper — an HTTP implementation
- vhbit/curl-rs — libcurl bindings
- carllerche/curl-rust — libcurl bindings
- Server
- hyperium/hyper — an HTTP implementation
- Iron — a middleware-based server framework
- Nickel — inspired by Express
- Ogeon/rustful — a RESTful web framework for Rust
- Rustless — a REST-like API micro-framework inspired by Grape and Hyper
- tiny-http — Low level HTTP server library
- hyperium/hyper — an HTTP implementation
Resources
- Rust by Example
- Rust CI — a Travis CI dashboard for Rust projects
- Rust Guidelines
- rust-learning — a collection of useful resources to learn rust
Development tools
- brson/multirust — manage multiple Rust installations
- crabtw/rust-bindgen — a Rust bindings generator
- dan-t/rusty-tags — create ctags/etags for a cargo project and all of its dependencies
- frewsxcv/crate-deps - generates images of dependency graphs for crates hosted on crates.io
- kmcallister/afl.rs — a Rust fuzzer, using AFL
- Manishearth/rust-clippy — a collection of lints that catch newbie mistakes and oversights during the build
- nrc/rustfmt — a Rust code formatter
- phildawes/racer — code completion for Rust
IDEs
- PistonDevelopers/VisualRust — a Visual Studio extension for Rust
- Ride —
- RustDT — an Eclipse-based IDE for Rust
- SolidOak — a simple IDE for Rust, based on GTK+ and Neovim
- Vektah/idea-rust — an IntelliJ-based IDE for Rust
- Visual Studio Code