mirror of
https://github.com/rust-unofficial/awesome-rust.git
synced 2025-02-09 14:15:02 +02:00
Awesome Rust
A curated list of Rust code and resources, inspired by other awesome lists. The goal is to have only projects that are mostly stable and useful to users.
If you want to contribute, please read this.
- Awesome Rust
- Applications written in Rust
- Development Tools
- Libraries
- Astronomy
- Asynchronous
- Audio
- Authentication
- Bioinformatics
- Build system
- Cloud
- Command-line argument parsing
- Compression
- Computation
- Concurrency
- Cryptography
- Database
- Data structures
- Date and time
- Distributed Systems
- Encoding
- Game development
- Games
- Geospatial
- GUI
- Image processing
- Machine learning
- Markup language
- Mobile
- Network programming
- Parser
- Platform specific
- Template engine
- Text processing
- Web programming
- Resources
- License
Applications written in Rust
- Aaronepower/tokei — counts the lines of code
- azerupi/mdBook — a command line utility to create books from markdown files
- bluejekyll/trust-dns — a DNS-server
- BurntSushi/xsv — a fast CSV command line tool (slicing, indexing, selecting, searching, sampling, etc.)
- buster/rrun — a command launcher for Linux, similar to gmrun
- Emulators
- simias/rustation — a Playstation emulator
- simias/rustation — a Playstation emulator
- gchp/iota — a simple text editor
- dlecan/generic-dns-update — a tool to update DNS zonefiles with your IP address
- Fractalide — Flow-based Programming environment.
- imjacobclark/Herd — an experimental HTTP load testing application
- jedisct1/flowgger — a fast, simple and lightweight data collector
- kbknapp/docli — a command line utility for managing DigitalOcean infrastructure
- MaidSafe — a decentralized platform.
- ogham/exa — a replacement for 'ls' written in Rust
- qmx/limonite — static blog/website generator
- seppo0010/rsedis — a Redis reimplementation
- Servo — a prototype web browser engine
- uutils/coreutils — a cross-platform Rust rewrite of the GNU coreutils
Games
- Games Made With Piston
- lifthrasiir/angolmois-rust — a minimalistic music video game which supports the BMS format
- swatteau/sokoban-rs — a Sokoban implementation
- Zone of Control — a turn-based hexagonal strategy game
- rhex — hexagonal ascii roguelike
Operating systems
A comparison of operating systems written in Rust
Development tools
- Clippy — Rust lints
- clog-tool/clog-cli — generates a changelog from git metadata (conventional changelog)
- 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
- Multirust — manage multiple Rust installations
- brson/multirust — the original multirust as shell scripts
- Diggsey/multirust-rs — multirust reimplementation in Rust
- brson/multirust — the original multirust as shell scripts
- Racer — code completion for Rust
- rustfmt — a Rust code formatter
Debugging
- GDB
- LLDB
- lldb_batchmode.py — allows to use LLDB in a way similar to GDB's batch mode.
Embedded
- Cross compiling
- japaric/rust-cross — everything you need to know about cross compiling Rust programs
- japaric/rust-cross — everything you need to know about cross compiling Rust programs
- Raspberry Pi
- Ogeon/rust-on-raspberry-pi — instructions for how to cross compile Rust projects for the Raspberry Pi .
FFI
See also Foreign Function Interface, Rust Inside Other Languages and The Rust FFI Omnibus (a collection of examples of using code written in Rust from other languages).
- C
- crabtw/rust-bindgen — a Rust bindings generator
- Sean1708/rusty-cheddar — generates C header files from Rust source files
- crabtw/rust-bindgen — a Rust bindings generator
- Java
- drrb/java-rust-example — use Rust from Java
- drrb/java-rust-example — use Rust from Java
- Node.js
- rustbridge/neon — use Rust from Node.js
- rustbridge/neon — use Rust from Node.js
- Python
- dgrunwald/rust-cpython — Python bindings
- lukemetz/rustpy — Python bindings
- dgrunwald/rust-cpython — Python bindings
IDEs
See also http://areweideyet.com/ and Rust and IDEs.
- intellij-rust — an IntelliJ-based IDE for Rust
- 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
- Visual Studio Code
Profiling
- ellisonch/rust-stopwatch — a stopwatch library
- mrhooray/torch — generates FlameGraphs based on DWARF Debug Info
Testing
- BurntSushi/quickcheck — a Rust implementation of QuickCheck
- farcaller/shiny — a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi
- frewsxcv/afl.rs — a Rust fuzzer, using AFL
Libraries
Astronomy
- saurvs/astro-rust — astronomy for Rust
Asynchronous
- zonyitoo/coio-rs — a coroutine I/O library with a working-stealing scheduler
Audio
- GuillaumeGomez/rust-fmod — FMOD bindings
- RustAudio/rust-portaudio — PortAudio bindings
- jhasse/ears — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile
- jpernst/openal-rs — OpenAL 1.1 bindings
- RustAudio
- musitdev/portmidi-rs — PortMidi bindings
Authentication
- keats/rust-jwt — JSON Web Token lib in rust
Bioinformatics
- Rust-Bio — bioinformatics libraries in Rust.
Build system
- Cargo — the Rust package manager
- rsolomo/cargo-check — a wrapper around
cargo rustc -- -Zno-trans
which can be helpful for running a faster compile if you only need correctness checks - kbknapp/cargo-count — lists source code counts and details about cargo projects, including unsafe statistics
- pwoolcoc/cargo-do — run multiple cargo commands in a row
- maxsnew/cargo-dot — generate graphs of a Cargo project's dependencies
- killercup/cargo-edit — allows you to add and list dependencies by reading/writing to your Cargo.toml file from the command line
- kbknapp/cargo-graph — updated fork of
cargo-dot
with additional features - kbknapp/cargo-outdated — displays when newer versions of Rust dependencies are available, or out of date
- imp/cargo-multi [cargo-multi] — runs specified cargo command on multiple crates
- DanielKeep/cargo-script — lets people quickly and easily run Rust "scripts" which can make use of Cargo's package ecosystem
- passcod/cargo-watch — utility for cargo to compile projects when sources change
- rsolomo/cargo-check — a wrapper around
- CMake
- SiegeLord/RustCMake — an example project showing usage of CMake with Rust
- SiegeLord/RustCMake — an example project showing usage of CMake with Rust
Concurrency
- aturon/crossbeam – Support for parallelism and low-level concurrency in Rust
- nikomatsakis/rayon – A data parallelism library for Rust
Cloud
- AWS
- DigitalOcean
- kbknapp/doapi — DigitalOcean v2 API bindings
- kbknapp/doapi — DigitalOcean v2 API bindings
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
- ende76/brotli-rs — implementation of Brotli compression
- JeffBelgum/rust-snappy — snappy bindings
- slackito/zip — read and write ZIP archives
Computation
- BLAS [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
- arrayfire/arrayfire-rust — Arrayfire bindings
- luqmana/rust-opencl — OpenCL bindings
- Scirust
- indigits/scirust — scientific computing library in Rust
- indigits/scirust — scientific computing library in Rust
Cryptography
- briansmith/ring — Safe, fast, small crypto using Rust and BoringSSL's cryptography primitives.
- briansmith/webpki — Web PKI TLS X.509 certificate validation in Rust.
- DaGenix/rust-crypto — cryptographic algorithms in Rust
- dnaq/sodiumoxide — libsodium bindings
- klutzy/suruga — a Rust implementation of TLS 1.2
- libOctavo/octavo — Modular hash and crypto library in Rust
- seb-m/common.rs — Common Rust crypto utilities
- sfackler/rust-openssl — OpenSSL bindings
Database
[database]
- sfackler/r2d2 — generic connection pool
- NoSQL [nosql]
- Cassandra [cassandra, cql]
- tupshin/cassandra-rust — Cassandra bindings
- CouchDB [couchdb]
- couchdb-rs/couchdb [couchdb] — a Rust client for the CouchDB REST API
- couchdb-rs/couchdb [couchdb] — a Rust client for the CouchDB REST API
- Elasticsearch [elasticsearch]
- benashford/rs-es [rs-es] — a Rust client for the Elastic REST API
- benashford/rs-es [rs-es] — a Rust client for the Elastic REST API
- etcd
- jimmycuadra/rust-etcd [etcd] — A client library for CoreOS's etcd.
- jimmycuadra/rust-etcd [etcd] — A client library for CoreOS's etcd.
- ForestDB
- vhbit/sherwood — ForestDB bindings
- vhbit/sherwood — ForestDB bindings
- LMDB [lmdb]
- vhbit/lmdb-rs [lmdb-rs] — LMDB bindings
- vhbit/lmdb-rs [lmdb-rs] — LMDB bindings
- MongoDB [mongodb]
- mongodb-labs/mongo-rust-driver-prototype [mongodb] — MongoDB bindings
- mongodb-labs/mongo-rust-driver-prototype [mongodb] — MongoDB bindings
- Neo4j [cypher, neo4j]
- Redis [redis]
- mitsuhiko/redis-rs — Redis library in Rust
- mitsuhiko/redis-rs — Redis library in Rust
- Cassandra [cassandra, cql]
- SQL [sql]
- MySql [mysql]
- blackbeam/rust-mysql-simple [mysql] — a native MySql client
- blackbeam/rust-mysql-simple [mysql] — a native MySql client
- MySql [mysql]
- ORM [orm]
- deuterium-orm/deuterium-orm — an SQL query builder for Rust
- ivanceras/rustorm — an ORM for Rust
- phonkee/treasure — an ORM for Rust
- sgrif/diesel — an ORM and Query builder for Rust
- deuterium-orm/deuterium-orm — an SQL query builder for Rust
- PostgreSql [postgres, postgresql]
- sfackler/rust-postgres [postgres] — a native PostgreSQL client
- sfackler/rust-postgres [postgres] — a native PostgreSQL client
- Sqlite [sqlite]
- dckc/rust-sqlite3 — Sqlite3 bindings
- jgallagher/rusqlite — Sqlite3 bindings
- linuxfood/rustsqlite — Sqlite3 bindings
- dckc/rust-sqlite3 — Sqlite3 bindings
Data structures
- bluss/rust-itertools —
- fizyk20/generic-array – a hack to allow for arrays sized by typenums
- Nemo157/roaring-rs – Roaring Bitmaps in Rust
- reem/rust-typemap —
- serde-rs/serde — a framework to generically serialize Rust data structures
Date and time
Distributed Systems
- Apache Kafka
- Beanstalkd
- schickling/rust-beanstalkd — Beanstalkd bindings
- schickling/rust-beanstalkd — Beanstalkd bindings
- HDFS
- hyunsik/hdfs-rs — libhdfs bindings
- hyunsik/hdfs-rs — libhdfs bindings
[email]
- gsquire/sendgrid-rs — unofficial Rust library for SendGrid API
- lettre/lettre — an SMTP-library for Rust
Encoding
[encoding]
- ASN.1
- alex/rust-asn1 — a Rust ASN.1 (DER) serializer
- alex/rust-asn1 — a Rust ASN.1 (DER) serializer
- Bencode
- arjantop/rust-bencode — Bencode implementation in Rust
- arjantop/rust-bencode — Bencode implementation in Rust
- Binary
- arcnmx/nue — I/O and binary data encoding for Rust
- TyOverby/bincode — a binary encoder/decoder in Rust
- arcnmx/nue — I/O and binary data encoding for 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
- CRC
- CSV
- HTML
- servo/html5ever — High-performance browser-grade HTML5 parser
- servo/html5ever — High-performance browser-grade HTML5 parser
- JSON
- serde-rs/json [serde_json] — JSON support for Serde framework
- serde-rs/json [serde_json] — JSON support for Serde framework
- Jsonnet
- MsgPack
- mneumann/rust-msgpack —
- 3Hren/msgpack-rust — a pure Rust low/high level MessagePack implementation
- mneumann/rust-msgpack —
- ProtocolBuffers
- RON (Rusty Object Notation)
- Tnetstring
- TOML
- XML
- Florob/RustyXML — an XML parser written in Rust
- shepmaster/sxd-document — An XML library in Rust
- shepmaster/sxd-xpath — An XPath library 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.
- dtolnay/serde-yaml [serde_yaml] — YAML support for Serde framework
- kimhyunkang/libyaml-rust — libyaml bindings
- chyh1990/yaml-rust — The missing YAML 1.2 implementation for Rust.
Game development
- Allegro
- SiegeLord/RustAllegro — Allegro 5 bindings
- SiegeLord/RustAllegro — Allegro 5 bindings
- Amethyst
- ebkalderon/amethyst — data-oriented game engine
- ebkalderon/amethyst — data-oriented game engine
- Corange
- lucidscape/corange-rs — Corange bindings
- Piston
- Piston —
- Piston —
- SDL [sdl]
- AngryLawyer/rust-sdl2 — SDL2 bindings
- brson/rust-sdl — SDL1 bindings
- AngryLawyer/rust-sdl2 — SDL2 bindings
- SFML
- jeremyletang/rust-sfml — SFML bindings
- jeremyletang/rust-sfml — SFML bindings
- Voxlap
- bbodi/rust-voxlap — Voxlap bindings
Geospatial
- Georust — geospatial tools and libraries written in Rust
GUI
[gui]
- PistonDevelopers/conrod — An easy-to-use, immediate-mode, 2D GUI library written entirely in Rust
- Cocoa
- IUP
- dcampbell24/iup-rust — IUP bindings
- Kiss-ui — a simple UI framework built on IUP
- dcampbell24/iup-rust — IUP bindings
- GTK+ [gtk]
- gtk-rs/gtk — GTK+ bindings
- gtk-rs/gtk — GTK+ bindings
- ncurses [ncurses]
- jeaye/ncurses-rs — ncurses bindings
- jeaye/ncurses-rs — ncurses bindings
- OpenGL [opengl]
- bjz/gl-rs —
- bjz/glfw-rs —
- tomaka/glium — safe OpenGL wrapper for the Rust language.
- tomaka/glutin — Rust alternative to GLFW
- bjz/gl-rs —
- Qt
- cyndis/qmlrs — QtQuick bindings
- cyndis/qmlrs — QtQuick 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
Machine learning
- autumnai/leaf — Open Machine Intelligence framework.
- maciejkula/rustlearn — Machine learning crate for Rust.
Markup language
- CommonMark
- google/pulldown-cmark — CommonMark parser in Rust
Mobile
- Android
- tomaka/android-rs-glue — glue between Rust and Android
- tomaka/android-rs-glue — glue between Rust and Android
- iOS
- TimNN/cargo-lipo — a cargo lipo subcommand which automatically creates a universal library for use with your iOS application.
- vhbit/ObjCrust — using Rust to create an iOS static library
- TimNN/cargo-lipo — a cargo lipo subcommand which automatically creates a universal library for use with your iOS application.
- Pebble
- andars/pebble.rs — a crate that allows Rust to be used to develop Pebble applications.
Network programming
- FTP
- mattnenterprise/rust-ftp — an FTP client for Rust
- mattnenterprise/rust-ftp — an FTP client for Rust
- Low level
- libpnet/libpnet — a cross-platform, low level networking
- libpnet/libpnet — a cross-platform, low level networking
- NanoMsg
- thehydroimpulse/nanomsg.rs — nanomsg bindings
- thehydroimpulse/nanomsg.rs — nanomsg bindings
- NNTP
- mattnenterprise/rust-nntp — an NNTP client for Rust
- mattnenterprise/rust-nntp — an 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 — a STOMP 1.2 client implementation in Rust
- zslayton/stomp-rs — a 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
Parser
- Geal/nom — parser combinator library
- ivanceras/inquerest — an URL parameter parser for rest filter inquiry
- kevinmehall/rust-peg — Parsing Expression Grammar (PEG) parser generator
- m4rw3r/chomp – A fast monadic-style parser combinator
- Marwes/combine — parser combinator library
- ptal/oak — a typed PEG parser generator (compiler plugin)
- rustless/queryst — a query string parsing library for Rust inspired by https://github.com/ljharb/qs
Platform specific
- Linux
- hannobraun/inotify-rs — inotify bindings
- hannobraun/inotify-rs — inotify bindings
- Unix-like
- carllerche/nix-rust — Unix-like API bindings
- zargony/rust-fuse — FUSE bindings
- carllerche/nix-rust — Unix-like API bindings
- Windows
- retep998/winapi-rs — Windows API bindings
- retep998/winapi-rs — Windows API bindings
Template engine
- Handlebars
- sunng87/handlebars-rust — Handlebars template engine with inheritance, custom helper support.
- sunng87/handlebars-rust — Handlebars template engine with inheritance, custom helper support.
- HTML
- lfairy/maud — compile-time HTML templates
- Stebalien/horrorshow-rs — compile-time HTML templates
- lfairy/maud — compile-time HTML templates
- Mustache
- tailhook/marafet — Compiler for Jade-like template language to cito.js-based virtual dom
Text processing
- BurntSushi/suffix — Linear time suffix array construction (with Unicode support)
- BurntSushi/tabwriter — Elastic tab stops (i.e., text column alignment)
- pwoolcoc/ngrams — Construct n-grams from arbitrary iterators
- rust-lang-nursery/regex — Regular expressions (RE2 style)
Web programming
See also Rust web framework comparison.
- HTTP Client
- carllerche/curl-rust — libcurl bindings
- hyperium/hyper — an HTTP implementation
- vhbit/curl-rs — libcurl bindings
- carllerche/curl-rust — libcurl bindings
- HTTP Server
- fengsp/pencil —
- hyperium/hyper — an HTTP implementation
- Iron — a middleware-based server framework
- sunng87/handlebars-iron — Handlebars-rust as an Iron web framework middleware.
- sunng87/handlebars-iron — Handlebars-rust as an Iron web framework middleware.
- 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
- fengsp/pencil —
- WebSocket
- cyderize/rust-websocket — a framework for dealing with WebSocket connections (both clients and servers)
- housleyjk/ws-rs — lightweight, event-driven WebSockets for Rust
- cyderize/rust-websocket — a framework for dealing with WebSocket connections (both clients and servers)
Resources
- Benchmarks
- TeXitoi/benchmarksgame-rs — Rust implementations for the The Computer Language Benchmarks Game
- TeXitoi/benchmarksgame-rs — Rust implementations for the The Computer Language Benchmarks Game
- Podcasts
- New Rustacean — a podcast about learning Rust
- Rusty Radio — covering the rust ecosystem
- Rust by Example
- RustCamp 2015 Talks
- Rust Design Patterns
- Rust Guidelines
- rust-learning — a collection of useful resources to learn Rust
- Rustlings — small exercises to get you used to reading and writing Rust code
License
Languages
Rust
100%