mirror of
https://github.com/rust-unofficial/awesome-rust
synced 2024-11-04 12:00:12 +00:00
CONTRIBUTING.md | ||
README.md |
Awesome Rust
A curated list of Rust code and resources, inspired by the other awesome lists.
The goal is to have only projects that are mostly stable and useful to users.
- Awesome Rust
- Applications written in Rust
- Development Tools
- Libraries
- Asynchronous
- Audio
- Authentication
- Bioinformatics
- Build system
- Cloud
- Command-line argument parsing
- Compression
- Computation
- Cryptography
- Database
- Data structures
- Date and time
- Distributed Systems
- Encoding
- Game development
- Games
- Geospatial
- GUI
- Image processing
- Machine learning
- Markup language
- Mobile
- Network programming
- Parser
- Platform specific
- Template engine
- Text processing
- Web programming
- Resources
- License
Applications written in Rust
- bluejekyll/trust-dns — a DNS-server
- BurntSushi/xsv — a fast CSV command line tool (slicing, indexing, selecting, searching, sampling, etc.)
- buster/rrun — a command launcher for Linux, similar to gmrun
- Emulators
- simias/rustation — a Playstation emulator
- gchp/iota — a simple text editor
- imjacobclark/Herd — an experimental HTTP load testing application
- jedisct1/flowgger - a fast, simple and lightweight data collector
- kbknapp/docli — a command line utility for managing DigitalOcean infrastructure
- MaidSafe — a decentralized platform.
- ogham/exa — a replacement for 'ls' written in Rust
- seppo0010/rsedis — a Redis reimplementation
- Servo — a prototype web browser engine
- uutils/coreutils — a cross-platform Rust rewrite of the GNU coreutils
Games
- Games Made With Piston
- lifthrasiir/angolmois-rust — a minimalistic music video game which supports the BMS format
- swatteau/sokoban-rs — a Sokoban implementation
- Zone of Control — a turn-based hexagonal strategy game
Operating systems
A comparison of operating systems written in Rust
Development tools
- brson/multirust — manage multiple Rust installations
- Clippy — a collection of lints that catch newbie mistakes and oversights during the build
- Diggsey/multirust-rs — reimplementation of multirust in rust
- clog-tool/clog-cli — a conventional changelog port (generates a changelog from git metadata)
- dan-t/rusty-tags — create ctags/etags for a cargo project and all of its dependencies
- ellisonch/rust-stopwatch — a stopwatch library for Rust. Used to time things.
- frewsxcv/crate-deps — generates images of dependency graphs for crates hosted on crates.io
- Racer — code completion for Rust
- rustfmt — a Rust code formatter
Debugging
- GDB
- LLDB
- lldb_batchmode.py — allows to use LLDB in a way similar to GDB's batch mode.
FFI
- C
- crabtw/rust-bindgen — a Rust bindings generator
- Java
- drrb/java-rust-example — a Java/Rust Example
- Node.js
IDEs
See also http://areweideyet.com/ and Rust and IDEs.
- alexeykudinkin/intellij-rust — an IntelliJ-based IDE for Rust
- PistonDevelopers/VisualRust — a Visual Studio extension for Rust
- Ride —
- RustDT — an Eclipse-based IDE for Rust
- SolidOak — a simple IDE for Rust, based on GTK+ and Neovim
- Visual Studio Code
Profiling
- mrhooray/torch — generates FlameGraphs based on DWARF Debug Info
Testing
- BurntSushi/quickcheck — a Rust implementation of QuickCheck
- farcaller/shiny — a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi
- frewsxcv/afl.rs — a Rust fuzzer, using AFL
Libraries
Asynchronous
- zonyitoo/coio-rs — a coroutine I/O library with a working-stealing scheduler
Audio
- GuillaumeGomez/rust-fmod — FMOD bindings
- JeremyLetang/ears — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile
- JeremyLetang/rust-portaudio — PortAudio bindings
- jpernst/openal-rs — OpenAL 1.1 bindings
- RustAudio
- samdoshi/portmidi-rs — PortMidi bindings
Authentication
- keats/rust-jwt — JSON Web Token lib in rust
Bioinformatics
- Rust-Bio - bioinformatics libraries in Rust.
Build system
- Cargo — the Rust package manager
- rsolomo/cargo-check — a wrapper around
cargo rustc -- -Zno-trans
which can be helpful for running a faster compile if you only need correctness checks - kbknapp/cargo-count — lists source code counts and details about cargo projects, including unsafe statistics
- pwoolcoc/cargo-do — run multiple cargo commands in a row
- maxsnew/cargo-dot — generate graphs of a Cargo project's dependencies
- killercup/cargo-edit — allows you to add and list dependencies by reading/writing to your Cargo.toml file from the command line
- pwoolcoc/cargo-fmt — allows you to call
rustfmt
fromcargo
- kbknapp/cargo-graph — updated fork of
cargo-dot
with additional features - kbknapp/cargo-outdated — displays when newer versions of Rust dependencies are available, or out of date
- DanielKeep/cargo-script — lets people quickly and easily run Rust "scripts" which can make use of Cargo's package ecosystem
- passcod/cargo-watch — utility for cargo to compile projects when sources change
- rsolomo/cargo-check — a wrapper around
- CMake
- SiegeLord/RustCMake — an example project showing usage of CMake with Rust
Cloud
- AWS
- DigitalOcean
- kbknapp/doapi — DigitalOcean v2 API bindings
Command-line argument parsing
- docopt/docopt.rs — a Rust implementation of DocOpt
- kbknapp/clap-rs — a simple to use, full featured command-line argument parser
Compression
- alexcrichton/bzip2-rs — libbz2 bindings
- alexcrichton/flate2-rs — miniz bindings
- alexcrichton/tar-rs — tar archive reading/writing in Rust
- ende76/brotli-rs - implementation of Brotli compression
- slackito/zip — read and write ZIP archives
Computation
- BLAS
- mikkyang/rust-blas — BLAS bindings
- stainless-steel/blas — BLAS bindings
- GMP
- thestinger/rust-gmp — libgmp bindings
- GSL
- GuillaumeGomez/rust-GSL — GSL bindings
- LAPACK
- stainless-steel/lapack — LAPACK bindings
- OpenCL
- arrayfire/arrayfire-rust — Arrayfire bindings
- luqmana/rust-opencl — OpenCL bindings
- Scirust
- indigits/scirust — scientific computing library in Rust
Cryptography
- DaGenix/rust-crypto — cryptographic algorithms in Rust
- dnaq/sodiumoxide — libsodium bindings
- klutzy/suruga — a Rust implementation of TLS 1.2
- libOctavo/octavo — Modular hash and crypto library in Rust
- seb-m/common.rs — Common Rust crypto utilities
- sfackler/rust-openssl — OpenSSL bindings
Database
- NoSQL
- Cassandra
- tupshin/cassandra-rust — Cassandra bindings
- Elasticsearch
- [benashford/rs-es] (https://github.com/benashford/rs-es) — A Rust client for the [Elastic] (https://www.elastic.co/) REST API
- ForestDB
- vhbit/sherwood — ForestDB bindings
- LMDB
- vhbit/lmdb-rs — LMDB bindings
- MongoDB
- mongodb-labs/mongo-rust-driver-prototype — MongoDB bindings
- Redis
- mitsuhiko/redis-rs — Redis library in Rust
- Cassandra
- SQL
- MySql
- blackbeam/rust-mysql-simple — a native MySql client
- MySql
- ORM
- deuterium-orm/deuterium-orm — an SQL query builder for Rust
- ivanceras/rustorm — an ORM for Rust
- phonkee/treasure — an ORM for Rust
- sgrif/diesel — an ORM and Query builder for Rust
- PostgreSql
- sfackler/rust-postgres — a native PostgreSQL client
- Sqlite
- dckc/rust-sqlite3 — Sqlite3 bindings
- jgallagher/rusqlite — Sqlite3 bindings
- linuxfood/rustsqlite — Sqlite3 bindings
Date and time
Data structures
- bluss/rust-itertools —
- reem/rust-typemap —
- serde-rs/serde — a framework to generically serialize Rust data structures
Distributed Systems
- Apache Kafka
- Beanstalkd
- schickling/rust-beanstalkd — Beanstalkd bindings
- HDFS
- hyunsik/hdfs-rs — libhdfs bindings
- lettre/lettre — an SMTP-library for Rust
Encoding
- ASN.1
- alex/rust-asn1 — a Rust ASN.1 (DER) serializer
- Bencode
- arjantop/rust-bencode — Bencode implementation in Rust
- Binary
- arcnmx/nue — I/O and binary data encoding for Rust
- TyOverby/bincode — a binary encoder/decoder in Rust
- Byte swapping
- BurntSushi/byteorder — Supports big-endian, little-endian and native byte orders
- Cap'n Proto
- CBOR
- BurntSushi/rust-cbor — Supports JSON conversion and type-based encoding/decoding
- Character Encoding
- CRC
- CSV
- HTML
- servo/html5ever — High-performance browser-grade HTML5 parser
- Jsonnet
- MsgPack
- mneumann/rust-msgpack —
- 3Hren/msgpack-rust — a pure Rust low/high level MessagePack implementation
- ProtocolBuffers
- Ron (Rusty Object Notation)
- Tnetstring
- TOML
- XML
- Florob/RustyXML — an XML parser written in Rust
- netvl/xml-rs — a streaming XML library
- YAML
- chyh1990/yaml-rust — The missing YAML 1.2 implementation for Rust.
- kimhyunkang/libyaml-rust — libyaml bindings
Game development
- bbodi/rust-voxlap — Voxlap bindings
- lucidscape/corange-rs — Corange bindings
- Piston —
- SiegeLord/RustAllegro — Allegro 5 bindings
Geospatial
- Georust — geospatial tools and libraries written in Rust
GUI
- Cocoa
- IUP
- dcampbell24/iup-rust — IUP bindings
- Kiss-ui — a simple UI framework built on IUP
- GTK+
- gtk-rs/gtk — GTK+ bindings
- ncurses
- jeaye/ncurses-rs — ncurses bindings
- OpenGL
- bjz/gl-rs —
- bjz/glfw-rs —
- tomaka/glium — safe OpenGL wrapper for the Rust language.
- tomaka/glutin — Rust alternative to GLFW
- Qt
- cyndis/qmlrs — QtQuick bindings
- SDL
- AngryLawyer/rust-sdl2 — SDL2 bindings
- brson/rust-sdl — SDL1 bindings
- PistonDevelopers/conrod — An easy-to-use, immediate-mode, 2D GUI library written entirely in Rust
- SFML
- jeremyletang/rust-sfml — SFML bindings
- Termbox
- gchp/rustbox — a Rust implementation of termbox
Image processing
- chyh1990/imageproc — An advanced image processing library for Rust.
- cybergeek94/img-hash — Perceptual image hashing and comparison for equality and similarity.
- PistonDevelopers/image — Basic imaging processing functions and methods for converting to and from image formats
Machine learning
- autumnai/leaf - Open Machine Intelligence framework.
- maciejkula/rustlearn - Machine learning crate for Rust.
Markup language
- CommonMark
- google/pulldown-cmark — CommonMark parser in Rust
Mobile
- Android
- tomaka/android-rs-glue — glue between Rust and Android
- 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.
- Raspberry Pi
- Ogeon/rust-on-raspberry-pi — instructions for how to cross compile Rust projects for the Raspberry Pi .
Network programming
- FTP
- mattnenterprise/rust-ftp — an FTP client for Rust
- Low level
- libpnet/libpnet — a cross-platform, low level networking
- NanoMsg
- thehydroimpulse/nanomsg.rs — nanomsg bindings
- NNTP
- mattnenterprise/rust-nntp — an NNTP client for Rust
- POP3
- mattnenterprise/rust-pop3 — a POP3 client for Rust
- SSH
- alexcrichton/ssh2-rs — libssh2 bindings
- 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
Parser
- Geal/nom — parser combinator library
- ivanceras/inquerest — an URL parameter parser for rest filter inquiry
- kevinmehall/rust-peg — Parsing Expression Grammar (PEG) parser generator
- Marwes/combine — parser combinator library
- rustless/queryst — a query string parsing library for Rust inspired by https://github.com/hapijs/qs
Platform specific
- Linux
- hannobraun/inotify-rs — inotify bindings
- Unix-like
- carllerche/nix-rust — Unix-like API bindings
- zargony/rust-fuse — FUSE bindings
- Windows
- retep998/winapi-rs — Windows API bindings
Template engine
- HTML
- lfairy/maud — compile-time HTML templates
- Stebalien/horrorshow-rs — compile-time HTML templates
- Mustache
- sunng87/handlebars-iron — Handlebars-rust as an Iron web framework middleware.
- sunng87/handlebars-rust — Handlebars template engine with inheritance, custom helper support.
- tailhook/marafet — Compiler for Jade-like template language to cito.js-based virtual dom
Text processing
- BurntSushi/suffix — Linear time suffix array construction (with Unicode support)
- BurntSushi/tabwriter — Elastic tab stops (i.e., text column alignment)
- pwoolcoc/ngrams — Construct n-grams from arbitrary iterators
- rust-lang-nursery/regex — Regular expressions (RE2 style)
Web programming
See also Rust web framework comparison.
- HTTP Client
- carllerche/curl-rust — libcurl bindings
- hyperium/hyper — an HTTP implementation
- vhbit/curl-rs — libcurl bindings
- HTTP Server
- hyperium/hyper — an HTTP implementation
- Iron — a middleware-based server framework
- Nickel — inspired by Express
- Ogeon/rustful — a RESTful web framework for Rust
- Rustless — a REST-like API micro-framework inspired by Grape and Hyper
- tiny-http — Low level HTTP server library
- WebSocket
- cyderize/rust-websocket — a framework for dealing with WebSocket connections (both clients and servers)
- housleyjk/ws-rs — lightweight, event-driven WebSockets for Rust
Resources
- Benchmarks
- TeXitoi/benchmarksgame-rs — Rust implementations for the The Computer Language Benchmarks Game
- Podcasts
- New Rustacean — a podcast about learning Rust
- Rusty Radio — covering the rust ecosystem
- Rust by Example
- RustCamp 2015 Talks
- Rust CI — a Travis CI dashboard for Rust projects
- Rust Design Patterns
- The Rust FFI Omnibus — a collection of examples of using code written in Rust from other languages.
- Rust Guidelines
- rust-learning — a collection of useful resources to learn Rust
- Rustlings — small exercises to get you used to reading and writing Rust code