204 KiB
Awesome Rust
A curated list of Rust code and resources.
If you want to contribute, please read this.
Table of contents
- Applications
- Development tools
- Libraries
- Artificial Intelligence
- Astronomy
- Asynchronous
- Audio and Music
- Authentication
- Automotive
- Bioinformatics
- Caching
- Cloud
- Command-line
- Compression
- Computation
- Concurrency
- Configuration
- Cryptography
- Data processing
- Data streaming
- Data structures
- Data visualization
- Database
- Date and time
- Distributed systems
- Domain driven design
- Encoding
- Filesystem
- Functional Programming
- Game development
- Geospatial
- Graph processing
- Graphics
- GUI
- Image processing
- Language specification
- Logging
- Macro
- Markup language
- Mobile
- Network programming
- Packaging formats
- Parsing
- Peripherals
- Platform specific
- Scripting
- Simulation
- Task scheduling
- Template engine
- Text processing
- Text search
- Unsafe
- Virtualization
- Web programming
- Registries
- Resources
- License
Applications
See also Rust — Production organizations running Rust in production.
- alacritty — A cross-platform, GPU enhanced terminal emulator
- andschwa/rust-genetic-algorithm — A genetic algorithm for academic benchmark problems
- asm-cli-rust — An interactive assembly shell written in rust.
- cloudflare/boringtun — A Userspace WireGuard VPN Implementation
- datafusion — Apache Arrow DataFusion and Ballista query engines
- denoland/deno — A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio
- 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.
- Herd — an experimental HTTP load testing application
- ivanceras/diwata — A database administration tool for postgresql
- jedisct1/flowgger — A fast, simple and lightweight data collector
- kalker - A scientific calculator that supports math-like syntax with user-defined variables, functions, derivation, integration, and complex numbers. Cross platform + WASM support
- kytan — High Performance Peer-to-Peer VPN
- linkerd/linkerd2-proxy — Ultralight service mesh for Kubernetes.
- MaidSafe — A decentralized platform.
- mdBook — A command line utility to create books from markdown files
- nicohman/eidolon — A steam and drm-free game registry and launcher for linux and macosx
- notty — A new kind of terminal
- Pijul — A patch-based distributed version control system
- Rudr — A Kubernetes implementation of the Open Application Model specification
- rx — Vi inspired Modern Pixel Art Editor
- Servo — A prototype web browser engine
- tiny — A terminal IRC client
- trust-dns — A DNS-server
- Weld — Full fake REST API generator
- wezterm — A GPU-accelerated cross-platform terminal emulator and multiplexer
Audio and Music
- enginesound — A GUI and command line application used to procedurally generate semi-realistic engine sounds. Featuring in-depth configuration, variable sample rate and a frequency analysis window.
- ncspot - Cross-platform ncurses Spotify client, inspired by ncmpc and the likes.
- Polaris — A music streaming application.
- Spotify TUI — A Spotify client for the terminal written in Rust.
- Spotifyd — An open source Spotify client running as a UNIX daemon.
Cryptocurrencies
- Bitcoin Satoshi's Vision [sv] — A Rust library for working with Bitcoin SV .
- cardano-cli — Cardano Command Line Interface (CLI)
- ChainX — Fully Decentralized Interchain Crypto Asset Management on Polkadot.
- CITA — A high performance blockchain kernel for enterprise users.
- coinbase-pro-rs — Coinbase pro client in Rust, supports sync/async/websocket
- Diem — Diem’s mission is to enable a simple global currency and financial infrastructure that empowers billions of people.
- ethaddrgen — Custom Ethereum vanity address generator made in Rust
- Forest - Rust Filecoin implementation
- Grin — Evolution of the MimbleWimble protocol
- hdwallet [hdwallet] — BIP-32 HD wallet related key derivation utilities.
- Holochain — Scalable P2P alternative to blockchain for all those distributed apps you always wanted to build. The link to the old repo is this which is no longer maintained.
- ibc-rs - Rust implementation of the Interblockchain Communication protocol
- infincia/bip39-rs [bip39] — Rust implementation of BIP39.
- interBTC — Trustless and fully decentralized Bitcoin bridge to Polkadot and Kusama.
- Joystream — A user governed video platform
- Lighthouse — Rust Ethereum 2.0 Client
- near/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
- Phala-Network/phala-blockchain — Confidential smart contract blockchain based on Intel SGX and Substrate
- Polkadot — Heterogeneous multi‑chain technology with pooled security
- rust-bitcoin — Library with support for de/serialization, parsing and executing on data structures and network messages related to Bitcoin.
- rust-cardano — Rust implementation of Cardano primitives, helpers, and related applications
- Solana — Incredibly fast, highly scalable blockchain using Proof-of-History.
- Substrate — Generic modular blockchain template written in Rust
- tendermint-rs - Rust implementation of Tendermint blockchain data structures and clients
- wagyu [wagyu] — Rust library for generating cryptocurrency wallets
- zcash — Zcash is an implementation of the "Zerocash" protocol.
Database
- Databend - A Modern Real-Time Data Processing & Analytics DBMS with Cloud-Native Architecture
- indradb — Rust based graph database
- Lucid — High performance and distributed KV store accessible through a HTTP API.
- Materialize - Streaming SQL database powered by Timely Dataflow 💲
- noria [noria] — Dynamically changing, partially-stateful data-flow for web application backends
- ParityDB — Fast and reliable database, optimised for read operation
- PumpkinDB — an event sourcing database engine
- seppo0010/rsedis — A Redis reimplementation in Rust
- Skytable — A multi-model NoSQL database
- sled — A (beta) modern embedded database
- TerminusDB - open source graph database and document store
- tikv — A distributed KV database in Rust
- WooriDB - General purpose time serial database inspired by Crux and Datomic.
Emulators
See also crates matching keyword 'emulator'.
- Commodore 64
- Flash Player
- Ruffle — Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both the desktop and the web using WebAssembly.
- Gameboy
- Gekkio/mooneye-gb —
- mohanson/gameboy — Full featured Cross-platform GameBoy emulator. Forever boys!.
- mvdnes/rboy —
- Gameboy Advance
- michelhe/rustboyadvance-ng - RustboyAdvance-ng is a Gameboy Advance emulator with desktop, android and WebAssembly support.
- Intel 8080 CPU
- mohanson/i8080 — Intel 8080 cpu emulator by Rust
- NES
- Virtual Boy
- ZX Spectrum
Games
See also Games Made With Piston.
- citybound — The city sim you deserve
- cristicbz/rust-doom — A renderer for Doom, may progress to being a playable game
- doukutsu-rs — A Rust reimplementation of Cave Story engine with some enhancements.
- garkimasera/rusted-ruins — Extensible open world rogue like game with pixel art
- lifthrasiir/angolmois-rust — A minimalistic music video game which supports the BMS format
- ozkriff/zemeroth — A small 2D turn-based hexagonal strategy game
- rhex — hexagonal ascii roguelike
- rsaarelm/magog — A roguelike game in Rust
- schulke-214/rsnake — Snake written in Rust.
- SoftbearStudios/mk48 — Mk48.io is an online multiplayer naval combat game
- swatteau/sokoban-rs — A Sokoban implementation
- thetawavegame/thetawave-legacy - A space shooter game that strives to be an entry point for new game developers to make their first contributions.
- Thinkofname/rust-quake — Quake map renderer in Rust
- Veloren — An open world, open source multiplayer voxel RPG game currently in alpha development
- Zone of Control — A turn-based hexagonal strategy game
Graphics
- ivanceras/svgbob — converts ASCII diagrams into SVG graphics
- Limeth/euclider — A real-time 4D CPU ray tracer
- RazrFalcon/resvg — An SVG rendering library.
- RazrFalcon/svgcleaner — tidies SVG graphics
- turnage/valora — A library for generative fine art
- Twinklebear/tray_rust — A ray tracer
Image processing
- Imager — Automated image optimization.
Industrial automation
- locka99/opcua — A pure rust OPC UA library.
- slowtec/tokio-modbus — A tokio-based modbus library.
Observability
- avito-tech/bioyino — A high-performance scalable StatsD compatible server.
- OpenTelemetry — OpenTelemetry provides a single set of APIs, libraries, agents, and collector services to capture distributed traces and metrics from your application. You can analyze them using Prometheus, Jaeger, and other observability tools.
- Scaphandre - A power consumption monitoring agent, to track host and each service power consumption and enable designing systems and applications for more sustainability. Designed to fit any monitoring toolchain (already supports prometheus, warp10, riemann...).
- vectordotdev/vector — A High-Performance, Logs, Metrics, & Events Router.
Operating systems
See also A comparison of operating systems written in Rust.
- 0x59616e/SteinsOS — An OS for armv8-a architecture.
- nebulet/nebulet — A microkernel that implements a WebAssembly "usermode" that runs in Ring 0.
- redox-os/redox —
- thepowersgang/rust_os —
- tock/tock — A secure embedded operating system for Cortex-M based microcontrollers
Productivity
- espanso — A cross-platform Text Expander written in Rust
- eureka — A CLI tool to input and store your ideas without leaving the terminal
- pier-cli/pier — A central repository to manage (add, search metadata, etc.) all your one-liners, scripts, tools, and CLIs
Security tools
- arvancloud/libinjection-rs — Rust bindings for libinjection
- epi052/feroxbuster - A simple, fast, recursive content discovery tool written in Rust (
- kpcyrd/authoscope — A scriptable network authentication cracker
- kpcyrd/rshijack — A TCP connection hijacker, rust rewrite of shijack
- kpcyrd/sn0int — A semi-automatic OSINT framework and package manager
- kpcyrd/sniffglue — A secure multithreaded packet sniffer
- ObserverWard_0x727 — Community based web technologies analysis tool.
- phra/rustbuster — A Comprehensive Web Fuzzer and Content Discovery Tool
- ripasso — A password manager, filesystem compatible with pass
- rustscan/rustscan — Make Nmap faster with this port scanning tool
System tools
- ajeetdsouza/zoxide — A fast alternative to
cd
that learns your habits - Alonely0/Voila — Voila is a domain-specific language launched through CLI tool for operating with files and directories in massive amounts in a fast & reliable way.
- bandwhich — Terminal bandwidth utilization tool
- bottom - Yet another cross-platform graphical process/system monitor.
- brocode/fblog — Small command-line JSON Log viewer
- bustd - Lightweight process killer daemon to handle out-of-memory scenarios on Linux.
- buster/rrun — A command launcher for Linux, similar to gmrun
- cantino/mcfly - Fly through your shell history. Great Scott!
- crabz - Multi-threaded compression and decompression CLI tool
- cristianoliveira/funzzy — A configurable filesystem watcher inspired by entr
- dalance/procs — A modern replacement for 'ps' written by Rust
- ddh — Fast duplicate file finder
- diskonaut — Terminal visual disk space navigator
- dust — A more intuitive version of du
- fselect — Find files with SQL-like queries
- gitui - Blazing fast terminal client for git written in Rust.
- k0pernicus/zou — A download accelerator
- Kondo - CLI & GUI tool for deleting software project artifacts and reclaiming disk space
- lotabout/rargs [rargs] — xargs + awk with pattern matching support
- lotabout/skim — A fuzzy finder in pure rust
- Luminarys/synapse — Flexible and fast BitTorrent daemon.
- m4b/bingrep — Greps through binaries from various OSs and architectures, and colors them.
- mitnk/cicada — A bash-like Unix shell
- 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/tv-renamer — A tv series renaming application with an optional GTK3 frontend.
- mxseev/logram — Push log files' updates to Telegram
- nickgerace/gfold [gfold] - CLI tool to help keep track of multiple Git repositories
- nivekuil/rip - A safe and ergonomic alternative to
rm
- ogham/exa — A replacement for 'ls'
- orhun/kmon — Linux Kernel Manager and Activity Monitor
- ouch - Painless compression and decompression on the command-line
- Peltoche/lsd — An ls with a lot of pretty colors and awesome icons
- pop-os/popsicle — GTK3 & CLI utility for flashing multiple USB devices in parallel
- pop-os/system76-power — Linux power management daemon (DBus-interface) with CLI tool.
- pueue — Manage your long running shell commands.
- redox-os/ion — Next-generation system shell
- sharkdp/bat — A cat(1) clone with wings.
- sharkdp/fd — A simple, fast and user-friendly alternative to find.
- sitkevij/hex — A colorized hexdump terminal utility.
- uutils/coreutils — A cross-platform Rust rewrite of the GNU coreutils
- watchexec — Executes commands in response to file modifications
- XAMPPRocky/tokei — counts the lines of code
Task scheduling
- delicate — A lightweight and distributed task scheduling platform written in rust.
Text editors
- amp — Inspired by Vi/Vim.
- gchp/iota — A simple text editor
- helix — A post-modern modal text editor inspired by Neovim/Kakoune.
- ilai-deutel/kibi — A tiny (≤1024 LOC) text editor with syntax highlighting, incremental search and more.
- mathall/rim — Vim-like text editor written in Rust
- ox — An independent Rust text editor that runs in your terminal!
- Remacs — A community-driven port of Emacs to Rust.
- vamolessa/pepper [pepper] — An opinionated modal editor to simplify code editing from the terminal
- xi-editor — A modern editor with a backend written in Rust.
- xray — An experimental next-generation Electron-based text editor.
Text processing
- dmerejkowsky/ruplacer — Find and replace text in source files
- grex — A command-line tool and library for generating regular expressions from user-provided test cases
- Lisprez/so_stupid_search — A simple and fast string search tool for human beings
- phiresky/ripgrep-all — ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc.
- replicadse/complate — An in-terminal text templating tool designed for standardizing messages (like for GIT commits).
- ripgrep — combines the usability of The Silver Searcher with the raw speed of grep
- sd — Intuitive find & replace CLI
- sstadick/hck - A faster and more featureful drop in replacement for
cut
- vishaltelangre/ff — Find files (ff) by name!
- whitfin/bytelines [bytelines] — Read input lines as byte slices for high efficiency.
- whitfin/runiq — an efficient way to filter duplicate lines from unsorted input.
- xsv — A fast CSV command line tool (slicing, indexing, selecting, searching, sampling, etc.)
Image processing
- Imager — Automated image optimization.
- shssoichiro/oxipng [oxipng] — Multithreaded PNG optimizer written in Rust.
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.
- fcsonline/tmux-thumbs — A lightning fast version of tmux-fingers written in Rust, copy/pasting tmux like vimium/vimperator.
- guoxbin/dtool — A useful command-line tool collection to assist development including conversion, codec, hashing, encryption, etc.
- nomino — Batch rename utility for developers
- raftario/licensor — write licenses to stdout
- rustdesk/rustdesk — A remote desktop software, great alternative to TeamViewer and AnyDesk.
- tversteeg/emplace — Synchronize installed packages on multiple machines
- unrelentingtech/freepass — The free password manager for power users.
- vamolessa/verco [verco] — A simple Git/Hg tui client focused on keyboard shortcuts
- vaultwarden — Alternative implementation of the Bitwarden server API written in Rust
- yaa110/cb — Command line interface to manage clipboard
Video
- dertuxmalwieder/yaydl [yaydl] - A simple video downloader
- harlanc/xiu — A powerful and secure live server by pure rust (rtmp/httpflv/hls/relay).
- xiph/rav1e — The fastest and safest AV1 encoder.
Virtualization
- containers/youki — A container runtime in Rust
- firecracker-microvm/firecracker — A lightweight virtual machine for container workload Firecracker Microvm
- oracle/railcar — Docker-like container OCI runtime implementation in Rust
- tailhook/vagga — A containerization tool without daemons
Web
- LemmyNet/lemmy — A link aggregator / reddit clone for the fediverse
- MASQ-Project/Node — MASQ Node software provides a decentralized mesh-network of nodes for global users to access normal internet content - next evolution of tech beyond Tor & VPN
- Plume-org/Plume — ActivityPub federating blogging application
Web Servers
- joseluisq/static-web-server — A blazing fast and asynchronous web server for static files-serving. ⚡
- mufeedvh/binserve — A blazingly fast static web server with routing, templating, and security in a single binary you can set up with zero code
- ronanyeah/rust-hasura — A demonstration of how a Rust GraphQL server can be used as a remote schema with Hasura
- svenstaro/miniserve — A small, self-contained cross-platform CLI tool that allows you to just grab the binary and serve some file(s) via HTTP
- thecoshman/http — Host These Things Please — A basic http server for hosting a folder fast and simply
- TheWaWaR/simple-http-server — simple static http server
- wyhaya/see — Static HTTP file server
Development tools
- artifact — the design doc tool made for developers
- 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
- datanymizer/datanymizer - Powerful database anonymizer with flexible rules
- delta — A syntax-highlighter for git and diff output
- dotenv-linter — Linter for
.env
files - fw — workspace productivity booster
- geiger — A program that list statistics related to usage of unsafe Rust code in a Rust crate and all its dependencies
- git-journal — The Git Commit Message and Changelog Generation Framework
- just — A handy command runner for project-specific tasks
- mask — A CLI task runner defined by a simple markdown file
- Module Linker — Extension that adds
<a>
links to references inmod
,use
andextern crate
statements at GitHub. - ptags — A parallel universal-ctags wrapper for git repository
- Racer — code completion for Rust
- Rust Language Server — A server that runs in the background, providing IDEs, editors, and other tools with information about Rust programs
- Rust Search Extension — A handy browser extension to search crates and docs in address bar (omnibox).
- rust-lang/rustfix — automatically applies the suggestions made by rustc
- rustfmt — A Rust code formatter
- Rustup — the Rust toolchain installer
- scriptisto A language-agnostic "shebang interpreter" that enables you to write one file scripts in compiled languages.
- semantic-rs — automatic crate publishing
- synth — A declarative data generation engine.
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-generate A generator of a rust project by leveraging a pre-existing git repository as a template.
- cargo-graph — updated fork of
cargo-dot
with additional features. Unmaintained, seecargo-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-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
- dtolnay/cargo-expand — Expand macros in your source code
- CMake
- Devolutions/CMakeRust — useful for integrating a Rust library into a CMake project
- SiegeLord/RustCMake — an example project showing usage of CMake with Rust
- Github actions
- icepuma/rust-action — rust github action
- peaceiris/actions-mdbook — GitHub Actions for mdBook
Debugging
- GDB
- gdbgui — Browser based frontend for gdb to debug C, C++, Rust, and go.
- LLDB
- CodeLLDB — A LLDB extension for Visual Studio Code.
Deployment
- Docker
- 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
- Github Pages
- wasm-template-rust — A wasm template for Rust to publish to gh-pages without npm-deploy
- Heroku
- emk/heroku-buildpack-rust — A buildpack for Rust applications on Heroku
Embedded
- Arduino
- avr-rust/ruduino ^`^t Reusable components for the Arduino Uno.
- 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
- Ogeon/rust-on-raspberry-pi — instructions for how to cross compile Rust projects for the Raspberry Pi .
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
- rlhunt/cbindgen — generates C header files from Rust source files. Used in Gecko for WebRender
- Sean1708/rusty-cheddar — generates C header files from Rust source files
- C++
- dtolnay/cxx — Safe interop between Rust and C++
- rust-cpp - Embed C++ code directly in Rust.
- rust-lang/rust-bindgen — A Rust bindings generator
- Erlang
- rusterlium/rustler — safe Rust bridge for creating Erlang NIF functions
- Haskell
- mgattozzi/curryrs — Bridge the gap between Haskell and Rust
- Java
- bennettanderson/rjni — use Java from Rust
- drrb/java-rust-example — use Rust from Java
- j4rs — use Java from Rust
- jni — use Rust from Java
- jni-sys — Rust definitions corresponding to jni.h
- rucaja — use Java from Rust
- Lua
- jcmoyer/rust-lua53 — Lua 5.3 bindings for Rust
- lilyball/rust-lua — Safe Rust bindings to Lua 5.1
- tickbh/td_rlua [td_rlua] — Zero-cost high-level lua 5.3 wrapper for Rust
- tomaka/hlua — Rust library to interface with Lua
- mruby
- anima-engine/mrusty — mruby safe bindings for Rust
- Node.js
- infinyon/node-bindgen - Easy way to generate nodejs module using Rust
- neon-bindings/neon — Rust bindings for writing safe and fast native Node.js modules
- Objective-C
- SSheldon/rust-objc — Objective-C Runtime bindings and wrapper for Rust
- Perl
- vickenty/perl-xs — Create Perl XS modules using Rust
- Python
- dgrunwald/rust-cpython — Python bindings
- getsentry/milksnake — extension for python setuptools that allows you to distribute dynamic linked libraries in Python wheels in the most portable way imaginable.
- PyO3/PyO3 — Rust bindings for the Python interpreter
- Ruby
- d-unseductable/ruru — native Ruby extensions written in Rust
- danielpclark/rutie — native Ruby extensions written in Rust and vice versa
- tildeio/helix — write Ruby classes in Rust
- Web Assembly
- rhysd/wain - wain: WebAssembly INterpreter from scratch in Safe Rust with zero dependency
- rustwasm/wasm-bindgen — A project for facilitating high-level interactions between wasm modules and JS.
- rustwasm/wasm-pack — 📦 ✨ pack up the wasm and publish it to npm!
IDEs
See also Are we (I)DE yet? and Rust Tools.
- Atom
- rust-lang/atom-ide-rust — Rust IDE support for Atom, powered by the Rust Language Server (RLS)
- zargony/atom-language-rust
- Eclipse
- Emacs
- emacs-racer — Autocompletion (see also company and auto-complete)
- flycheck-rust — Rust support for Flycheck
- rust-mode — Rust Major Mode
- rustic - Rust development environment for Emacs
- gitpod.io — Online IDE with full Rust support based on Rust Language Server
- gnome-builder native support for rust and cargo since Version 3.22.2
- IntelliJ
- Kakoune
- kak-lsp/kak-lsp — LSP client. Implemented in Rust and supports rls out of the box.
- Ride —
- SolidOak — A simple IDE for Rust, based on GTK+ and Neovim
- Sublime Text
- rust-lang/rust-enhanced — official Rust package
- Vim — the ubiquitous text editor
- autozimu/LanguageClient-neovim — LSP client. Implemented in Rust and supports rls out of the box.
- rust.vim — provides file detection, syntax highlighting, formatting, Syntastic integration, and more.
- vim-racer — allows vim to use Racer for Rust code completion and navigation.
- Visual Studio
- dgriffen/rls-vs2017 — Rust support for Visual Studio 2017 Preview
- PistonDevelopers/VisualRust — A Visual Studio extension for Rust
- Visual Studio Code
- CodeLLDB — A LLDB extension
- crates — crates is an extension for crates.io dependencies.
- rust-analyzer — An alternative rust language server to the RLS
- rust-lang/rls-vscode — Rust support for Visual Studio Code
Profiling
- bheisler/criterion.rs — Statistics-driven benchmarking library for Rust
- Bytehound — A memory profiler for Linux
- ellisonch/rust-stopwatch — A stopwatch library
- FlameGraphs
- llogiq/flame —
- mrhooray/torch — generates FlameGraphs based on DWARF Debug Info
- sharkdp/hyperfine — A command-line benchmarking tool
Services
- deps.rs — Detect outdated or insecure dependencies
- docs.rs — Automatic documentation generation of crates
Static analysis
- facebookexperimental/MIRAI — an abstract interpreter operating on Rust's mid-level intermediate representation (MIR)
- static_assertions — Compile-time assertions to ensure that invariants are met
Testing
[testing]
- AlKass/polish — Mini Testing/Test-Driven Framework
- cargo-dinghy - A cargo extension to simplify running library tests and benches on smartphones and other small processor devices.
- cucumber-rust — An implementation of the Cucumber testing framework for Rust.
- demonstrate — Declarative Testing Framework
- fake-rs — A library for generating fake data
- goldenfile [goldenfile] - A library providing a simple API for goldenfile testing.
- httpmock — HTTP mocking
- mockiato — A strict, yet friendly mocking library for Rust 2018
- mockito — HTTP mocking
- mutagen [mutagen) — A source-level mutation testing framework (nightly only)
- nrxus/faux — A library to create mocks out of structs.
- proptest — property testing framework inspired by the Hypothesis framework for Python
- quickcheck — A Rust implementation of QuickCheck
- rstest — Fixture-based test framework for Rust
- rust-fuzz/afl.rs — A Rust fuzzer, using AFL
- speculate — An RSpec inspired minimal testing framework for Rust
- 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
- BayesWitnesses/m2cgen — A CLI tool to transpile trained classic machine learning models into a native Rust code with zero dependencies.
- immunant/c2rust — C to Rust translator and cross checker built atop Clang/LLVM.
- jameysharp/corrode — A C to Rust translator written in Haskell.
Libraries
- perf-monitor-rs — A toolkit designed to be a foundation for applications to monitor their performance.
- Phate6660/nixinfo [crate] — A lib crate for gathering system info such as cpu, distro, environment, kernel, etc.
Artificial Intelligence
Genetic algorithms
- innoave/genevo — Execute genetic algorithm (GA) simulations in a customizable and extensible way.
- m-decoster/RsGenetic — Genetic Algorithm library in Rust. In maintenance mode.
- 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.
- pkalivas/radiate — A customizable parallel genetic programming engine capable of evolving solutions for supervised, unsupervised, and reinforcement learning problems. Comes with complete and customizable implementation of NEAT and Evtree.
- willi-kappler/darwin-rs — Evolutionary algorithms with Rust
Machine learning
See also About Rust’s Machine Learning Community and Are we learning yet?.
- AtheMathmo/rusty-machine — Machine learning library for Rust
- autumnai/leaf — Open Machine Intelligence framework. . Abandoned project. The most updated fork is spearow/juice.
- huggingface/tokenizers - Hugging Face's tokenizers for modern NLP pipelines written in Rust (original implementation) with bindings for Python.
- LaurentMazare/tch-rs — Rust language bindings for PyTorch.
- maciejkula/rustlearn — Machine learning crate for Rust.
- rust-ml/linfa — Machine learning framework.
- tensorflow/rust — Rust language bindings for TensorFlow.
Astronomy
- fitsio — fits interface library wrapping cfitsio
- flosse/rust-sun [sun] — A rust port of the JS library suncalc
- saurvs/astro-rust — astronomy for Rust
Asynchronous
- async-std [async-std] - Async version of the Rust standard library
- dpc/mioco — Scalable, coroutine-based, asynchronous IO handling library
- mio — MIO is a lightweight IO library for Rust with a focus on adding as little overhead as possible over the OS abstractions
- rust-lang/futures-rs — Zero-cost futures in Rust
- TeaEntityLab/fpRust — Monad/MonadIO, Handler, Coroutine/doNotation, Functional Programming features for Rust
- Xudong-Huang/may — rust stackful coroutine library
- zonyitoo/coio-rs — A coroutine I/O library with a working-stealing scheduler
Audio and Music
[audio]
- hound — A WAV encoding and decoding library
- 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
- ozankasikci/rust-music-theory — A Rust music theory library
- RustAudio
- RustAudio/cpal - Low-level cross-platform audio I/O library in pure Rust.
- RustAudio/rodio — A Rust audio playback library
- RustAudio/rust-portaudio — PortAudio bindings
Authentication
- Keats/jsonwebtoken — JSON Web Token lib in rust
- oauth2 — Extensible, strongly-typed Rust OAuth2 client library
- oxide-auth — A OAuth2 server library, for use in combination with actix or other frontends, featuring a set of configurable and pluggable backends
- sgrust01/jwtvault — Async library to manage and orchestrate JWT workflow
- yup-oauth2 — An oauth2 client implementation providing the Device, Installed and Service Account flows
Automotive
- marcelbuesing/can-dbc [can-dbc] — A parser for the DBC format
- marcelbuesing/tokio-socketcan-bcm [tokio-socketcan-bcm] — Linux SocketCAN BCM support for tokio
- mbr/socketcan [socketcan] — Linux SocketCAN library
- oefd/tokio-socketcan [tokio-socketcan]] — Linux SocketCAN support for tokio based on the socketcan crate
- Sensirion/lin-bus [lin-bus] — LIN bus driver traits and protocol implementation
Bioinformatics
- Rust-Bio — bioinformatics libraries in Rust.
Caching
- aisk/rust-memcache — Memcached client library
- jaemk/cached — Simple function caching/memoization
- jaysonsantos/bmemcached-rs [bmemcached] — Memcached library written in pure rust
- mozilla/sccache - Shared Compilation Cache, great for Rust compilation
Concurrency
- crossbeam-rs/crossbeam – Support for parallelism and low-level concurrency in Rust
- orium/archery [archery] — Library to abstract from
Rc
/Arc
pointer types. - Rayon – A data parallelism library for Rust
- rustcc/coroutine-rs – Coroutine Library in Rust
- zonyitoo/coio-rs – Coroutine I/O for Rust
Cloud
Command-line
- Argument parsing
- clap-rs [clap] — A simple to use, full featured command-line argument parser
- docopt/docopt.rs [docopt] — A Rust implementation of DocOpt
- google/argh [argh] — An opinionated Derive-based argument parser optimized for code size
- killercup/quicli [quicli] — quickly build cool CLI apps in Rust
- ksk001100/seahorse [seahorse] — A minimal CLI framework written in Rust
- Data visualization
- nukesor/comfy-table [comfy-table] — Beautiful dynamic tables for your cli tools.
- TeXitoi/structopt [structopt] — parse command line argument by defining a struct
- zhiburt/tabled [tabled] — An easy to use library for pretty print tables of Rust structs and enums.
- Human-centered design
- rust-cli/human-panic [human-panic] — panic messages for humans
- Line editor
- kkawakam/rustyline [rustyline] — readline implementation in Rust
- MovingtoMars/liner [liner] — A library offering readline-like functionality
- murarth/linefeed [linefeed] — Configurable, extensible, interactive line reader
- srijs/rust-copperline [copperline] — pure-Rust command line editing library
- Pipeline
- hniksic/rust-subprocess [subprocess] — facilities for interaction with external pipelines
- imp/pager-rs [pager] — pipe your output through an external pager
- oconnor663/duct.rs [duct] — A builder for subprocess pipelines and IO redirection
- philippkeller/rexpect [rexpect] — automate interactive applications such as ssh, ftp, passwd, etc
- Progress
- a8m/pb [pbr] — console progress bar for Rust
- FGRibreau/spinners [spinners] — 60+ elegant terminal spinners
- mitsuhiko/indicatif [indicatif] — indicate progress to users
- Prompt
- hashmismatch/terminal_cli.rs [terminal_cli] — build an interactive command prompt
- starship/starship [starship] — A minimal, blazing fast, and extremely customizable prompt for any shell
- Style
- LukasKalbertodt/bunt [bunt] — cross-platform terminal colors and styling with macros
- LukasKalbertodt/term-painter [term-painter] — cross-platform styled terminal output
- mackwic/colored [colored] — Coloring terminal so simple, you already know how to do it!
- ogham/rust-ansi-term [ansi_term] — control colours and formatting on ANSI terminals
- SergioBenitez/yansi [yansi] — A dead simple ANSI terminal color painting library
- TUI
- BearLibTerminal
- cfyzium/bearlibterminal [bear-lib-terminal] — BearLibTerminal bindings
- fdehau/tui-rs [tui] — A TUI library inspired by blessed-contrib and termui
- gyscos/Cursive [cursive] — build rich TUI applications
- ivanceras/titik - a crossplatform TUI widget library with the goal of providing interactive widgets
- ncurses
- ihalila/pancurses [pancurses] — curses library, supports linux and windows
- jeaye/ncurses-rs [ncurses] — ncurses bindings
- ogham/rust-term-grid [term_grid] — Rust library for putting things in a grid
- redox-os/termion [termion] — bindless library for controlling terminals/TTY
- Termbox
- gchp/rustbox [rustbox] — bindings to Termbox
- TimonPost/crossterm [crossterm] — crossplatform terminal library
- BearLibTerminal
Compression
- Brotli
- dropbox/rust-brotli — Brotli decompressor in Rust that optionally avoids the stdlib
- ende76/brotli-rs — implementation of Brotli compression
- bzip2
- alexcrichton/bzip2-rs — libbz2 bindings
- gzip
- carols10cents/zopfli — implementation of the Zopfli compression algorithm for higher quality deflate or zlib compression
- gzp
- sstadick/gzp - multi-threaded encoding and decoding of deflate formats and snappy
- miniz
- rust-lang/flate2-rs — miniz bindings
- snappy
- JeffBelgum/rust-snappy — snappy bindings
- tar
- alexcrichton/tar-rs — tar archive reading/writing in Rust
- zip
- zip-rs/zip — read and write ZIP archives
Computation
- argmin-rs/argmin [argmin] — A pure Rust optimization library
- BLAS [blas]
- mikkyang/rust-blas — BLAS bindings
- calebwin/emu — A language for GPGPU numerical computing from a Rust macro
- dimforge/nalgebra — low-dimensional linear algebra library
- GSL
- GuillaumeGomez/rust-GSL — GSL bindings
- LAPACK
- stainless-steel/lapack — LAPACK bindings
- Parallel
- arrayfire/arrayfire-rust — Arrayfire bindings
- autumnai/collenchyma — An extensible, pluggable, backend-agnostic framework for parallel, high-performance computations on CUDA, OpenCL and common host CPU.
- luqmana/rust-opencl — OpenCL bindings
- Scirust
- indigits/scirust — scientific computing library in Rust
- Statrs
- statrs-dev/statrs — Robust statistical computation library in Rust
Configuration
- andoriyu/uclicious [uclicious] — libUCL based feature-rich configuration library.
- Kixunil/configure_me [configure_me] — library for processing application configuration easily
- mehcode/config-rs [config] — Layered configuration system for Rust applications (with strong support for 12-factor applications).
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.
- conradkleinespel/rooster [rooster] — Simple password manager to use in your terminal
- cossacklabs/themis [themis] — a high-level cryptographic library for solving typical data security tasks, best fit for multi-platform apps.
- DaGenix/rust-crypto — cryptographic algorithms in Rust
- dalek-cryptography/curve25519-dalek — Pure Rust implementation of Curve25519 operations
- dalek-cryptography/ed25519-dalek — Pure Rust implementation of Ed25519 digital signatures
- dalek-cryptography/x25519-dalek — Pure Rust implementation of X25519 key exchange
- debris/tiny-keccak — Pure Rust implementation of the Keccak family (SHA3)
- exonum/exonum [exonum] — extensible framework for blockchain projects
- klutzy/suruga — A Rust implementation of TLS 1.2
- kornelski/rust-security-framework — Bindings for Security Framework (OSX native)
- libOctavo/octavo — Modular hash and crypto library in Rust
- novifinancial/opaque-ke — Pure Rust implementation of the recent OPAQUE password-authenticated key exchange.
- orion-rs/orion — This library aims to provide easy and usable crypto. 'Usable' meaning exposing high-level API's that are easy to use and hard to misuse.
- 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.
- RustCrypto/hashes — Collection of cryptographic hash functions written in pure Rust
- rustls/rustls — A Rust implementation of TLS
- sfackler/rust-native-tls — Bindings for native TLS libraries
- sfackler/rust-openssl — OpenSSL bindings
- sodiumoxide/sodiumoxide — libsodium bindings
- vityafx/randomorg - A https://www.random.org/ client library.
- w3f/schnorrkel - Schnorr VRFs and signatures on the Ristretto group
Database
[database]
-
NoSQL [nosql]
- ArangoDB
- Cassandra [cassandra, cql]
- AlexPikalov/cdrs [cdrs] — native client written in Rust
- krojew/cdrs-tokio [cdrs-tokio] - production-ready async Apache Cassandra driver written in pure Rust
- Metaswitch/cassandra-rs — bindings to the DataStax C/C++ client
- CouchDB [couchdb]
- chill-rs/chill [couchdb] — A Rust client for the CouchDB REST API
- DynamoDB [dynamodb]
- softprops/dynomite - A library for strongly-typed and convenient interaction with
rusoto_dynamodb
- softprops/dynomite - A library for strongly-typed and convenient interaction with
- Elasticsearch [elasticsearch]
- benashford/rs-es [rs-es] — A Rust client for the Elastic REST API
- elastic-rs/elastic [elastic] — elastic is an efficient, modular API client for Elasticsearch written in Rust
- etcd
- jimmycuadra/rust-etcd [etcd] — A client library for CoreOS's etcd.
- luncj/etcd-rs — An asynchronous etcd client for rust
- ForestDB
- vhbit/sherwood — ForestDB bindings
- InfluxDB
- driftluo/InfluxDBClient-rs — Synchronization interface
- LevelDB
- skade/leveldb — LevelDB bindings
- LMDB [lmdb]
- vhbit/lmdb-rs [lmdb-rs] — LMDB bindings
- MongoDB [mongodb]
- mongodb/mongo-rust-driver [mongodb] — MongoDB bindings
- PickleDB
- seladb/pickledb-rs — a lightweight and simple key-value store, heavily inspired by Python's PickleDB.
- Redis [redis]
- mitsuhiko/redis-rs — Redis library in Rust
- RocksDB
- rust-rocksdb/rust-rocksdb — RocksDB bindings
- UnQLite
- zitsen/unqlite.rs — UnQLite bindings
- ZooKeeper
- bonifaido/rust-zookeeper [zookeeper] — A client library for Apache ZooKeeper.
-
OGM [ogm]
-
ORM [orm]
- diesel-rs/diesel — an ORM and Query builder for Rust
- ivanceras/rustorm — an ORM for Rust
- rbatis/rbatis — Rust ORM Framework High Performance(JSON based)
- SeaQL/sea-orm — an async & dynamic ORM for Rust
-
sfackler/r2d2 — generic connection pool
-
SQL [sql]
- Generic
- launchbadge/sqlx - async PostgreSQL/MySQL/SQLite connection pool with strong typing support
- Microsoft SQL
- MySql [mysql]
- AgilData/mysql-proxy-rs — A MySQL Proxy
- blackbeam/mysql_async [mysql_async] — asyncronous Rust Mysql driver based on Tokio.
- blackbeam/rust-mysql-simple [mysql] — A native MySql client
- PostgreSql [postgres, postgresql]
- sfackler/rust-postgres [postgres] — A native PostgreSQL client
- Sqlite [sqlite]
- Generic
Data processing
- amv-dev/yata — high perfomance technical analysis library
- bluss/ndarray — N-dimensional array with array views, multidimensional slicing, and efficient operations
- kernelmachine/utah — Dataframe structure and operations in Rust
- pola-rs/polars - Fast feature complete DataFrame library
- weld-project/weld — High-performance runtime for data analytics applications
Data streaming
- infinyon/fluvio - Programmable data streaming platform
Data structures
- billyevans/tst [tst] — Ternary search tree collection
- 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
- garro95/priority-queue[priority-queue] — A priority queue that implements priority changes.
- mrhooray/kdtree-rs — K-dimensional tree in Rust for fast geospatial indexing and nearest neighbors lookup
- orium/rpds [rpds] — Persistent data structures in Rust.
- RoaringBitmap/roaring-rs – Roaring Bitmaps in Rust
- rust-itertools/itertools —
- xfix/enum-map [enum-map] — An optimized map implementation for enums using an array to store values.
Data visualization
- 38/plotters —
- igiagkiozis/plotly — Plotly for Rust.
- milliams/plotlib —
- saresend/gust —
Date and time
- chronotope/chrono —
- Mnwa/ms [ms-converter] — it's a library for converting human-like times to milliseconds
- time-rs/time —
Distributed systems
- Antimony
- antimonyproject/antimony [antimony] — stream processing / distributed computation platform
- Apache Kafka
- fede1024/rust-rdkafka [rdkafka] — librdkafka bindings
- gklijs/schema_registry_converter [schema_registry_converter] — to integrate with confluent schema registry
- kafka-rust/kafka-rust —
- Beanstalkd
- schickling/rust-beanstalkd — Beanstalkd bindings
- HDFS
- hyunsik/hdfs-rs [hdfs] — libhdfs bindings
Domain driven design
- serverlesstechnology/cqrs [cqrs-es] — A framework for CQRS and event sourcing with user guide
- gsquire/sendgrid-rs — unofficial Rust library for SendGrid API
- jdrouet/catapulte - A microservice to send emails using MRML templates.
- jdrouet/jolimail - A web application to build MRML templates.
- jdrouet/mrml - A library to generate nice email templates working on any mail client.
- lettre/lettre — an SMTP-library for Rust
- staktrace/mailparse [mailparse] — A library for parsing real-world email files
Encoding
[encoding]
- ASN.1
- alex/rust-asn1 — A Rust ASN.1 (DER) serializer
- Binary
- bincode-org/bincode — A binary encoder/decoder in Rust
- m4b/goblin [goblin] — cross-platform, zero-copy, and endian-aware binary parsing
- BSON
- mongodb/bson-rust — Encoding and decoding support for BSON in Rust
- Byte swapping
- BurntSushi/byteorder — Supports big-endian, little-endian and native byte orders
- Cap'n Proto
- CBOR
- serde_cbor — CBOR support for serde
- Character Encoding
- hsivonen/encoding_rs [encoding_rs] — A Gecko-oriented implementation of the Encoding Standard in Rust
- lifthrasiir/rust-encoding —
- CRC
- CSV
- BurntSushi/rust-csv — A fast and flexible CSV reader and writer, with support for Serde
- EDN
- naomijub/edn-rs [edn-rs] — crate to parse and emit EDN format into Rust types.
- FlatBuffers
- frol/flatc-rust — FlatBuffers compiler (flatc) integration for Cargo build scripts
- HAR
- mandrean/har-rs [har] — A HTTP Archive Format (HAR) serialization & deserialization library
- HTML
- servo/html5ever — High-performance browser-grade HTML5 parser
- JSON
- importcjj/rust-ajson [ajson] — Get JSON values quickly
- maciejhirsz/json-rust [json] — JSON implementation in Rust
- pikkr/pikkr [pikkr] — JSON parser which picks up values directly without performing tokenization in Rust
- serde-rs/json [serde_json] — JSON support for Serde framework
- simd-lite/simd-json [simd-json] — High performance JSON parser based on a port of simdjson
- MsgPack
- 3Hren/msgpack-rust — A pure Rust low/high level MessagePack implementation
- PEM
- jcreekmore/pem-rs [pem] — A Rust based way to parse and encode PEM-encoded data
- ProtocolBuffers
- RON (Rusty Object Notation)
- Serde
- vityafx/serde-aux - additional tools for using with the serde library.
- TOML
- XML
- Florob/RustyXML — an XML parser written in Rust
- media-io/yaserde — Yet Another Serializer/Deserializer specialized for XML
- netvl/xml-rs — A streaming XML library
- shepmaster/sxd-document — An XML library in Rust
- shepmaster/sxd-xpath — An XPath library in Rust
- tafia/quick-xml — High performance XML pull reader/writer
- YAML
- chyh1990/yaml-rust — The missing YAML 1.2 implementation for Rust.
- dtolnay/serde-yaml [serde_yaml] — YAML support for Serde framework
- vitiral/stfu8 [stfu8] — Sorta Text Format in UTF-8
Filesystem
- Operations
- pop-os/dbus-udisks2 [dbus-udisks2] - UDisks2 DBus API
- pop-os/sys-mount [sys-mount] — High level abstraction for the
mount
/umount2
system calls. - vitiral/path_abs [path_abs] — Absolute serializable path types and associated methods.
- webdesus/fs_extra — expanding opportunities standard library std::fs and std::io
- Temporary Files
- rust-lang-deprecated/tempdir — temporary directory library
- Stebalien/tempfile — temporary file library
- Stebalien/xattr [xattr] — list and manipulate unix extended file attributes
- zboxfs/zbox [zbox] — Zero-details, privacy-focused embeddable file system.
Functional Programming
- Prelude
- JasonShin/fp-core.rs — A library for functional programming in Rust
Game development
See also Are we game yet?
- Allegro
- SiegeLord/RustAllegro — Allegro 5 bindings
- Awesome Quads — A curated list of links to miniquad/macroquad-related code & resources
- Awesome wgpu — A curated list of wgpu code and resources
- Challonge
- vityafx/challonge-rs [challonge] — Client library for the Challonge REST API. Helps to organize tournaments.
- Corange
- lucidscape/corange-rs — Corange bindings
- Entity-Component Systems (ECS)
- amethyst/specs — Specs Parallel ECS
- legion — A feature rich high performance ECS library with minimal boilerplate
- Game Engines
- Amethyst — Data-oriented game engine -
- Bevy is a refreshingly simple data-driven game engine built in Rust. -
- ggez — A lightweight game framework for making 2D games with minimum friction -
- harmony — A modern 3D/2D game engine that uses wgpu
- Kiss3d — A Keep It Simple, Stupid 3d graphics engine written with Rust
- oxidator — A real time strategy game/engine written with Rust and WebGPU
- Piston —
- RG3D — Rust Game engine 3D
- Unrust — unrust — A pure rust based (webgl 2.0 / native) game engine
- Godot
- godot-rust/godot-rust [gdnative] - Rust bindings to the Godot game engine
- SDL [sdl]
- brson/rust-sdl — SDL1 bindings
- Rust-SDL2/rust-sdl2 — SDL2 bindings
- SFML
- jeremyletang/rust-sfml — SFML bindings
- Tcod-rs
- tomassedovic/tcod-rs — Libtcod bindings for Rust.
- Toornament-rs
- vityafx/toornament-rs - Toornament.com API bindings for Rust.
- Victorem
- VictoremWinbringer/Victorem [Victorem] — Easy UDP Game Server and UDP Client framework for creating simple 2D and 3D online game prototype
Geospatial
- DaveKram/coord_transforms [coord_transforms] — coordinate transformations (2-d, 3-d, and geospatial)
- Georust — geospatial tools and libraries written in Rust
- rust-reverse-geocoder — A fast, offline reverse geocoder in Rust, inspired by thampiman/reverse-geocoder
- vlopes11/geomorph [geomorph] — conversion between UTM, LatLon and MGRS coordinates
Graphics
[graphics]
- Font
- RazrFalcon/rustybuzz - An incremental harfbuzz port to Rust
- redox-os/rusttype — A pure Rust alternative to libraries like FreeType
- gfx-rs/gfx — A high-performance, bindless graphics API for Rust.
- gfx-rs/wgpu - Native WebGPU implementation based on gfx-hal.
- OpenGL [opengl]
- brendanzab/gl-rs —
- glium/glium — safe OpenGL wrapper for the Rust language.
- glutin — Rust alternative to GLFW
- Kiss3d — draw simple geometric figures and play with them with one-liners
- PistonDevelopers/glfw-rs —
- PDF
- fschutt/printpdf — PDF writing library
- J-F-Liu/lopdf — PDF document manipulation
- kaj/rust-pdf —
- WASM-PDF – Generates PDF files with JavaScript and WASM (WebAssembly)
- Vulkan [vulkan]
GUI
[gui]
- autopilot-rs/autopilot-rs — A simple, cross-platform GUI automation library for Rust.
- Cocoa
- Druid [druid] — Druid, a data-first Rust-native UI design toolkit.
- emoon/rust_minifb — minifb is a cross-platform window setup with optional bitmap rendering. It also comes with easy mouse and keyboard input. Primarily designed for prototyping
- FLTK
- fltk-rs — FLTK Rust bindings
- Flutter
- flutter-rs — Build flutter desktop app in dart & rust.
- fschutt/azul — A free, functional, IMGUI-oriented GUI framework for rapid development of desktop applications written in Rust, supported by the Mozilla WebRender rendering engine.
- GTK+ [gtk]
- gtk-rs/gtk3-rs - GTK3 binding for rust
- relm — Asynchronous, GTK+-based, GUI library, inspired by Elm
- iced-rs/iced — A cross-platform GUI library for Rust focused on simplicity and type-safety. Inspired by Elm.
- ImGui
- imgui-rs — Rust bindings for ImGui
- IUP
- Kiss-ui — A simple UI framework built on IUP
- ivanceras/sauron-native - A truly native and cross platform GUI library. One unified code can be run as native GUI, Html Web and TUI.
- libui
- rust-native-ui/libui-rs — libui bindings .
- Nuklear
- nuklear-rust — Rust bindings for Nuklear
- OrbTk — The Orbital Widget Toolkit is a multi platform (G)UI toolkit using SDL2
- PistonDevelopers/conrod — An easy-to-use, immediate-mode, 2D GUI library written entirely in Rust
- Qt
- cyndis/qmlrs — QtQuick bindings
- rust-qt
- White-Oak/qml-rust — QML bindings.
- woboq/qmetaobject-rs — Integrate Qml and Rust by building the QMetaObject at compile time.
- rise-ui — Simple component-based cross-Platform GUI Toolkit for developing beautiful and user-friendly interfaces.
- saurvs/nfd-rs — nativefiledialog bindings
- Sciter
- sciter-sdk/rust-sciter — Sciter bindings
- tauri-apps/tauri — Build smaller, faster, and more secure desktop applications with a web frontend, powered by WRY.
- tauri-apps/wry - Webview Rendering librarY.
Image processing
- abonander/img_hash — Perceptual image hashing and comparison for equality and similarity.
- image-rs/image — Basic imaging processing functions and methods for converting to and from image formats
- image-rs/imageproc — An image processing library, based on the
image
library. - teovoinea/steganography [steganography] — A simple steganography library
- twistedfall/opencv-rust — Rust bindings for OpenCV
Language specification
- shnewto/bnf — A library for parsing Backus–Naur form context-free grammars.
Logging
[log]
- estk/log4rs — highly configurable logging framework modeled after Java's Logback and log4j libraries
- jesusprubio/leg — Elegant print for lazy devs. Make your CLIs nicer with minimal effort.
- rust-lang/log — Logging implementation for Rust
- seanmonstar/pretty-env-logger — A pretty, easy-to-use logger for Rust.
- slog-rs/slog — Structured, composable logging for Rust
- tokio-rs/tracing — An application level tracing framework for async-aware structured logging, error handling, metrics, and more
Macro
- cute
- mattgathu/cute — Macro for Python-esque list comprehensions in Rust.
- Linq-in-Rust - Macro and methods for C#-LINQ-like expressions.
Markup language
- CommonMark
- raphlinus/pulldown-cmark — CommonMark parser in Rust
Mobile
- Android
- rust-windowing/android-rs-glue — glue between Rust and Android
- Android / iOS
- ivanschuetz/rust_android_ios — An example of using a shared Rust lib for Android and iOS using rust-swig and cbindgen respectively.
- iOS
- TimNN/cargo-lipo — A cargo lipo subcommand which automatically creates a universal library for use with your iOS application.
Network programming
- CoAP
- Covertness/coap-rs — A Constrained Application Protocol(CoAP) library for Rust.
- Docker
- fussybeaver/bollard — Docker daemon API in Rust
- FTP
- mattnenterprise/rust-ftp — an FTP client for Rust
- gRPC
- tikv/grpc-rs — The gRPC library for Rust built on C Core library and futures
- IPNetwork
- achanda/ipnetwork — A library to work with IP networks in pure Rust
- candrew/netsim — A Rust library for network simulation and testing
- Low level
- actix/actix — Actor library for Rust
- dylanmckay/protocol — Custom TCP/UDP protocol definitions
- libpnet/libpnet — A cross-platform, low level networking
- smoltcp-rs/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.
- message-io
- lemunozm/message-io — Event-driven message library to build network applications easy and fast. Supports TCP, UDP and WebSockets.
- NanoMsg
- thehydroimpulse/nanomsg.rs — nanomsg bindings
- NATS
- nats-io/nats.rs — Rust client for NATS, the cloud native messaging system.
- Nng
- neachdainn/nng-rs [Nng] — Nng (nanomsg v2) bindings
- NNTP
- mattnenterprise/rust-nntp [nntp] — an NNTP client for Rust
- P2P
- libp2p/rust-libp2p — The Rust Implementation of libp2p networking stack.
- POP3
- mattnenterprise/rust-pop3 [pop3] — A POP3 client for Rust
- QUIC
- cloudflare/quiche — cloudflare implementation of the QUIC transport protocol and HTTP/3
- mozilla/neqo — an Implementation of QUIC written in Rust
- quinn-rs/quinn — Futures-based QUIC implementation in Rust
- RPC
- smallnest/rpcx-rs — A RPC library for Rust for developing microservices in easy and simple way.
- SSH
- alexcrichton/ssh2-rs — libssh2 bindings
- Thrussh [thrussh] — an SSH library written from scratch in Rust, backed by libsodium
- Stomp
- zslayton/stomp-rs — A STOMP 1.2 client implementation in Rust
- uTP
- meqif/rust-utp — A uTP (Micro Transport Protocol) library for Rust.
- ZeroMQ
- erickt/rust-zmq — ZeroMQ bindings
Parsing
- Folyd/robotstxt - A native Rust port of Google's robots.txt parser and matcher C++ library
- freestrings/jsonpath — JsonPath engine written in Rust. Webassembly and Javascript support too
- Geal/nom — parser combinator library
- kevinmehall/rust-peg — Parsing Expression Grammar (PEG) parser generator
- lalrpop/lalrpop — LR(1) parser generator for Rust
- m4rw3r/chomp – A fast monadic-style parser combinator
- Marwes/combine — parser combinator library
- nrc/zero [zero] — zero-allocation parsing of binary data
- pest-parser/pest — The Elegant Parser
- ptal/oak — A typed PEG parser generator (compiler plugin)
- replicadse/wavefront_rs — A parser for the Wavefront OBJ format.
- s-panferov/queryst — A query string parsing library for Rust inspired by gs
- softdevteam/grmtools - A LR parser with better error correction
Peripherals
- Serial Port
- Susurrus/serialport-rs [serialport] — A cross-platform library that provides access to a serial port
Platform specific
- Cross-platform
- svartalf/rust-battery — Cross-platform information about the notebook batteries
- vityafx/thread-priority - Simple, crossplatform thread priority management.
- FreeBSD
- fubarnetes/libjail-rs [jail] — Rust implementation of a FreeBSD jail library
- Linux
- arvancloud/nginx-rs — Nginx bindings
- hannobraun/inotify-rs — inotify bindings
- pop-os/distinst — Linux distribution installer
- yaa110/rust-iptables [iptables] — iptables bindings
- Unix-like
- nix-rust/nix — Unix-like API bindings
- zargony/fuse-rs — FUSE bindings
- Windows
- retep998/winapi-rs — Windows API bindings
Scripting
- duckscript — Simple, extendable and embeddable scripting language.
- fleabitdev/gamelisp — A LISP-lisk scripting language for Rust game development
- gluon-lang/gluon — A small, statically-typed, functional programming language
- metacall/core [metacall] — Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, Wasm, Java, Cobol and more.
- mun — A compiled, statically-typed scripting language with first class hot reloading support
- murarth/ketos — A Lisp dialect functional programming language serving as a scripting and extension language for rust
- PistonDevelopers/dyon — A rusty dynamically typed scripting language
- rhaiscript/rhai — A tiny and fast embedded scripting language resembling a combination of JavaScript and Rust
- rune-rs/rune — An embeddable dynamic programming language for Rust
Simulation
- nyx-space - High fidelity, fast, reliable and validated astrodynamical toolkit library, used for spacecraft mission design and orbit determination
Task scheduling
- delay-timer — Time-manager of delayed tasks. Like crontab, but asynchronous tasks are possible.
Template engine
- Handlebars
- botika/yarte — Yarte stands for Yet Another Rust Template Engine, is the fastest template engine.
- sunng87/handlebars-rust — Handlebars template engine with inheritance, custom helper support.
- HTML
- djc/askama — template rendering engine based on Jinja
- kaj/ructe — HTML template system for Rust
- Keats/tera — template engine based on Jinja2 and the Django template language.
- lambda-fairy/maud — compile-time HTML templates
- Stebalien/horrorshow-rs — compile-time HTML templates
- Mustache
Text processing
- becheran/wildmatch [wildmatch] — Simple string matching with questionmark- and star-wildcard operator
- BurntSushi/suffix — Linear time suffix array construction (with Unicode support)
- BurntSushi/tabwriter — Elastic tab stops (i.e., text column alignment)
- Daniel-Liu-c0deb0t/triple_accel [triple_accel] - Rust edit distance routines accelerated using SIMD; supports fast Hamming, Levenshtein, restricted Damerau-Levenshtein, etc. distance calculations and string search
- fancy-regex/fancy-regex [fancy-regex] - Regular expressions implementation designed to support a relatively rich set of features such as look-around and backtracking.
- greyblake/whatlang-rs — Natural language detection library based on trigrams
- Lucretiel/joinery [joinery] – Generic string + iterable joining
- mgeisler/textwrap [textwrap] — Word wrap text (with support for hyphenation)
- ps1dr3x/easy_reader — A reader that allows forwards, backwards and random navigations through the lines of huge files without consuming iterators
- pwoolcoc/ngrams [ngrams] — Construct n-grams from arbitrary iterators
- rust-lang/regex — Regular expressions (RE2 style)
- strsim-rs — String similarity metrics
- yaa110/rake-rs [rake] — Multilingual implementation of RAKE algorithm for Rust
Text search
- andylokandy/simsearch-rs [simsearch] — A simple and lightweight fuzzy search engine that works in memory, searching for similar strings
- BurntSushi/fst [fst] —
- CurrySoftware/perlin [perlin]
- meilisearch/MeiliSearch — Ultra relevant, instant and typo-tolerant full-text search API.
- minio/minsql — High-performance log search engine.
- tantivy-search/tantivy [tantivy] —
Unsafe
- zerocopy — Utilities for safely reinterpreting arbitrary byte sequences as native Rust types
Virtualization
- beneills/quantum — Advanced Rust quantum computer simulator
- chromium/chromiumos/platform/crosvm CrOSVM — Enables Chrome OS to run Linux apps inside a fast, secure virtualized environment
- saurvs/hypervisor-rs — Hardware-accelerated virtualization on OS X
- unicorn-rs/unicorn-rs — Rust bindings for the unicorn CPU emulator
Web programming
See also Are we web yet? and Rust web framework comparison.
- Client-side / WASM
- HTTP Client
- alexcrichton/curl-rust — libcurl bindings
- async-graphql - A GraphQL server library implemented in Rust
- DoumanAsh/yukikaze [yukikaze] — Beautiful and elegant Yukikaze is little HTTP client library based on hyper.
- graphql-client — Typed, correct GraphQL requests and responses in Rust.
- hyperium/hyper — an HTTP implementation
- seanmonstar/reqwest — an ergonomic HTTP Client for Rust.
- 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.
- 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.
- daogangtang/sapper — A lightweight web framework built on async hyper, implemented in Rust language.
- GildedHonour/frank_jwt — JSON Web Token implementation in Rust.
- Gotham — A flexible web framework that does not sacrifice safety, security or speed.
- handlebars-rust — an Iron web framework middleware.
- hyperium/hyper — an HTTP implementation
- Iron — A middleware-based server framework
- Juniper — GraphQL server library for Rust
- Nickel — inspired by Express
- Ogeon/rustful — A RESTful web framework for Rust
- oltdaniel/zap — A lightning fast http 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
- Salvo — an easy to use webframework base on hyper and tokio.
- Saphir — A progressive web framework with low-level control, without the pain.
- tiny-http — Low level HTTP server library
- tomaka/rouille — Web framework in Rust
- Miscellaneous
- cargonauts — A web framework intended for building maintainable, well-factored web apps.
- osohq/oso [oso] - A policy engine for authorization that's embedded in your application.
- pwoolcoc/soup [soup] — A library similar to Python's BeautifulSoup, designed to enable quick and easy manipulation and querying of HTML documents.
- pyros2097/rust-embed — A macro to embed static assets into the rust binary
- softprops/openapi — A library for processing openapi spec files
- tbot [tbot] - Make cool Telegram bots with Rust easily
- teloxide/teloxide - An elegant Telegram bots framework for Rust
- utkarshkukreti/select.rs [select] — A library to extract useful data from HTML documents, suitable for web scraping.
- Reverse Proxy
- sozu-proxy/sozu [sozu] — A HTTP reverse proxy.
- Static Site Generators
- cobalt-org/cobalt.rs — Static site generator written in Rust
- FuGangqiang/mdblog.rs [mdblog] — Static site generator from markdown files.
- getzola/zola [zola] — An opinionated static site generator with everything built-in.
- leven-the-blog/leven [leven] — A simple, parallelized blog generator.
- WebSocket
- actix/sockjs — A SockJS server for Rust
- housleyjk/ws-rs — lightweight, event-driven WebSockets for Rust
- rust-websocket — A framework for dealing with WebSocket connections (both clients and servers)
- snapview/tungstenite-rs — Lightweight stream-based WebSocket implementation for Rust.
- vi/websocat — CLI for interacting with WebSockets, with functionality of Netcat, Curl and Socat.
- vityafx/urlshortener-rs — A very simple urlshortener library for Rust.
Registries
A registry allows you to publish your Rust libraries as crate packages, to share them with others publicly and privately.
- Cloudsmith 💲 — 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.
- Crates — The official public registry for Rust/Cargo.
Resources
- Benchmarks
- TeXitoi/benchmarksgame-rs — Rust implementations for the The Computer Language Benchmarks Game
- Decks & Presentations
- Learning systems programming with Rust — Presented by Julia Evans @ Rustconf 2016.
- Rust: Hack Without Fear! — Presented by Nicholas Matsakis @ C++Now 2018
- Shipping a Solid Rust Crate — Presented by Michael Gattozzi @ RustConf 2017
- Learning
- Awesome Rust Streaming - A community curated list of livestreams about Rust.
- awesome-rust-mentors — A list of helpful Rust mentors willing to take mentees and eductate them about Rust and programming.
- Build a language VM
- Easy Rust - Learn Rust in easy English.
- exercism.org — 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.
- Programming Community Curated Resources for Learning Rust — A list of recommended resources voted by the programming community.
- Refactoring to Rust - A book that introduces to Rust language.
- 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 for professionals — A quick introduction to Rust for experienced software developers.
- Rust Gym - A big collection of coding interview problems solved in Rust.
- Rust in Action — A hands-on guide to systems programming with Rust by Tim McNamara (paid)
- Rust in Motion — A video series by Carol Nichols and Jake Goulding (paid)
- Rust Online Courses at Classpert — A list of Rust online courses (paid) from Classpert Online Course Search
- 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
- Podcasts
- New Rustacean — A podcast about learning Rust
- Rustacean Station — A community project for creating podcast content for Rust
- Rust Design Patterns
- Rust Guidelines
- Rust Servers, Services and Apps - MEAP - Build backend servers, services, and front-ends in Rust to get fast, reliable, and maintainable applications.
- Rust Subreddit — A subreddit(forum) where rust related questions, articles and resources are posted and discussed
- RustBooks — list of RustBooks
- RustCamp 2015 Talks
- RustViz — generates visualizations from simple Rust programs to assist users in better understanding the Rust Lifetime and Borrowing mechanism.