# 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)