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