Awesome Rust Resource

I learn Rust by reading The Rust Programming Languagearrow-up-right (aka. TRPL) book.

This is my mind map and collection of resources for learning Rust in early 2019.

I plan to continuously update this list if time allows in future. I will move this into its own GitHub repo or something more permanent when this grow.


Notes

My notes while working through TRPL.

Programming paradigm: functional, imperative, structured, generic, concurrent

Rust focus: type and memory safety, precision, concurrency, performance, reliability

Rust enforces memory safety. Compile time memory safety guarantees protects us from:

  • Uninitialized variables

  • Use-after-free (UAV)

  • Double-frees

  • Exception due to NULL pointers (Rust does not have NULL)

  • Impossible to forget to lock the mutex

  • Data races between threads

  • Mostly no memory leaks

  • Iterator invalidation

In the safe subset of Rust, there's no undefined behavior at runtime:

  • Integer overflow is defined

  • Array access is bounds checked

Rust is modern — built with the experience learned in the past 40 years of programming languages.

Modern language features:

  • Generics

  • Enums and pattern matching

  • No overhead FFI

Modern tooling:

  • Great compiler errors

  • Built-in dependency manager

  • Built-in support for testing


Getting Help

Learn Rust

Videos

Rust stream on YouTube and/or Twitch:

Books

  • Rust for Rustaceansarrow-up-right by Jon Gjengset - a book that covers the next steps of Rust after TRPL/"the book". The book is written for people who are already familiar with Rust. The idea is that you read The Rust Programming Language (TRPL) first, play around with Rust for a bit on your own, maybe start using it "for real", and then pick this up to hone your skills. It is fairly fast paced, but is still has a good amount of low level details. (TLDR; if you're comfortable in Rust, this book is the next step up for intermediate developers.)

  • Rust in Actionarrow-up-right by Tim McNamara - Systems programming concepts and techniques.

  • Programming Rustarrow-up-right by Jim Blandy, Jason Orendorff, Leonora F. S. Tindall - This revised, second edition covers the Rust 2021 Edition. It expands on many concepts in TRPL book. I like that it explains the memory layout of common Rust data structures.

  • The Rustonomicon bookarrow-up-right - Meet Safe and Unsafe.

  • https://github.com/psibi/rust-book-summary - Summary of the Rust book.

Presentations and Talks

Cheat sheet

  • https://cheats.rs/

Libraries

Useful libraies. Some created by Rust core members.

Blessedarrow-up-right - An unofficial guide to the Rust ecosystem.

Not-Yet-Awesome Rustarrow-up-right - A curated list of Rust code and resources that do NOT exist yet, but would be beneficial to the Rust community.

Other Crates

  • https://github.com/rayon-rs/rayon

  • https://github.com/brson/stdx

chevron-rightSee morehashtag
  • https://github.com/valebes/rsClock

  • https://github.com/rusoto/rusoto

  • https://github.com/bbqsrc/cargo-ndk

  • https://github.com/Peltoche/lsd

  • https://github.com/vi/websocat

  • https://github.com/theotherphil/imagecli

  • https://github.com/CianLR/mazegen-rs

  • https://github.com/RustAudio

  • https://github.com/housleyjk/ws-rs

  • https://github.com/getzola/zola - Static site engine. An alternative to Hugo and Jekyll.

  • https://github.com/habitat-sh/habitat

  • https://github.com/starship/starship

  • https://github.com/Edu4rdSHL/findomain

  • https://github.com/TheAlgorithms/Rust

  • https://github.com/jedisct1/rust-bloom-filter

  • https://github.com/rustodon/rustodon

  • https://github.com/fishinabarrel/linux-kernel-module-rust

  • https://github.com/dani-garcia/bitwarden_rs

  • https://github.com/TimelyDataflow/differential-dataflow - Similar to Noria.

  • https://github.com/pemistahl/grex

  • https://github.com/Rigellute/spotify-tui

  • https://github.com/getsentry/symbolicator - using actix-web for their symbolicator project

  • https://github.com/sfackler/rust-postgres-macros

  • https://github.com/nagisa/rust_libloading

  • https://github.com/Geal/nom

  • https://github.com/jaredly/veoluz

  • https://github.com/CianLR/mazegen-rs

  • https://github.com/alexcrichton/cargo-wasi

  • https://github.com/google/evcxr

  • https://github.com/agersant/polaris

  • https://github.com/XAMPPRocky/tokei

  • https://github.com/sfackler/rust-antidote - Poison-free versions of the Rust standard library Mutex and RwLock types.

  • https://github.com/cloudflare/boringtun

  • https://github.com/valeriansaliou/sonic

  • https://github.com/toshi-search/Toshi - An Elasticsearch competitor written in Rust.

  • https://github.com/timberio/vector

Programs and Apps

GUI

Cross-platform, desktop UI:

  • https://github.com/anp/moxie

  • https://github.com/KenSuenobu/rust-pushrod

  • https://github.com/tauri-apps/tauri

  • https://github.com/hecrj/iced

Blogs and Articles

  • https://medium.com/@cevans3326/rust-in-2018-lets-fix-where-the-bullet-holes-aren-t-7e94cea0bd53

  • Read Rustarrow-up-right collects interesting posts related to the Rust programming language.

    Note-to-self: I found the writer through Mastodon

  • Official Posts:

    • https://blog.rust-lang.org/2016/12/22/Rust-1.14.html

    • https://blog.rust-lang.org/2017/05/15/rust-at-two-years.html

    • https://blog.rust-lang.org/2017/05/05/libz-blitz.html

    • https://blog.rust-lang.org/2016/05/16/rust-at-one-year.html

    • https://blog.rust-lang.org/2016/06/30/State-of-Rust-Survey-2016.html

chevron-rightSee morehashtag

Blogs

Newsletters

Async Rust

  • https://github.com/rustasync/areweasyncyet.rs - A website for tracking development progress of async/await syntax of Rust programming language in the language itself as well as its ecosystem.

Editor, IDE

https://areweideyet.com/

Things I discovered:

  • https://github.com/racer-rust/racer - Rust code completion utility.

  • explaine.rsarrow-up-right - An interactive playground to explore the syntax of the Rust code.

Web Frameworks

Status: https://www.arewewebyet.org/

  • https://brandur.org/rust-web

  • https://larder.io/blog/larder-links-09-rust-web-frameworks/

  • https://github.com/iron/iron

  • https://github.com/nickel-org/nickel.rs

  • https://github.com/tokio-rs/tokio-minihttp

  • https://github.com/trezm/Thruster

  • https://github.com/graphql-rust/juniper

  • Tower-Web and Warp joint effort

    • Warp on Zeit Now or AWS Lambda: https://zeit.co/blog/introducing-now-rust

  • Templates

    • https://github.com/djc/askama

Actix

  • https://www.reddit.com/r/rust/comments/cbn1no/rust_is_leading_most_of_the_techempower_web/

  • https://github.com/TechEmpower/FrameworkBenchmarks/issues/4834

  • 1.0 summary: https://www.reddit.com/r/rust/comments/bwy99w/actixweb_10_released/eq2t499/

  • https://www.reddit.com/r/programming/comments/cbgv6f/rust_async_frameworks_dominate_techempower/

  • https://www.reddit.com/r/rust/comments/axy0hp/patterns_to_scale_actixweb_and_diesel/

  • https://www.reddit.com/r/rust/comments/ce09id/why_we_need_alternatives_to_actix/

  • https://64.github.io/actix/

  • Examples:

    • https://github.com/flofriday/thumbcloud

    • https://github.com/ArtRand/kafka-actix-example

    • https://medium.com/meetbitfury/generic-methods-in-rust-how-exonum-shifted-from-iron-to-actix-web-7a2752171388

    • https://blog.approveapi.com/tutorials/rust-actix-web-approveapi-magic-login-link/

  • https://render.com/docs/deploy-actix-todo

Actor Model

  • https://simplabs.com/blog/2018/06/11/actix/

Comparison

  • https://github.com/flosse/rust-web-framework-comparison#server-frameworks

Rust and Node.js

Rust bindings for native Node.js modules:

  • https://github.com/neon-bindings/neon

Rust for Python Programmer

  • https://www.reddit.com/r/rust/comments/azit15/i_made_a_super_simple_example_guide_of_how_to/

  • https://www.reddit.com/r/rust/comments/abfoe0/my_experience_converting_a_python_library_to_rust/

  • https://alantrick.ca/writings/programming/python_to_rust/

  • http://lucumr.pocoo.org/2015/5/27/rust-for-pythonistas/

WebAssembly

WebAssembly (abbrevated a wasm) is an emerging technology.

  • https://www.rust-lang.org/what/wasm

  • https://blog.mgattozzi.dev/rust-wasm/

  • https://github.com/rustwasm

chevron-rightSee morehashtag
  • https://github.com/wasmerio/wasmer

  • https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/

  • https://twitter.com/DasSurma/status/1034138207091187712

  • https://medium.com/@robaboukhalil/hit-the-ground-running-with-webassembly-56cf9b2fa35d

  • https://dev.to/talentlessguy/let-s-write-frontend-in-go-6ch

  • https://v8.dev/blog/emscripten-llvm-wasm

  • https://hacks.mozilla.org/2017/09/bootcamps-webassembly-and-computer-vision/

  • https://dev.to/sendilkumarn/tiny-go-to-webassembly-5168

  • https://github.com/WebAssembly/wabt

Updates from Web teams at Google:

  • https://developers.google.com/web/updates/tags/webassembly#emscripting_a_c_library_to_wasm

  • https://developers.google.com/web/updates/2018/03/emscripting-a-c-library

  • https://developers.google.com/web/updates/2018/10/wasm-threads

  • https://developers.google.com/web/updates/2018/04/loading-wasm

  • https://developers.google.com/web/updates/2019/01/emscripten-npm

Rust and Cloud

AWS Lambda:

  • https://github.com/softprops/lando

  • https://github.com/srijs/rust-aws-lambda

    • Related: https://github.com/LegNeato/aws-lambda-events

      • Related: https://github.com/graphql-rust

  • https://github.com/softprops/serverless-rust

Rust on Mobile

Use Rust with Android NDK:

  • https://www.reddit.com/r/rust/comments/b14wah/rust_library_for_ios_and_android_native/

  • https://users.rust-lang.org/t/rust-on-android-today/17884/12

Rust Communities

Users of the Rust programming language: https://communitywiki.org/trunk/grab/Rustaceans

Reddit /r/rust

  • https://www.reddit.com/r/rust/comments/b3vw8w/alexis_beingessners_learning_rust_with_entirely/

  • https://www.reddit.com/r/rust/comments/cra26t/sonata_100_rust_audio_decoders_media_demuxers_and/

  • https://www.reddit.com/r/rust/comments/cysvjh/what_are_some_amazing_softwaresoftware_clones/

  • https://www.reddit.com/r/rust/comments/cxmki8/introduction_to_rust_web_applications/

  • https://www.reddit.com/r/rust/comments/cm7rje/rust_language_cheat_sheet/

chevron-rightSee morehashtag
  • https://www.reddit.com/r/rust/comments/dbtgr8/accurate_mental_model_for_rusts_reference_types/

  • https://www.reddit.com/r/rust/comments/dhbpm9/announcing_displaydoc_a_doc_comment_based_derive/

  • https://www.reddit.com/r/rust/comments/dh96ta/zerocopylmdb_would_love_security_and_soundness/

  • https://www.reddit.com/r/rust/comments/dh8lev/mullvad_vpn_desktop_and_mobile_app_written_in/

  • https://www.reddit.com/r/rust/comments/dfvyzt/announcing_alexandrie_a_modular_alternative_crate/

  • https://www.reddit.com/r/rust/comments/dfv8er/alass_2_automatic_lanugageagnostic_subtitle/

  • https://www.reddit.com/r/rust/comments/dfei9l/the_node_experiment_exploring_async_basics_with/

  • https://www.reddit.com/r/rust/comments/de5hvu/writing_an_os_in_rust_updates_in_september_2019/

  • https://www.reddit.com/r/rust/comments/dc5kky/writing_linux_kernel_modules_in_safe_rust_linux/

  • https://www.reddit.com/r/rust/comments/di8bh9/paste_a_selfhostable_pastebin_written_in_rust/

  • https://www.reddit.com/r/rust/comments/ddhieo/how_cheap_is_a_channel/

  • https://www.reddit.com/r/rust/comments/ddul57/fledgeling_rustacean_here_please_provide_feedback/

  • https://www.reddit.com/r/rust/comments/ddsqsu/looking_for_medium_sized_project_ideas/

  • https://www.reddit.com/r/rust/comments/ddu1dq/announcing_asuran_a_new_deduplicating_archiver/

  • https://www.reddit.com/r/rust/comments/ddpuc4/using_rust_for_critical_embedded_software/

  • https://www.reddit.com/r/rust/comments/ddtbpm/this_month_in_rust_gamedev_2_september_2019/

  • https://www.reddit.com/r/rust/comments/dekxcw/experimental_pure_rust_implementation_of_aesgcm/

  • https://www.reddit.com/r/rust/comments/desc3q/dev_time_optimization_part_1_19x_speedup_65_less/

  • https://www.reddit.com/r/rust/comments/deyz3h/how_do_rust_references_work/

  • https://www.reddit.com/r/rust/comments/dfkwfo/announcing_thiserror_a_convenient_modern/

  • https://www.reddit.com/r/rust/comments/dj4pev/asynchronous_destructors/

  • https://www.reddit.com/r/rust/comments/djgd2c/middle_school_robotics_lab_im_teaching_uses_the/

  • https://www.reddit.com/r/rust/comments/dj8ki0/lemmy_a_reddit_alternative_written_in_rust/

  • https://www.reddit.com/r/rust/comments/dj5q1p/rusts_journey_to_asyncawait/

  • https://www.reddit.com/r/rust/comments/dj8wo3/bootstrapping_a_5_node_kubernetes_cluster_in_40/

  • https://www.reddit.com/r/rust/comments/deyz3h/how_do_rust_references_work/

  • https://www.reddit.com/r/rust/comments/dcx0k4/introducing_my_coworker_to_rust_via_the_intorust/

  • https://www.reddit.com/r/rust/comments/dcdwur/static_assertions_10/

  • https://www.reddit.com/r/rust/comments/dcporr/compile_stress_test/

  • https://www.reddit.com/r/rust/comments/dcsc3k/announcing_the_inside_rust_blog/

  • https://www.reddit.com/r/rust/comments/djhfkp/need_opinionated_articles_aboutagainst_rust/

  • https://www.reddit.com/r/rust/comments/dkck8s/opensource_contributions_stream_rust_tools_and/

  • https://www.reddit.com/r/rust/comments/dk8hky/the_rust_ui_working_group/

  • https://www.reddit.com/r/rust/comments/dkiuy6/question_about_design_principles_design_patterns/

  • https://www.reddit.com/r/rust/comments/dl5klz/video_a_quiet_session_of_rust_refactoring/

  • https://www.reddit.com/r/rust/comments/dl1sw2/a_tiny_static_fulltext_search_engine_using_rust/

  • https://www.reddit.com/r/rust/comments/dltdmm/spark_implemented_in_rust_with_promising_results/

  • https://www.reddit.com/r/rust/comments/dlz3fb/nannou_the_creative_coding_framework_awarded/

  • https://www.reddit.com/r/rust/comments/e2ssqr/redox_os_real_hardware_breakthroughs_and_focusing/

  • https://www.reddit.com/r/rust/comments/e1jckj/iced_a_crossplatform_gui_library_new_release/

  • https://www.reddit.com/r/rust/comments/e217z6/tokio_02_released_roadmap_to_10/

  • https://www.reddit.com/r/rust/comments/cwfgqv/announcing_actixraft_raft_distributed_consensus/

  • https://www.reddit.com/r/rust/comments/cldzyt/understanding_rust_through_avl_trees_a_long_intro/

  • https://www.reddit.com/r/rust/comments/dorinl/a_call_for_blogs_2020/

chevron-rightProjects for learninghashtag
  • Learn Embedded Rust: https://www.reddit.com/r/rust/comments/dj6ylq/rotary_encoders_in_embedded_rust/

  • https://www.reddit.com/r/rust/comments/dct3fm/writing_an_http_server_in_rust_part_i/

  • https://www.reddit.com/r/rust/comments/dk2km3/i_made_a_nes_emulator_in_rust_using_generators/

  • https://www.reddit.com/r/rust/comments/cmra8k/where_to_find_small_rust_todosprojects_to_hack/

Systems Programming with Rust

Problems and Issues

Problems and issues I encountered.

  • Solutions from StackOverflow

    • https://stackoverflow.com/questions/29403920/whats-the-difference-between-use-and-extern

    • https://stackoverflow.com/questions/36604010/how-can-i-build-multiple-binaries-with-cargo

General

Not so useful knowledge.

  • Rust history

    • https://www.reddit.com/r/rust/comments/7qels2/i_wonder_why_graydon_hoare_the_author_of_rust/

    • https://github.com/graydon/rust/wiki/Meetings

  • Rust Core team

    • https://github.com/nikomatsakis

    • https://github.com/alexcrichton

    • Graydon Hoare

      • https://www.reddit.com/r/rust/comments/7v5kyk/rust_creator_graydon_hoare_says_current_software/

      • https://thenewstack.io/rust-creator-graydon-hoare-talks-about-security-history-and-rust/

    • ... and more

Similar Projects


Learn Rust Again

Stuffs I referenced in Nov 2019 while learning Rust again by reading "The Rust Programmming Language" book.