mirror of
https://github.com/rust-unofficial/awesome-rust.git
synced 2024-12-04 11:55:05 -05:00
40 KiB
40 KiB
Awesome Rust
A curated list of awesome 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
- Libraries
- Audio
- Build system
- Command-line argument parsing
- Compression
- Computation
- Cryptography
- Database
- Data structures
- Date and time
- Distributed Systems
- Encoding
- Filesystem
- Game development
- Games
- GUI
- Image processing
- Markup language
- Mobile
- Network programming
- Parser
- Platform specific
- Profiling
- Template engine
- Testing
- Text processing
- Web programming
- Resources
- Development Tools
- 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
- clog-tool/clog-cli — a conventional changelog port (generates a changelog from git metadata)
- Emulators
- simias/rustation — a Playstation emulator
- gchp/iota — a simple text editor
- imjacobclark/Herd — an experimental HTTP load testing application
- kbknapp/docli — a command line utility for managing DigitalOcean infrastructure
- MaidSafe — a decentralized platform.
- 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 rust implementation of the famous Sokoban game
- Zone of Control — a turn-based hexagonal strategy game
Operating systems
A comparison of operating systems written in Rust
Libraries
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
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-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
- clog-tool/clog-lib — a library for generating a changelogs from git metadata
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
- 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
- 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
- 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
- Redis
- mitsuhiko/redis-rs — Redis library in Rust
- Cassandra
- SQL
- MySql
- blackbeam/rust-mysql-simple — a native MySql client
- PostgreSql
- sfackler/rust-postgres — a native PostgreSQL client
- Sqlite
- dckc/rust-sqlite3 — Sqlite3 bindings
- jgallagher/rusqlite — Sqlite3 bindings
- linuxfood/rustsqlite — Sqlite3 bindings
- MySql
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
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
- Cyclic Redundancy Check
- CSV
- HTML
- servo/html5ever — High-performance browser-grade HTML5 parser
- 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
Filesystem
- FUSE
- zargony/rust-fuse — FUSE bindings
Game development
- bbodi/rust-voxlap — Voxlap bindings
- Piston —
- SiegeLord/RustAllegro — Allegro 5 bindings
GUI
- Cocoa
- IUP
- dcampbell24/iup-rust — IUP bindings
- 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
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
Network programming
- FTP
- mattnenterprise/rust-ftp — An FTP client for Rust
- Low level
- libpnet/libpnet — Cross-platform, low level networking
- NanoMsg
- thehydroimpulse/nanomsg.rs — nanomsg bindings
- NNTP
- mattnenterprise/rust-nntp — A NNTP client for Rust
- POP3
- mattnenterprise/rust-pop3 — A POP3 client for Rust
- SSH
- alexcrichton/ssh2-rs — libssh2 bindings
- Stomp
- zslayton/stomp-rs — 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
- kevinmehall/rust-peg — Parsing Expression Grammar (PEG) parser generator
- Marwes/combine — parser combinator library
Platform specific
- DigitalOcean
- kbknapp/doapi — DigitalOcean v2 API bindings
- Linux
- carllerche/nix-rust — Linux API bindings
- hannobraun/inotify-rs — inotify bindings
- Windows
- retep998/winapi-rs — Windows API bindings
Profiling
- Generate FlameGraph
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.
Testing
- BurntSushi/quickcheck — a Rust implementation of QuickCheck
- farcaller/shiny — a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi
Text processing
- BurntSushi/suffix — Linear time suffix array construction (with Unicode support)
- BurntSushi/tabwriter — Elastic tab stops (i.e., text column alignment)
- rust-lang/regex — Regular expressions (RE2 style)
Web programming
See also http://arewewebyet.com/ and Rust web framework comparison.
- Client
- carllerche/curl-rust — libcurl bindings
- cyderize/rust-websocket — a framework for dealing with WebSocket connections (both clients and servers)
- hyperium/hyper — an HTTP implementation
- vhbit/curl-rs — libcurl bindings
- Server
- cyderize/rust-websocket — a framework for dealing with WebSocket connections (both clients and servers)
- 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
Resources
- Rust by Example
- RustCamp 2015 Talks
- Rust CI — a Travis CI dashboard for Rust projects
- 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
- TeXitoi/benchmarksgame-rs — Rust implementations for the The Computer Language Benchmarks Game
Development tools
- brson/multirust — manage multiple Rust installations
- crabtw/rust-bindgen — a Rust bindings generator
- 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
- kmcallister/afl.rs — a Rust fuzzer, using AFL
- Manishearth/rust-clippy — a collection of lints that catch newbie mistakes and oversights during the build
- nrc/rustfmt — a Rust code formatter
- phildawes/racer — code completion for Rust
IDEs
See also http://areweideyet.com/.
- 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
- Vektah/idea-rust — an IntelliJ-based IDE for Rust
- Visual Studio Code