C++ and Rust are both system programming languages that can be used to produce software and software platforms. They are both capable of interacting with low-level components such as operating systems or firmware on a microcontroller, or at a high level for application development.
"In Android 12 we announced support for the Rust programming language in the Android platform as a memory-safe alternative to C/C++. Since then we’ve been scaling up our Rust experience and usage within the Android Open Source Project (AOSP)."
- Android Team (Google) 2022
As Rust slowly replaces C++ what are you waiting for? Are you learning Rust yet?
Rust Learning:
Table of Contents
- Books
- Videos
- Podcasts
- Rust in practice
- Best Practices/Style Guides
- Cheat sheets
- Rust internals
- Compilation
- FFI
- CI / Testing
- Debug / Profiling
- Are we ... yet?
- Comparison with Other Languages
- Applications / Libraries / Tools
- Language stuff
- Playground
- Locale links
- People
- Tutorials & Workshop Materials
Books
- ⭐ The Rust Programming Language - repo
- ⭐ The Rust Reference - repo
- ⭐ The Rustonomicon - The Dark Arts of Advanced and Unsafe Rust Programming - repo
- ⭐ The Unstable Book - repo
- ⭐ The Rust Edition Guide - repo
- ⭐ The Rust Async Book - repo
- ⭐ Rust Cookbook - repo
- ⭐ Why Rust? - Jim Blandy
- ⭐ The Embedded Rust Book - repo - Rust Embedded WG
- Rust-101 - Ralf Jung
- Rust Essentials - Ivo Balbaert
- Programming Rust - Jim Blandy, Jason Orendorff
- Mastering Rust - Second Edition - Rahul Sharma & Vesa Kaihlavirta
- 🔜 Refactoring to Rust - repo - Nate Mara
- ⭐ Rust Anthology - Brian Anderson
- 🔜 Rust in Action - repo - Tim McNamara
- 🔜 Zero To Production In Rust - repo - Luca Palmieri
- Network Programming in Rust - Abhishek Chanda
- Learning Rust - Paul Johnson, Vesa Kaihlavirta
- Rust Cookbook - Vigneshwer Dhinakaran
- Learning Rust - Dumindu Madunuwan
- A Gentle Introduction To Rust - Steve Donovan
- Step Ahead with Rust - Jonathan Creekmore
- ⭐ Rust Programming By Example - Guillaume Gomez and Antoni Boucher
- Beginning Rust - From Novice to Professional - Carlo Milanesi
- Hands-On Concurrency with Rust - Brian Troutwine
- Hands-On Functional Programming in Rust - Andrew Johnson
- Hands-On Rust Effective Learning through 2D Game Development and Play - Herbert Wolverson
- Hands-On Microservices with Rust - Denis Kolodin
- Hands-On Data Structures and Algorithms with Rust - Claus Matzinger
- Rust Standard Library Cookbook - Daniel Durante, Jan Nils Ferner
- Rust Quick Start Guide - Daniel Arbuckle
- Rust High Performance - Iban Eguia Moraza
- Programming WebAssembly with Rust - Kevin Hoffman
- Hands-On Microservices with Rust 2018: How To Build Scalable and Reliable RESTful Microservices - Denis Kolodin
- Hands-On Data Structures and Algorithms with Rust - Claus Matzinger
- The Complete Rust Programming Reference Guide: Design, develop, and deploy effective software systems using the advanced constructs of Rust - - Vesa Kaihlavirta, Rahul Sharma, Claus Matzinger
- Easy Rust - David MacLeod
- 🔜 Rust Web Development - repo - Bastian Gruber
- The Little Book of Rust Books - repo
- Rust Servers, Services, and Apps - Prabhu Eshwarla
- Code Like a Pro in Rust - Brenden Matthews
- Rust for Rustaceans - Jon Gjengset
- Rust From the Ground Up - Matthew Provost
Videos
Playlists
- ⭐ Rust and the Future of Systems Programming - Mozilla
- RustFest Zürich 2017
- ABitWiseGuy Tutorials - ABitWiseGuy
- dcode Tutorials - dcode
- maxday_coding - ASMR Live Coding
- Tensor Programming Tutorials - Tensor Programming
- Hello Rust! - Matthias Endler
- YouCodeThings - Andrew Jakubowicz
- ⭐ 🔜 Rust in Motion - Video course by Carol Nichols and Jake Goulding
- Learn Rust in 7 Days - Matthew Stoodley
- Rust Tutorial - Doug Milford
- Rust - Crazcalm's Tech Stack
- Rust Advent of Code 2019 - Brian Myers
- The Rust Programming Language | Tutorials - danlogs
- Ryan Levick's Rust Stream - Ryan Levick
- Crust of Rust - Jon Gjengset
- ULTIMATE Rust Lang Tutorial! - Let's Get Rusty
- Overview of the Rust Programming Language - Jonathan Turner
- Manning Publications Rust channel - Manning Publications
- Introduction to Programming with Rust - Rhymu's Videos
Presentations
- 2021-06-25 - How to learn Rust - Tim McNamara
- 2021-06-01 - A Firehose of Rust, for busy people who know some C++ - Jack O'Connor
- 2020-09-21 - live@Manning Rust Conference - Carol Nichols, Tim McNamara, Maciej Hirsz, Olivia Ifrim, Nell Shamrell-Harrington, Pierre Krieger, Richard Walters, Chris Griffing, Lachezar Lechev, Michael Hausenblas
- 2017-06-20 - ⭐ Rust: Putting Ownership to Use - Niko Matsakis
- 2017-01-20 - Rust 101 - E. Dunham
- 2016-09-28 - Mozilla's Rust and why we love it - Cambridge Consultants
- 2016-09-25 - ⭐ into_rust() - Screencasts for learning rust! - Niko Matsakis
- 2016-08-28 - ⭐ Rust: Safe and Scalable Systems Programming - Alex Crichton
- 2016-06-21 - ⭐ The History of Rust - Steve Klabnik
- 2015-08-01 - ⭐ RustCamp 2015
- 2015-06-22 - LambdaConf 2015 - In Rust We Trust - Alex Burkhart
- 2015-06-13 - ⭐ What Is Rust? - Yehuda Katz
- 2015-04-11 - My Python's a little Rust-y - Dan Callahan
- 2015-03-12 - ⭐ Stanford Seminar - Aaron Turon
Podcasts
- Moves and Borrowing In Rust With Jim Blandy - Adam Bell
- New Rustacean - Chris Krycho
- The Request for Explanation Podcast: A weekly discussion of Rust RFCs - Manish Goregaokar
- Rust And Bitter C++ Developers With Jim Blandy - Adam Bell
- AreWePodcastYet
- Rustacean Station
Rust in practice
- ⭐ Rust By Example - Jorge Aparicio and Steve Klabnik - repo
- rosettacode - Andrew Hobden
- Why your first FizzBuzz implementation may not work - Chris Morgan
- ⭐ An annotation of the Rust standard library - Brian Anderson
- ProjectEulerRust - gifnksm
- Advent of Code - Denys Levchenko
- Rust in Detail: Writing Scalable Chat Service from Scratch - Nikita Baksalyar
- ⭐ rustlings: small rust exercises - Carol Nichols
- Learning Rust With Entirely Too Many Linked Lists - Alexis Beingessner
- ⭐ Let's build a browser engine! - Matt Brubeck
- Understanding Over Guesswork - Andrew Hobden
- Writing an OS in Rust 1st edition 2nd edition - Philipp Oppermann
- Creating Nintendo 64 emulator from scratch in Rust! - Jake Taylor
- The Many Kinds of Code Reuse in Rust - Alexis Beingessner
- Make a Lisp - Joel Martin
- ⭐ Modeling Graphs in Rust Using Vector Indices - Niko Matsakis
- 24 days of Rust series - Zbigniew Siciarz
- ⭐ Rust Cookbook
- ⭐ Rust and CSV Parsing - Andrew Gallant
- Algorithm Cookbook in Rust - Aram Ebtekar
- ⭐ stdx - The missing batteries of Rust - Brian Anderson
- Rust - exercism.org
- Building a DNS server in Rust - Emil Hernvall
- Rust Crash Course - Michael Snoyman
- Web browser from scratch in Rust - Josh Marinacci
- Tour of Rust - Richard Anaya
- PNGme: An Intermediate Rust Project - picklenerd
- Create Your Own Programming Language with Rust - Ehsan M. Kermani
- ⭐ Command Line Applications in Rust - Rust CLI working
- Writing a file system from scratch in Rust - Carlos Galdino
- Hecto: Build your own text editor in Rust - Philipp Flenker
- Rust sokoban - Olivia Ifrim
- Rust Gym - Yinchu Xia
- ⭐ Rust Quiz - David Tolnay
- Blessed - An unofficial guide to the Rust ecosystem - Nico Burns
Best Practices/Style Guides
- ⭐ Rust Design Patterns - Nick Cameron
- ⭐ Error Handling in Rust - Andrew Gallant
- ⭐ Rust API guidelines - Brian Anderson
- Design Patterns in Rust - Alexander Fadeev
- Reading Rust Function Signatures - Andrew Hobden
- Good Practices for Writing Rust Libraries - Pascal Hertleif
- Rustic Bits - Llogiq
- Pretty State Machine Patterns in Rust - Andrew Hobden
- Elegant Library APIs in Rust - Pascal Hertleif
- Rust Performance Pitfalls - Llogiq
- How to write CRaP Rust code - Llogiq
- The Rust Performance Book - Nicholas Nethercote
Cheat sheets
- ⭐ Syntax Index
- The Periodic Table of Rust Types - Kang Seonghoon
- Rust Iterator Cheat Sheet - Daniel Keep
- Rust String Conversions Cheat Sheet - GavinB
- Rustic Symmetries - kmc
- Rust Container Cheat Sheet - Raph Levien
- Graphical depiction of ownership and borrowing in Rust - Phil Ruffwind
- Lifetime Reference - Charles
- Phaiax's Rust Cheatsheet - Phaiax
- Rust Language Cheat Sheet - Ralf Biedert
- Rust cheat sheet (beginner-oriented)
- A type-based Rust cheatsheet - Xidorn Quan
Rust internals
- ⭐ Rust RFCs and Accepted RFCs
- ⭐ Rust Forge
- ⭐ Internals Forum
Compilation
- rust-cross, Everything you need to know about cross compiling Rust programs! - Jorge Aparicio
- How to cross compile Rust from OS X to FreeBSD - yohanesu75
- Cross Compiling for Raspberry Pi - Ogeon
- ⭐ Taking Rust everywhere with rustup - Brian Anderson
- Why is a Rust executable large? - Kang Seonghoon
- Rust your ARM microcontroller! - Jorge Aparicio
- Cross-compiling Rust for the Raspberry Pi on macOS - Adrian Kappel
- rust-on-mobile - mtak-
- Compile Time Feature Flags in Rust - Justin Worthe
- Rust on iOS - Emil Sjölander
FFI
- 2017-11-22 - Writing fast and safe native Node.js modules with Rust - Peter Czibik
- 2017-09-21 - Building and Deploying a Rust library on Android - Emily Toop
- 2017-09-06 - Building and Deploying a Rust library on iOS - Emily Toop
- 2020-09-08 - I C and .so does Rust - prateeknischal
- The Rust FFI Omnibus - Jake Goulding
- The Rust FFI Guide - using unsafe for fun and profit - Michael-F-Brya
CI / Testing
- Helping Travis catch the rustc train part 1 | part 2 - Huon Wilson
- Rust, Travis, and Github Pages - Andrew Hobden
- Shave Some Time From Your Travis Builds - Llogiq
- How to collect test coverages for a rust project - lifthrasiir
- Rust Code Coverage Guide: kcov + Travis CI + Codecov / Coveralls - Sunjay Varma
- Rust Performance Testing on Travis CI - Lloyd
- Ensuring Beautiful Commits with rustfmt and Travis-CI - Kyle Kneitinger
- Great Rust CI - Christopher Durham
- Rust Fuzz Book
Debug / Profiling
- Debugging a segfault in my Rust program - Julia Evans
- Compiler Explorer - See Rust code as assembly
- Profiling Rust applications on Linux - Llogiq
Are we ... yet?
- Are we web yet?
- Are we (I)DE yet?
- Are we game yet?
- Are we learning yet?
- Are we async yet?
- Not-Yet-Awesome Rust
- Are we GUI yet?
Comparison with Other Languages
- Rust::from(lang) - Michael Gattozzi
- Others:
Languages | Links |
---|---|
C# |
|
C/C++ |
|
Clojure |
|
Go |
|
Java/Scala | |
JavaScript |
|
Nim |
|
Nodejs |
|
OCaml / Haskell | |
Python |
|
Ruby | |
Swift |
|
Erlang |
Applications / Libraries / Tools
See repos kud1ing/awesome-rust & awesomo
/rust
Language stuff
Can I use feature X? caniuse.rs - Rust feature search
Async
- Futures Explained in 200 Lines of Rust - Carl Fredrik Samson
Closures
- Finding Closure in Rust - Huon Wilson
- Defaulting to Thread-Safety: Closures and Concurrency - Huon Wilson
- How to pass a closure into a trait object - Cam Jackson
- Practical differences between Rust closures and functions - Ricardo Martins
- ⭐ How Rust Achieves Thread Safety - Manish Goregaokar
- Understanding Closures in Rust - Steve Donovan
- Why Rust Closures are (Somewhat) Hard - Andrew Pritchard
Documentation
- ⭐ Writing Documentation in Rust - Jeremiah Peschka
- Keeping Rust projects' README.md code examples up-to-date - Guillaume Gomez
- Guide on how to write documentation for a Rust crate - Guillaume Gomez
Enums
Errors
- ⭐ Error Handling in Rust - Nick Cameron
- ⭐ Error Handling in Rust - Andrew Gallant
- Beginner's guide to Error Handling in Rust - Sheshbabu Chinnakonda
- Rust error handling - sp1ff
- Rust: Structuring and handling errors in 2020 - Nick Groenen
- Wrapping errors in Rust - Edgar Luque
- Designing error types in Rust - Roman Kashitsyn
Iterators
- A Journey into Iterators - Andrew Hobden
- Effectively Using Iterators In Rust - Herman J. Radtke III
- for loops in Rust - Karol Kuczmarski
- Iteration patterns for Result & Option - Karol Kuczmarski
- Little tour of multiple iterators implementation in Rust - Guillaume Gomez
- rust-iterators - Max Skybin
Lifetime
- ⭐ Where Rust Really Shines - Manish Goregaokar
- Understanding Lifetime in Rust part 1 | part 2 - Bibhas Bhattacharya
- Rust Lifetimes - Charles
- The Power of Lifetimes - Jonathan Goodwin
- Understanding Rust Lifetimes - Maksym Zavershynskyi
- Common Rust Lifetime Misconceptions - kirill
Macros
- A Practical Intro to Macros in Rust 1.0 - Daniel Keep
- The Little Book of Rust Macros - Lukas Wirth
- ⭐ Macros in Rust part 1 | part 2 | part 3 | part 4 - Nick Cameron
- Writing complex macros in Rust: Reverse Polish Notation - Ingvar Stepanyan
- ⭐ Procedural Macros in Rust 2018 - Alex Crichton
- Creating Macros in Rust - Aaron Lazar
- Rust Latam: procedural macros workshop - David Tolnay
MIR
Modules
- Rust Module Essentials - Sam Pagenkopf
- How I Organize Large Rust Programs - Casey Rodarmor
- Clear explanation of Rust’s module system - Sheshbabu Chinnakonda
Option & Result
- Option Type part 1 | part 2 - 8thlight
- 🔚 Option Monads in Rust - Andrew Hobden
Ownership / Concurrency
- ⭐ Fearless Concurrency with Rust - Aaron Turon
- Rust ownership, the hard way - Chris Morgan
- ⭐ An alternative introduction to Rust - Steve Klabnik
- ⭐ The Problem With Single-threaded Shared Mutability - Manish Goregaokar
- ⭐ Wrapper Types in Rust: Choosing Your Guarantees - Manish Goregaokar
- Strategies for solving 'cannot move out of' borrowing errors in Rust - Herman J. Radtke III
- Why Rust's ownership/borrowing is hard - Ivan Sagalaev
- & vs. ref in Rust patterns - Karol Kuczmarski
- Interior mutability in Rust: what, why, how? | part 2 | part 3 - Ricardo Martins
- ⭐ Rust Means Never Having to Close a Socket - Yehuda Katz
- Understanding Lifetimes in Rust, part 1 | part 2 - Bibhas Bhattacharya
-
Some Notes on
Send
andSync
- Huon Wilson - Sharing Coloring Books With Friends in Rust - Jeena Lee
- Moving, Cloning, and Copying Coloring Books in Rust - Jeena Lee
- Ref patterns, destructuring, and invisible borrows - Robert Grosse
- Rust: A unique perspective - Matt Brubeck
- The Node Experiment - Exploring Async Basics with Rust - Carl Fredrik Samson
- A closer look at Ownership in Rust - Pascal Precht
- Understanding ownership in Rust - Ukpai Ugochi
Privacy
Strings
- String vs &str in Rust functions part 1 | part 2 | part 3 - Herman J. Radtke III
- From &str to Cow - Joe Wilm
- Rust: str vs String - Ameya Lokare
- On dealing with owning and borrowing in public interfaces - Dimitri Sabadie
- Why Rust strings seem hard - Brandon Smith
Syntax extensions
Traits
- ⭐ Abstraction without overhead: traits in Rust - Aaron Turon
- A series on trait objects part 1 | part 2 | part 3 | part 4 - Huon Wilson
- Rust traits for developer friendly libraries - Ben Ashford
- Traits and trait objects - Matt Godbolt
- Rust's Built-in Traits, the When, How & Why - Llogiq
- Where are you From::from - Llogiq
- Gentle Intro to Type-level Recursion in Rust - Lloyd Chan
- Traits and Trait Objects in Rust - Josh Leeb-du Toit
- A Quick Look at Trait Objects in Rust - Laurence Tratt
Unsafe
- Unsafe Rust: An Intro and Open Questions - Alexis Beingessner
- Memory Leaks are Memory Safe - Huon Wilson
- ⭐ On Reference Counting and Leaks - Niko Matsakis
- ⭐ A Few More Remarks on Reference Counting and Leaks - Niko Matsakis
- Pre-pooping Your Pants With Rust - Alexis Beingessner
- ⭐ Unsafe Abstractions - Niko Matsakis
- ⭐ The "Tootsie Pop" Model for Unsafe Code - Niko Matsakis
Playground
Locale links
People
This is the official Rust Team and Servo Team
Are you searching for a rustacean? http://www.rustaceans.org/
Do you want to ask a question? Users Forum, Stack Overflow
Do you want to meet them IRL? Meetup groups, Community calendar, Community talks list, RustBridge, Time till Rust
Go to rusty events? The 2018 Rust Event Lineup, The 2019 Rust Event Lineup
Are you looking for a job? RustJobs.rs
Are you fast, friendly, and fearless? Find something Rusty to work on!
Do you want to stay up to date? The official blog, This Week in Rust, This Week in Rust Docs, The official reddit
Do you want to find out why some historical decisions took place? Chronicle.rs
Fearless Rust Bloggers
A complete list could be found here
- Aaron Turon - blog
- Andrew Gallant - blog
- Andrew Hobden - blog
- Brian Anderson - blog
- Christoph Burgdorf - blog
- Chris Morgan - blog
- Felix S Klock II - blog
- Huon Wilson - blog
- Jonathan Turner - blog
- Llogiq - blog
- Manish Goregaokar - blog
- Nick Cameron - blog
- Niko Matsakis - blog
- Patrick Walton - blog
- Yehuda Katz - blog
- Steve Klabnik - blog
Don't forget Ferris the unofficial mascot.
Tutorials & Workshop Materials
These are slides and materials from brick-and-mortar workshops about Rust.
While they're unlikely to help a student learning independently, they may be
of interest if you're running a workshop on Rust.
- Workshop slides and exercises from RustConf 2017.
- Niko Matsakis's rust tutorializer framework
- Niko Matsakis's ownership, borrowing, traits, structs, and threading tutorials, keynote files
- Niko Matsakis's concurrency tutorial from December 2015
- Niko Matsakis's Mozlando Tutorial includes slides and play.rust-lang.org demos
- Jim Blandy's exercises
- Dan Callahan's Python Rust FFI examples
- Nick Cameron's oopsla slides and exercises
- Florian Gilcher's mailbox tutorial takes Hello World to a whole new concurrent and networked level
- Carol Nichols' Intro to Rust that presents the guessing game and ownership in a similar manner as the book
- Jonathan Pallant's Rust on the Raspberry Pi tutorial (using a Sense HAT)
Follow me:
https://twitter.com/scott_beeker
https://github.com/dangolbeeker
Top comments (7)
I've been wanting to learn this language for a while but for whatever reason I never prioritized it. Seems like every 6 months something related to it piques my interest. This article makes me think maybe it's time I just buckle down for 2 weeks and take a deep dive
I've just started with this language reading the book from the official site. I wanted to learn C++ but finally i opted for rust since it's used in many areas among them blockchain development and smart contracts which are realy intersenting techs. The great of Rust its the ownership feature which made me decide to start learning it.
C has an ABI compatibility with a huge chunk of other programming languages: Rust, Python, Go, C#, etc. In a way, C is our common language. Rust just can’t (and don’t want to) compete in this area.
I think your title is misleading. I think it should be "Whatever C++ can do rust can do better" . C and C++ are in very different domains and are also programmed in/with very different techniques.
Because C++ and rust way of programming is using many of the lots of features provided in the language whereas in C we don't have any features provided at all. Reinvent the wheel as much as you can. You need a garbage collector right? In a C world implement the heap memory manager on yourself and integrate with the project. Deadly!
thanks, ive been using rust for a little over a year (maybe a year and a half and i think its great. thanks for the comprehensive list of resource, its nice to see this on dev.to. Rust feels pretty niche right now and i dont know why (maybe the maturity of the language).
Tons of places are starting to use Rust. So i hope dev jobs for it get more. I know i love it.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.