A curated list of Rust code and resources.
If you want to contribute, please read this.
Table of Contents
- Applications written in Rust
- Development Tools
- Command-line argument parsing
- Command-line interface
- Data structures
- Date and time
- Distributed Systems
- Game development
- Graph processing
- Image processing
- Language specification
- Machine learning
- Markup language
- Network programming
- Platform specific
- Template engine
- Text processing
- Text search
- Web programming
Applications written in Rust
See also Friends of Rust (organizations running Rust in production).
- andschwa/rust-genetic-algorithm — a genetic algorithm for academic benchmark problems
- azerupi/mdBook — a command line utility to create books from markdown files
- bluejekyll/trust-dns — a DNS-server
- ivanceras/curtain — a database administration tool for postgresql
- cobalt-org/cobalt.rs - Static site generator written in Rust
- runconduit/conduit - Ultralight service mesh for Kubernetes.
- danielrangel/rsign [rsign] — A simple command-line tool used to generate/sign/verify digital signatures designed to be compatible with Minisign
- darrint/device-blocker — Limit screen time to children's various mobile devices by blocking internet access on the family Wifi router.
- dlecan/generic-dns-update — a tool to update DNS zonefiles with your IP address
- Factotum — A system to programmatically run data pipelines
- fcsonline/drill — a HTTP load testing application inspired by Ansible syntax
- Fractalide — Simple Rust Microservices
- habitat — An tool created by Chef to build, deploy, and manage applications.
- imjacobclark/Herd — an experimental HTTP load testing application
- intecture/api — an API-driven server management and configuration tool
- jedisct1/flowgger — a fast, simple and lightweight data collector
- jwilm/alacritty — a cross-platform, GPU enhanced terminal emulator
- kbknapp/docli — a command line utility for managing DigitalOcean infrastructure
- MaidSafe — a decentralized platform.
- notty — A new kind of terminal
- Parity — Fast, light, and robust Ethereum implementation
- parity-bitcoin — The Parity Bitcoin client
- Pijul — a patch-based distributed version control system
- qmx/limonite — static blog/website generator
- quadrupleslap/leven [leven] — a simple, parallelized blog generator.
- Sandstorm Collections App
- Servo — a prototype web browser engine
Weld — Full fake REST API generator
- indiscipline/zrtstr — a command line utility for checking if stereo wav files are faux-stereo (i.e. have identical channels) and converting such files to mono.
- Emulators [emulator]
- Commodore 64
- ZX Spectrum
- Virtual Boy
- Emulator Development tools
- ioncodes/snesutilities — ROM analyser/extractor
- Games, see also 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
- citybound — The city sim you deserve
- ozkriff/zemeroth — a small 2D turn-based hexagonal strategy game
- rsaarelm/magog - A roguelike game in Rust
- cristicbz/rust-doom - A renderer for Doom, may progress to being a playable game
- Thinkofname/rust-quake - Quake map renderer in Rust
- Operating systems, see also A comparison of operating systems written in Rust
- System tools
- Aaronepower/tokei — counts the lines of code
- buster/rrun — a command launcher for Linux, similar to gmrun
- cristianoliveira/funzzy — a configurable filesystem watcher inspired by entr
- k0pernicus/zou — a download accelerator
- lotabout/skim — A fuzzy finder in pure rust
- mmstick/concurr — Alternative to GNU Parallel w/ a client-server architecture
- mmstick/fontfinder — GTK3 application for previewing and installing Google's fonts
- mmstick/parallel — Reimplementation of GNU Parallel
- mmstick/systemd-manager — a systemd service manager written in Rust using GTK-rs.
- mmstick/tv-renamer — a tv series renaming application with an optional GTK3 frontend.
- ogham/exa — a replacement for 'ls'
- Ralvke/logram — Push log files' updates to Telegram
- redox-os/ion — Next-generation system shell
- sharkdp/fd — A simple, fast and user-friendly alternative to find.
- uutils/coreutils — a cross-platform Rust rewrite of the GNU coreutils
- mattgreen/watchexec — Executes commands in response to file modifications
- Text editors
- Text processing
- arthrp/quick-skeleton — Project scaffolding tool, similar to Yeoman and Slush.
- yaa110/rubigo — Golang dependency tool and package manager, written in Rust
- amar-laksh/workstation - A commandline tool to help you manage your workstation by distancing you from your screen, locking your screen when you aren't there among other things with OPENCV!
- tailhook/vagga — a containerization tool without daemons
- Window Managers
- way-cooler/way-cooler — a customizable Wayland compositor (window manager)
- mcux/kylyp — A new Forum use rust, rocket, diesel, postgresql, and responsive design
- Clippy [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
- git-journal — The Git Commit Message and Changelog Generation Framework
- killercup/rustfix — automatically applies the suggestions made by rustc
- Module Linker — Extension that adds
<a>links to references in
extern cratestatements at GitHub.
- Racer — code completion for Rust
- rustfmt — a Rust code formatter
- Rustup — the Rust toolchain installer
- Rust Language Server — a server that runs in the background, providing IDEs, editors, and other tools with information about Rust programs
- artifact — the design doc tool made for developers
- semantic-rs — automatic crate publishing
- Cargo — the Rust package manager
- BurntSushi/cargo-benchcmp [cargo-benchcmp] — utility to compare Rust micro-benchmarks
- rsolomo/cargo-check [cargo-check] — a wrapper around
cargo rustc -- -Zno-transwhich can be helpful for running a faster compile if you only need correctness checks
- kbknapp/cargo-count [cargo-count] — lists source code counts and details about cargo projects, including unsafe statistics
- mmstick/cargo-deb — generate binary Debian packages
- pwoolcoc/cargo-do [cargo-do] — run multiple cargo commands in a row
- maxsnew/cargo-dot — generate graphs of a Cargo project's dependencies
- cardoe/cargo-ebuild [cargo-ebuild] - cargo extension that can generate ebuilds using the in-tree eclasses
- killercup/cargo-edit [cargo-edit] — allows you to add and list dependencies by reading/writing to your Cargo.toml file from the command line
- Ralvke/cargo-find [cargo-find] — Find crates from command line
- kbknapp/cargo-graph [cargo-graph] — updated fork of
cargo-dotwith additional features
- imp/cargo-info [cargo-info] — queries crates.io for crates details from command line
- sagiegurari/cargo-make [cargo-make] — Rust task runner and build tool.
- regexident/cargo-modules [cargo-modules] — A cargo plugin for showing a tree-like overview of a crate's modules.
- imp/cargo-multi [cargo-multi] — runs specified cargo command on multiple crates
- kbknapp/cargo-outdated [cargo-outdated] — displays when newer versions of Rust dependencies are available, or out of date
- sunng87/cargo-release [cargo-release] — tool for releasing git-managed cargo project, build, tag, publish, doc and push
- DanielKeep/cargo-script [cargo-script] — lets people quickly and easily run Rust "scripts" which can make use of Cargo's package ecosystem
- nabijaczleweli/cargo-update [cargo-update] — cargo subcommand for checking and applying updates to installed executables
- passcod/cargo-watch [cargo-watch] — utility for cargo to compile projects when sources change
- SiegeLord/RustCMake — an example project showing usage of CMake with Rust
- Ralvke/rust-loader — Webpack Rust loader (wasm)
- rr — rr is a lightweight tool for recording and replaying execution of applications
- emk/rust-musl-builder — Docker images for compiling static Rust binaries using musl-libc and musl-gcc, with static versions of useful C libraries
- kpcyrd/mini-docker-rust — An example project for very small rust docker images
- liuchong/docker-rustup — a multiple version (with musl tools) Rust Docker image
- messense/rust-musl-cross - Docker images for compiling static Rust binaries using musl-cross
- rust-lang-nursery/docker-rust — the official Rust Docker image
- Google App Engine
- DenisKolodin/rust-app-engine — App Engine Rust boilerplate
- emk/heroku-buildpack-rust — a buildpack for Rust applications on Heroku
- Cross compiling
- Raspberry Pi
- Ogeon/rust-on-raspberry-pi — instructions for how to cross compile Rust projects for the Raspberry Pi .
- rust-lang-nursery/rust-bindgen — a Rust bindings generator
- hansihe/Rustler — safe Rust bridge for creating Erlang NIF functions
- anima-engine/mrusty — mruby safe bindings for Rust
- neon-bindings/neon — use Rust from Node.js
- SSheldon/rust-objc — Objective-C Runtime bindings and wrapper for Rust
- rustr/rustr — use Rust from R, and use R in Rust
- RustDT —
- gnome-builder native support for rust and cargo since Version 3.22.2
- Ride —
- SolidOak — a simple IDE for Rust, based on GTK+ and Neovim
- Sublime Text
- Vim — the ubiquitous text editor
- Visual Studio
- PistonDevelopers/VisualRust — a Visual Studio extension for Rust
- Visual Studio Code
- sfikas/rusteval — A tool used to evaluate the output of retrieval algorithms
- ellisonch/rust-stopwatch — a stopwatch library
- nvzqz/static-assertions-rs [static_assertions] Compile-time assertions to ensure that invariants are met
- AlKass/polish — Mini Testing/Test-Driven Framework
- altsysrq/proptest [proptest] — property testing framework inspired by the Hypothesis framework for Python
- BurntSushi/quickcheck [quickcheck] — a Rust implementation of QuickCheck
- farcaller/shiny — a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi
- Mockito [mockito] — HTTP mocking
- reem/stainless [stainless] — Organized, flexible testing framework
- rust-fuzz/afl.rs — a Rust fuzzer, using AFL
- trust - A Travis CI and AppVeyor template to test your Rust crate on 5 architectures and publish binary releases of it for Linux, macOS and Windows
- xd009642/tarpaulin [tarpaulin] — A code coverage tool designed for Rust
- saurvs/astro-rust — astronomy for Rust
- mindriot101/rust-fitsio [fitsio] — fits interface library wrapping cfitsio
- flosse/rust-sun — A rust port of the JS library suncalc
- zonyitoo/coio-rs — a coroutine I/O library with a working-stealing scheduler
- dpc/mioco — Scalable, coroutine-based, asynchronous IO handling library
- alexcrichton/futures-rs — Zero-cost futures in Rust
- carllerche/mio — MIO is a lightweight IO library for Rust with a focus on adding as little overhead as possible over the OS abstractions
- GuillaumeGomez/rust-fmod — FMOD bindings
- jhasse/ears — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile
- jpernst/alto — OpenAL 1.1 bindings
- musitdev/portmidi-rs — PortMidi bindings
- ruuda/hound [Hound] — A WAV encoding and decoding library
- tomaka/rodio - A Rust audio playback library
- hngnaig/rust-accountkit — An implementation Facebook AccountKit for Rust
- Keats/jsonwebtoken — JSON Web Token lib in rust
- Rust-Bio — bioinformatics libraries in Rust.
- jaysonsantos/bmemcached-rs — Memcached library written in pure rust
- jaemk/cached — Simple function caching/memoization
- aisk/rust-memcache - Memcached client library
- crossbeam-rs/crossbeam – Support for parallelism and low-level concurrency in Rust
- Rayon – A data parallelism library for Rust
- rustcc/coroutine-rs – Coroutine Library in Rust
- zonyitoo/coio-rs – Coroutine I/O for 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
- imp/pager-rs — helps pipe your output through an external pager
- kkawakam/rustyline — Readline Implementation in Rust
- srijs/rust-copperline — pure-Rust Command Line Editing Library
- alexcrichton/tar-rs — tar archive reading/writing in Rust
- mvdnes/zip-rs — read and write ZIP archives
- BLAS [blas]
- Conjugate Gradient
- noshu/cg-sys — Rust binding of fortran CG+ subroutine
- fizyk20/rust-gmp — libgmp bindings
- GuillaumeGomez/rust-GSL — GSL bindings
- stainless-steel/lapack — LAPACK bindings
- noshu/lbfgsb-sys — Rust binding of fortran L-BFGS-B subroutine
- sebcrozet/nalgebra — low-dimensional linear algebra library
- indigits/scirust — scientific computing library in Rust
- boxtown/statrs — Robust statistical computation library in Rust
- Rustimization [rustimization]
- noshu/rustimization — A rust optimization library which includes L-BFGS-B and Conjugate Gradient algorithm
- mehcode/config-rs [config] — Layered configuration system for Rust applications (with strong support for 12-factor applications).
- briansmith/ring — Safe, fast, small crypto using Rust and BoringSSL's cryptography primitives.
- briansmith/webpki — Web PKI TLS X.509 certificate validation in Rust.
- ctz/rustls — a Rust implementation of TLS
- DaGenix/rust-crypto — cryptographic algorithms in Rust
- dnaq/sodiumoxide — libsodium bindings
- doublify/libblockchain — A Blockchain implementation
- klutzy/suruga — a Rust implementation of TLS 1.2
- libOctavo/octavo — Modular hash and crypto library in Rust
- rust-hyderabad/mpw-rs — Pure Rust implementation of the Master Password password manager
- racum/rust-djangohashers — A Rust port of the password primitives used in the Django Project. It doesn't require Django, only hashes and validates passwords according to its style.
- RNCryptor/rncryptor-rs — Pure Rust implementation of the RNCryptor AES file format
- sfackler/rust-native-tls — Bindings for native TLS libraries
- sfackler/rust-openssl — OpenSSL bindings
- sfackler/rust-security-framework — Bindings for Security Framework (OSX native crypto)
- steffengy/schannel-rs — Bindings for Schannel (Windows native TLS)
- sfackler/r2d2 — generic connection pool
- NoSQL [nosql]
- Cassandra [cassandra, cql]
- CouchDB [couchdb]
- Elasticsearch [elasticsearch]
- panoptix-za/influxdb-rs — asynchronous interface
- LMDB [lmdb]
- MongoDB [mongodb]
- Neo4j [cypher, neo4j]
- Redis [redis]
- spacejam/rust-rocksdb — RocksDB bindings
- zitsen/unqlite.rs — UnQLite bindings
- SQL [sql]
- Microsoft SQL
- MySql [mysql]
- PostgreSql [postgres, postgresql]
- Sqlite [sqlite]
- ORM [orm]
- bluss/rust-itertools —
- contain-rs — Extension of Rust's std::collections
- danielpclark/array_tool — Array helpers for Rust. Some of the most common methods you would use on Arrays made available on Vectors. Polymorphic implementations for handling most of your use cases.
- fizyk20/generic-array – a hack to allow for arrays sized by typenums
- Nemo157/roaring-rs – Roaring Bitmaps in Rust
- reem/rust-typemap —
Date and time
- Apache Kafka
- hyunsik/hdfs-rs — libhdfs bindings
- GildedHonour/atarashii_imap — 新しい (atarashii/new) IMAP client in Rust. It supports plain and secure connections
- gsquire/sendgrid-rs — unofficial Rust library for SendGrid API
- lettre/lettre — an SMTP-library for Rust
- staktrace/mailparse [mailparse] — a library for parsing real-world email files
- alex/rust-asn1 — a Rust ASN.1 (DER) serializer
- Byte swapping
- BurntSushi/byteorder — Supports big-endian, little-endian and native byte orders
- Cap'n Proto
- BurntSushi/rust-cbor — Supports JSON conversion and type-based encoding/decoding
- Character Encoding
- 3Hren/msgpack-rust — a pure Rust low/high level MessagePack implementation
- RON (Rusty Object Notation)
- webdesus/fs_extra — expanding opportunities standard library std::fs and std::io
- Temporary Files
See also Are we game yet?
- Entity-Component Systems (ECS)
- slide-rs/specs — Specs Parallel ECS
- Game Engines
- SDL [sdl]
- Georust — geospatial tools and libraries written in Rust
- rust-reverse-geocoder — a fast, offline reverse geocoder in Rust, inspired by https://github.com/thampiman/reverse-geocoder
- gfx-rs/gfx — A high-performance, bindless graphics API for Rust.
- redox-os/rusttype — a pure Rust alternative to libraries like FreeType
- OpenGL [opengl]
- Vulkan [vulkan]
- kud1ing/tinkerpop-rs — an example how to use Apache TinkerPop from Rust
- PistonDevelopers/conrod — An easy-to-use, immediate-mode, 2D GUI library written entirely in Rust
- GTK+ [gtk]
- gyscos/Cursive [cursive] —
- imgui-rs — Rust bindings for ImGui
- pcwalton/libui-rs — libui bindings
- ncurses [ncurses]
- jeaye/ncurses-rs — ncurses bindings
- nuklear-rust — Rust bindings for Nuklear
- saurvs/nfd-rs — nativefiledialog bindings
- sciter-sdk/rust-sciter — Sciter bindings
- abonander/img_hash — Perceptual image hashing and comparison for equality and similarity.
- chyh1990/imageproc — An advanced image processing library for Rust.
- PistonDevelopers/image — Basic imaging processing functions and methods for converting to and from image formats
- kali/opencv-rust — Rust bindings for OpenCV
- teovoinea/steganography [steganography] — A simple steganography library
- snewt/bnf — A library for parsing Backus–Naur form context-free grammars.
- rust-lang-nursery/log — Logging implementation for Rust
- slog-rs/slog — Structured, composable logging for Rust
- sfackler/log4rs — highly configurable logging framework modeled after Java's Logback and log4j libraries
See also About Rust’s Machine Learning Community.
- AtheMathmo/rusty-machine — Machine learning library for Rust
- autumnai/leaf — Open Machine Intelligence framework.
- tensorflow/rust — Rust language bindings for TensorFlow.
- maciejkula/rustlearn — Machine learning crate for Rust.
- tomaka/android-rs-glue — glue between Rust and Android
- andars/pebble.rs — a crate that allows Rust to be used to develop Pebble applications.
- achanda/ipnetwork — A library to work with IP networks in pure Rust
- Low level
- 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
- nikomatsakis/lalrpop — LR(1) parser generator for Rust
- nrc/zero — zero-allocation parsing of binary data
- pest-parser/pest — The Elegant Parser
- 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
- retep998/winapi-rs — Windows API bindings
- PistonDevelopers/dyon — A rusty dynamically typed scripting language
- gluon-lang/gluon — A small, statically-typed, functional programming language
- murarth/ketos — A Lisp dialect functional programming language serving as a scripting and extension language for rust
- jonathandturner/rhai — A tiny and fast embedded scripting language resembling a combination of JS and Rust
- sunng87/handlebars-rust — Handlebars template engine with inheritance, custom helper support.
- tailhook/marafet — Compiler for Jade-like template language to cito.js-based virtual dom
- BurntSushi/suffix — Linear time suffix array construction (with Unicode support)
- BurntSushi/tabwriter — Elastic tab stops (i.e., text column alignment)
- mgeisler/textwrap [textwrap] — Word wrap text (with support for hyphenation)
- pwoolcoc/ngrams — Construct n-grams from arbitrary iterators
- rust-lang/regex — Regular expressions (RE2 style)
- greyblake/whatlang-rs — Natural language detection library based on trigrams
- beneills/quantum — Advanced Rust quantum computer simulator
- ekse/unicorn-rs — Rust bindings for the unicorn CPU emulator
- saurvs/hypervisor-rs — Hardware-accelerated virtualization on OS X
- HTTP Client
- HTTP Server
- Gotham — A flexible web framework that does not sacrifice safety, security or speed.
- hyperium/hyper — an HTTP implementation
- GildedHonour/frank_jwt — JSON Web Token implementation in Rust.
- Iron — a middleware-based server framework
- sunng87/handlebars-iron — Handlebars-rust as an Iron web framework middleware.
- Nickel — inspired by Express
- Ogeon/rustful — a RESTful web framework for Rust
- Rocket — Rocket is web framework for Rust (nightly) with a focus on ease-of-use, expressability, and speed
- Rustless — a REST-like API micro-framework inspired by Grape and Hyper
- sappworks/sapper — A lightweight web framework built on async hyper, implemented in Rust language.
- tiny-http — Low level HTTP server library
- tomaka/rouille — Web framework in Rust
- oldaniel/zap - A lightning fast http framework for Rust
- actix/actix-web — A lightweight async web framework for Rust with websocket support
- cyderize/rust-websocket — a framework for dealing with WebSocket connections (both clients and servers)
- housleyjk/ws-rs — lightweight, event-driven WebSockets for Rust
- snapview/tungstenite-rs — Lightweight stream-based WebSocket implementation for Rust.
- actix/sockjs — SockJS server for Rust
- vityafx/urlshortener-rs [urlshortener] — A very simple urlshortener library for Rust.
- Decks & Presentations
- exercism.io — programming exercises that help you learn new concepts in Rust.
- Idiomatic Rust — A peer-reviewed collection of articles/talks/repos which teach idiomatic Rust.
- Learning Rust With Entirely Too Many Linked Lists — in-depth exploration of Rust's memory management rules, through implementing a few different types of list structures.
- Rust by Example
- Rust Cookbook — a collection of simple examples that demonstrate good practices to accomplish common programming tasks, using the crates of the Rust ecosystem.
- rust-learning — a collection of useful resources to learn Rust
- Rustlings — small exercises to get you used to reading and writing Rust code
- stdx — Learn these crates first as an extension to std
- University of Pennsylvania's Comp Sci Rust Programming Course
- New Rustacean — a podcast about learning Rust
- RustCamp 2015 Talks
- Rust Design Patterns
- Rust Guidelines
- RustBooks — list of RustBooks