---
# System prepended metadata

title: Rust resources

---

# Rust resources

Rust - a low-level systems programming language with fearless concurrency.

## Learning Rust

   * [Rust Is Easy](https://youtu.be/CJtvnepMVAU) - Introduction video to give a first impression of the language philosophy
   * [Rust for Java developers](https://github.com/andyrbell/rust-for-java-developers) - An interactive tutorial with comparisons to Java
   * [The Book](https://doc.rust-lang.org/book/title-page.html) - The official book that teaches the language. It's very good and not hard to read
   * [Rust By Example](https://doc.rust-lang.org/stable/rust-by-example/index.html) - Shows how Rust works entirely with code examples
   * [Rust Cookbook](https://rust-lang-nursery.github.io/rust-cookbook/intro.html) - Examples of good practice in Rust 
   * [Rust cheat sheet](https://cheats.rs/)
   * IDE: [Clion](https://www.jetbrains.com/clion/) + [IntelliJ Rust](https://intellij-rust.github.io/)
   * [Iterator cheat sheet](https://danielkeep.github.io/itercheat_baked.html)
   * Patterns:
      * [Rust Design Patterns](https://rust-unofficial.github.io/patterns/intro.html)
      * [From and Into traits](https://www.propelauth.com/post/clean-code-with-rust-and-axum)
      * [NewType pattern](https://doc.rust-lang.org/rust-by-example/generics/new_types.html)


## Testing
* Libraries
   * [proptest](https://altsysrq.github.io/proptest-book/intro.html) like quickcheck but for Rust (property-based testing)
   * [loom](https://github.com/tokio-rs/loom) concurrency permutation testing tool

## Useful libraries
* [crossbeam](https://github.com/crossbeam-rs/crossbeam): concurrent tools
* tokio: async library
* [futures-rs](https://github.com/rust-lang/futures-rs): async helpers
* error handling:
   * [thiserror philosophy](https://kazlauskas.me/entries/errors)
   * [error style guide](https://github.com/influxdata/influxdb_iox/blob/main/docs/style_guide.md)
* parking__lot: better mutexes than stdlib
* tokio-console: a debugger for async programs
* miri: an interpreter for Rust that can report runtime-errors
* [derive_more](https://crates.io/crates/derive_more): automatic implementing of delegation for NewTypes
* [egui_node_graph](https://crates.io/crates/egui_node_graph): a plug-in for the gui framework that allows us to draw graphs (e.g. debug-graphs of system dependency tree)