Total Pageviews

Monday, 1 August 2016

Awesome Rust


A curated list of Rust code and resources, inspired by other awesome lists.
If you want to contribute, please read this.

Table of Contents


Applications written in Rust

See also Friends of Rust (organizations running Rust in production).

Development tools

Build system



  • Cross compiling
    • japaric/rust-cross — everything you need to know about cross compiling Rust programs 
  • Raspberry Pi


See also Foreign Function Interface and The Rust FFI Omnibus (a collection of examples of using code written in Rust from other languages).










  • Rust-Bio — bioinformatics libraries in Rust.




Command-line argument parsing

Command-line interface





Data structures

Date and time


Distributed Systems




Game development


  • Georust — geospatial tools and libraries written in Rust




Image processing

Machine learning

Markup language


  • 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/ — a crate that allows Rust to be used to develop Pebble applications.

Network programming


Platform specific

Template engine

Text processing

Text rendering


Web programming



A web frontend for the Rust compiler 。


A web frontend for the Rust compiler. Displays errors in an easily readable, concise layout, gives easy access to more information, quickly allows reading or editing code.
Be warned: very work in progress!
You can play with a live demo. Be warned that it is very, very slow since it is running on a crappy server and rustw is not designed to be run over the internet. When run locally, it is much snappier.
  • Better errors - we should have interactive experiences for exploring and visualising errors involving the borrow checker, macros, etc. Also, easy access to error explanations and docs.
  • Explore code - provide a platform for searching and understanding source code.
  • Convenience - one click (or keystroke) to rebuild, easy to edit and explore code, GUI for multirust (in some ways this is a minimal IDE experience, focused on building, rather than editing).


Requires a nightly version of Rust to build.
  • setup the React/webpack environment (requires npm):
npm install

# if you have yarn installed:


# if not:

npm install --save react react-dom redux react-redux redux-thunk
npm install --save-dev babel-loader babel-core
npm install --save-dev babel-preset-react
npm install --save-dev babel-preset-es2015
npm install --save-dev babel-plugin-transform-object-rest-spread
npm install --save-dev webpack
npm install --save-dev immutable
  • build the JS components: npm run build or yarn build
  • cargo build --release to build the Rust parts.


rustw in your project's directory (i.e., the directory you would normally use cargo or rustc from).
Running rustw will start a web server and display a URL in the console. To terminate the server, use ctrl + c. If you point your browser at the provided URL, it will build your project, output will be displayed in your browser. The terminal is only used to display some logging, it can be ignored. See tour for more.
Currently, rustw has only been tested on Firefox on Linux (issue 48).
If you want to play with cool features like 'jump to definition', see the customisation below.


If you get an error like error while loading shared libraries while starting up rustw you should try the following:
On Linux:
export LD_LIBRARY_PATH=$(rustc --print sysroot)/lib:$LD_LIBRARY_PATH
On MacOS:
export DYLD_LIBRARY_PATH=$(rustc --print sysroot)/lib:$DYLD_LIBRARY_PATH


Create a rustw.toml file in your project's directory. See src/ or run rustw -h for the options available and their defaults.
Some features need configuration in the rustw.toml before they can be properly used. Set the following properties to use the cool stuff:
save_analysis = true
This means rustw will run rustc with -Zsave-analysis, this gives you access to analysis information from the compiler which is used in jump to defintion, types on hover, refactoring, etc.
edit_command = "subl $file:$line"
To be able to open files in your local editor. This example works for sublime text (subl). Use the $file and $line variables as appropriate for your editor.
vcs_link = "$file#L$line"
For links to the code in version control.


On loading rustw in your browser it builds the project. When the build is complete you'll see the output from stdout (messages, hidden by default) and stderr (errors, warnings, etc., shown by default). If you project compiles without errors or warnings this won't be very interesting!
To rebuild, reload the page (quickest way is to hit F5) or click the rebuild button.
You'll see a summary of errors and warnings. You can hide the details (notes, etc.) by clicking the - buttons. You can show code snippets by clicking the + buttons next to filenames. This will show syntax highlighted code with the source of the error (or note, etc.) highlighted. If you click on the filename itself, it will take you to a source code view of that file. You can right click these links to bring up a menu, here you have options to edit the file (which opens the file in an editor which must be specified in rustw.toml) or make a 'quick edit', which pops up a text box to edit the code in the browser.
You can click error codes to see explanations。