Awesome Rust
A curated list of awesome Rust frameworks, libraries and software. Inspired by awesome-go.
Contributing
Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!
Table of contents
Applications
See also Rust — Production(organizations running Rust in production).
Audio
- 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.
Cryptocurrencies
- Bitcoin Satoshi's Vision — A Rust library for working with Bitcoin SV .
- cardano-cli — Cardano Command Line Interface (CLI)
- ChainX — Fully Decentralized Interchain Crypto Asset Management on Polkadot.
- coinbase-pro-rs — Coinbase pro client in Rust, supports sync/async/websocket
- ethaddrgen — Custom Ethereum vanity address generator made in Rust
- Grin — Evolution of the MimbleWimble protocol
- hdwallet — BIP-32 HD wallet related key derivation utilities.
- infincia/bip39-rs — Rust implementation of BIP39.
- Joystream — A user governed video platform.
- nearprotocol/nearcore — decentralized smart-contract platform for low-end mobile devices.
- Nervos CKB — Nervos CKB is a public permissionless blockchain, the common knowledge layer of Nervos network.
- Nimiq — Rust implementation of Nimiq node
- Parity-Bitcoin — The Parity Bitcoin client
- Parity-Bridge — Bridge between any two ethereum-based networks
- Parity-Ethereum — Fast, light, and robust Ethereum client
- Parity-Zcash — Rust implementation of the Zcash protocol
- Polkadot — Heterogeneous multi‑chain technology with pooled security
- rbtc — Convert BTC to any currency and vice-versa.
- rust-cardano — Rust implementation of Cardano primitives, helpers, and related applications
- Substrate — Generic modular blockchain template written in Rust
- wagu — Generate a wallet for any cryptocurrency
- zcash — Zcash is an implementation of the "Zerocash" protocol.
- Holochain — Scalable P2P alternative to blockchain for all those distributed apps you always wanted to build
Database
- indradb — Rust based graph database
- noria — Dynamically changing, partially-stateful data-flow for web application backends
- PumpkinDB — an event sourcing database engine
- seppo0010/rsedis — A Redis reimplementation in Rust
- ParityDB — Fast and reliable database, optimised for read operation
- tikv — A distributed KV database in Rust
Emulators
See also crates matching keyword 'emulator'.
- Commodore 64
- Gameboy
- NES
- Playstation
- ZX Spectrum
- Virtual Boy
- Intel 8080 CPU
- Emulator Development tools
Games
See also Games Made With Piston.
Graphics
Industrial automation
Operating systems
See also A comparison of operating systems written in Rust.
Productivity
- eureka — A CLI tool to input and store your ideas without leaving the terminal
- BenSchZA/pier — A central repository to manage (add, search metadata, etc.) all your one-liners, scripts, tools, and CLIs
Security tools
System tools
Text editors
- gchp/iota — A simple text editor
- mathall/rim — Vim-like text editor written in Rust
- Remacs — A community-driven port of Emacs to Rust.
- xi-editor — A modern editor with a backend written in Rust.
- xray — An experimental next-generation Electron-based text editor.
Text processing
- TankerHQ/ruplacer — Find and replace text in source files
- ripgrep — combines the usability of The Silver Searcher with the raw speed of grep
- sd — Intuitive find & replace CLI
- lavifb/todo_r — Find all your TODO notes with one command!
- whitfin/runiq — an efficient way to filter duplicate lines from unsorted input.
- whitfin/bytelines — Read input lines as byte slices for high efficiency.
- vishaltelangre/ff — Find files (ff) by name!
- xsv — A fast CSV command line tool (slicing, indexing, selecting, searching, sampling, etc.)
Utilities
- brycx/checkpwn — A Have I Been Pwned (HIBP) command-line utility tool that lets you easily check for compromised accounts and passwords.
- evansmurithi/cloak — A Command Line OTP (One Time Password) Authenticator application.
- arthrp/consoletimer - Simple timer for your terminal.
- myfreeweb/freepass — The free password manager for power users.
- arthrp/quick-skeleton — Project scaffolding tool, similar to Yeoman and Slush.
- yaa110/rubigo — Golang dependency tool and package manager, written in Rust
- whitfin/s3-concat — A command line tool to concatenate Amazon S3 files remotely using flexible patterns.
- whitfin/s3-meta — A command line tool to gather metadata about your Amazon S3 buckets.
- 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!
- aleshaleksey/AZDice — A dice roll success distribution generator for tabletop homebrewers.
- fcsonline/tmux-thumbs — A lightning fast version of tmux-fingers written in Rust, copy/pasting tmux like vimium/vimperator.
- repoch — Convert epoch to datetime and datetime to epoch
- yaa110/cb — Command line interface to manage clipboard
Video
- yuvadm/slingr — A simple CLI for streaming media files over a local network to UPnP media renderers
Virtualization
Window managers
Web
Web Servers
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
- git-journal — The Git Commit Message and Changelog Generation Framework
- rust-lang-nursery/rustfix — automatically applies the suggestions made by rustc
- just — A handy command runner for project-specific tasks
- Module Linker — Extension that adds
<a>
links to references in mod
, use
and extern crate
statements at GitHub.
- ptags — A parallel universal-ctags wrapper for git repository
- 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
- Rust Regex Playground — Web tool to evaluate rust regular expressions
- artifact — the design doc tool made for developers
- semantic-rs — automatic crate publishing
- fw — workspace productivity booster
- tinyrick a basic task dependency tool emphasizing Rust functions over raw shell commands.
Build system
- Cargo — the Rust package manager
- cargo-benchcmp — A utility to compare Rust micro-benchmarks
- cargo-bitbake — A cargo extension that can generate BitBake recipes utilizing the classes from meta-rust
- cargo-cache — inspect/manage/clean your cargo cache (
~/.cargo/
/${CARGO_HOME}
), print sizes etc
- cargo-check — A wrapper around
cargo rustc -- -Zno-trans
which can be helpful for running a faster compile if you only need correctness checks
- cargo-count — lists source code counts and details about cargo projects, including unsafe statistics
- cargo-deb — Generates binary Debian packages
- cargo-deps — build dependency graphs of Rust projects
- cargo-do — run multiple cargo commands in a row
- cargo-ebuild — cargo extension that can generate ebuilds using the in-tree eclasses
- cargo-edit — allows you to add and list dependencies by reading/writing to your Cargo.toml file from the command line
- cargo-find deprecated — Find crates from command line
- cargo-graph — updated fork of
cargo-dot
with additional features. Unmaintained, see cargo-deps
- cargo-info — queries crates.io for crates details from command line
- cargo-license — A cargo subcommand to quickly view the licenses of all dependencies.
- cargo-make — Rust task runner and build tool.
- cargo-modules — A cargo plugin for showing a tree-like overview of a crate's modules.
- cargo-multi — runs specified cargo command on multiple crates
- cargo-outdated — displays when newer versions of Rust dependencies are available, or out of date
- cargo-release — tool for releasing git-managed cargo project, build, tag, publish, doc and push
- cargo-script — lets people quickly and easily run Rust "scripts" which can make use of Cargo's package ecosystem
- cargo-testify — watches files changes, runs tests and notifies about the result with friendly OS notification
- cargo-tree – Cargo subcommand that visualizes a crate's dependency graph in a tree-like format
- cargo-update — cargo subcommand for checking and applying updates to installed executables
- cargo-watch — utility for cargo to compile projects when sources change
- liuchong/cargo-x — A very simple third-party cargo subcommand to execute a custom command
- dtolnay/cargo-expand — Expand macros in your source code
- CMake
- Github actions
- Webpack
Debugging
- GDB
- rust-gdb
- gdbgui — Browser based frontend for gdb to debug C, C++, Rust, and go.
- LLDB
- rr
- rr — rr is a lightweight tool for recording and replaying execution of applications
Deployment
- Docker
- Google App Engine
- Heroku
Embedded
Rust Embedded
- Cross compiling
- japaric/rust-cross — everything you need to know about cross compiling Rust programs
- japaric/xargo — effortless cross compilation of Rust programs to custom bare-metal targets like ARM Cortex-M
- Raspberry Pi
- Arduino
FFI
See also Foreign Function Interface, The Rust FFI Omnibus (a collection of examples of using code written in Rust from other languages) and FFI examples written in Rust.
- C
- C++
- Erlang
- Haskell
- Java
- Lua
- mruby
- Node.js
- Objective-C
- Perl
- Python
- getsentry/milksnake — extension for python setuptools that allows you to distribute dynamic linked libraries in Python wheels in the most portable way imaginable.
- dgrunwald/rust-cpython — Python bindings
- PyO3/PyO3 — Rust bindings for the Python interpreter
- R
- Ruby
- Web Assembly
IDEs
See also Are we (I)DE yet? and Rust Tools.
Pattern recognition
- sfikas/rusteval — A tool used to evaluate the output of retrieval algorithms
Profiling
Services
- deps.rs — Detect outdated or insecure dependencies
- docs.rs — Automatic documentation generation of crates
Static analysis
[assert, static]
Testing
[testing]
- mockiato — A strict, yet friendly mocking library for Rust 2018
- mutagen — A source-level mutation testing framework (nightly only)
- AlKass/polish — Mini Testing/Test-Driven Framework
- proptest — property testing framework inspired by the Hypothesis framework for Python
- quickcheck — A Rust implementation of QuickCheck
- mockito — HTTP mocking
- speculate — An RSpec inspired minimal testing framework for Rust
- rust-fuzz/afl.rs — A Rust fuzzer, using AFL
- tarpaulin — A code coverage tool designed for Rust
- 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
Transpiling
Libraries
Artificial Intelligence
Genetic algorithms
- Martin1887/oxigen — Fast, parallel, extensible and adaptable genetic algorithm library. A example using this library solves the N Queens problem for N = 255 in only few seconds and using less than 1 MB of RAM.
- innoave/genevo — Execute genetic algorithm (GA) simulations in a customizable and extensible way.
- willi-kappler/darwin-rs — This library allows you to write evolutionary algorithms (EA) using the Rust programming language. Written by Willi Kappler, License: MIT — Version 0.4 (2017.06.26).
- m-decoster/RsGenetic — Genetic Algorithm library in Rust. In maintenance mode.
- mneumann/evo-rs — Evolutionary Algorithm Library for Rust. Without changes for 3 years.
- yurytsoy/revonet — Rust implementation of real-coded GA for solving optimization problems and training of neural networks.
Machine learning
[machine learning]
See also About Rust’s Machine Learning Community.
Astronomy
[astronomy]
Asynchronous
- zonyitoo/coio-rs — A coroutine I/O library with a working-stealing scheduler
- dpc/mioco — Scalable, coroutine-based, asynchronous IO handling library
- TeaEntityLab/fpRust — Monad/MonadIO, Handler, Coroutine/doNotation, Functional Programming features for Rust
- rust-lang-nursery/futures-rs — Zero-cost futures in Rust
- mio — MIO is a lightweight IO library for Rust with a focus on adding as little overhead as possible over the OS abstractions
- Xudong-Huang/may — rust stackful coroutine library
- rustasync/runtime - A runtime agnostic API designed to make async feel like its part of stdlib
Audio
[audio]
Authentication
Automotive
Bioinformatics
- Rust-Bio — bioinformatics libraries in Rust.
Caching
Concurrency
Cloud
Command-line
- Argument parsing
- Human-centered design
- Line editor
- Pipeline
- Progress
- Prompt
- Style
- TUI
Compression
- Brotli
- bzip2
- gzip
- miniz
- snappy
- tar
- zip
Computation
Configuration
Cryptography
[crypto, cryptography]
)
Database
[database]
Data processing
- bluss/ndarray — N-dimensional array with array views, multidimensional slicing, and efficient operations
- kernelmachine/utah — Dataframe structure and operations in Rust
- weld-project/weld — High-performance runtime for data analytics applications
Data structures
Data visualization
Date and time
[date, time]
Distributed systems
- Antimony
- Apache Hadoop
- whitfin/efflux — Easy Hadoop Streaming and MapReduce interfaces in Rust.
- Apache Kafka
- Beanstalkd
- HDFS
Email
[email, imap, smtp]
Encoding
[encoding]
- ASN.1
- Bencode
- Binary
- BSON
- Byte swapping
- Cap'n Proto
- CBOR
- Character Encoding
- CRC
- CSV
- FlatBuffers
- frol/flatc-rust — FlatBuffers compiler (flatc) integration for Cargo build scripts
- HAR
- mandrean/har-rs — A HTTP Archive Format (HAR) serialization & deserialization library
- HTML
- JSON
- Jsonnet
- MsgPack
- PEM
- Postman Collection
- ProtocolBuffers
- RON (Rusty Object Notation)
- Tnetstring
- TOML
- XML
- YAML
Filesystem
[filesystem]
- Operations
- Temporary Files
Game development
See also Are we game yet?
- Allegro
- Challonge
- Corange
- Entity-Component Systems (ECS)
- Game Engines
- Amethyst — Data-oriented game engine
- Piston —
- ggez — A lightweight game framework for making 2D games with minimum friction
- Kiss3D — A Keep It Simple, Stupid 3d graphics engine written with Rust
- Unrust — unrust — A pure rust based (webgl 2.0 / native) game engine
- Vulkust — Vulkust — A safe, highly multithreaded, Vulkan based game engine written with Rust.
- SDL [sdl]
- SFML
- Tcod-rs
- Victorem
- Voxlap
Geospatial
[geo, gis]
Graphics
[graphics]
Graph processing
GUI
[gui]
Image processing
Language specification
- shnewto/bnf — A library for parsing Backus–Naur form context-free grammars.
Logging
[log]
Macro
- cute
- hado
- ludat/hado-rs — A little macro for writing haskell-like do expressions without too much ceremony
Markup language
Mobile
Geal/rust_on_mobile
- 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
- Pebble
- andars/pebble.rs — A crate that allows Rust to be used to develop Pebble applications.
Network programming
- HTTP
- FTP
- IPNetwork
- JSON-RPC
- Low level
- libpnet/libpnet — A cross-platform, low level networking
- m-labs/smoltcp — A standalone, event-driven TCP/IP stack that is designed for bare-metal, real-time systems
- tokio-rs/tokio — A network application framework for rapid development and highly scalable production deployments of clients and servers.
- dylanmckay/protocol — Custom TCP/UDP protocol definitions
- actix/actix — Actor library for Rust
- NanoMsg
- Nng
- NNTP
- POP3
- SSH
- Stomp
- uTP
- ZeroMQ
- CoAP
Parsing
Packaging formats
Peripherals
Platform specific
-
Cross-platform
-
Linux
-
Unix-like
-
Windows
-
FreeBSD
Scripting
[scripting]
- 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
- moss — A dynamically typed scripting language
- jonathandturner/rhai — A tiny and fast embedded scripting language resembling a combination of JS and Rust
Template engine
- Handlebars
- HTML
- Mustache
- tailhook/marafet — Compiler for Jade-like template language to cito.js-based virtual dom
Text processing
Text search
Unsafe
- zerocopy - Utilities for safely reinterpreting arbitrary byte sequences as native Rust types
Virtualization
Web programming
See also Are we web yet? and Rust web framework comparison.
- Client-side / WASM
- cargo-web — A Cargo subcommand for the client-side Web
- seed - A Rust framework for creating web apps
- stdweb — A standard library for the client-side Web
- yew — Rust framework for making client web apps
- HTTP Client
- HTTP Server
- actix/actix-web — A lightweight async web framework for Rust with websocket support
- branca — A Pure Rust implementation of Branca for Authenticated and Encrypted API tokens.
- 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.
- handlebars-rust — an Iron web framework middleware.
- Iron — A middleware-based server framework
- 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
- Saphir — A progressive web framework with low-level control, without the pain.
- rustforce/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
- carllerche/tower-web [tower-web] — A fast, boilerplate free, web framework for Rust
- danclive/sincere — A micro web framework for Rust(stable) based on hyper and multithreading.
- oltdaniel/zap — A lightning fast http framework for Rust
- WebSocket
- Miscellaneous
- cargonauts — A web framework intended for building maintainable, well-factored web apps.
- pyros2097/rust-embed — A macro to embed static assets into the rust binary
- utkarshkukreti/select.rs [select] — A library to extract useful data from HTML documents, suitable for web scraping.
- pwoolcoc/soup [soup] - A library similar to Pythons BeautifulSoup, designed to enable quick and easy manipulation and querying of HTML documents.
- Reverse Proxy
- Static Site Generators
Registries
A registry allows you to publish your Rust libraries as crate packages, to share them with others publicly and privately.
- Crates - The official public registry for Rust/Cargo.
- Cloudsmith :heavy_dollar_sign: - A fully managed package management SaaS, with first-class support for public and private Cargo/Rust registries (plus many others). Has a generous free-tier and is also completely free for open-source.
Resources
License
MIT