Welcome to Rust Adventure.
In my experience you're here for one of two reasons:
- You have a problem you think Rust can solve
- You keep hearing Rust come up
Let's start with what problems Rust can help you with.
Performance is a common one.
Often tools or APIs written in JavaScript or other languages can turn out to be slower than we'd like. While a lot of work has gone into engines like V8, we can still end up with slow builds quite often. This is why much JavaScript tooling is being rewritten in compiled languages like Rust.
Rust can help with this not because it is "automatically fast" but rather because it offers predictable, understandable performance at compile time. When we make improvements to our Rust programs, those improvements stick around.
Another reason Rust is referenced as being a "fast" language is its focus on zero-cost abstractions. This means that you often don't get penalized in performance for writing readable, high-level, idiomatic Rust code.
Why do people keep talking about Rust?
Let's move on to reason #2: you keep hearing Rust come up. Maybe you've seen that Rust is the StackOverflow survey's most loved language 6 years running, or that major companies like AWS, Google, and Microsoft joined the Rust Foundation, or maybe you've just got that friend that won't stop talking about it.
The most positive thing I can say about Rust is that the project is focused on empowerment and inclusion as a first principle. You can see this over and over again in the way the language evolves. High level constructs that are easier to reason about and performant. Compiler error messages often include accurate suggestions for how to fix the problem.
You may still be wondering "What can I do with Rust?". So here's a small, incomplete list.
- Serverless functions
- Serverful services
- Embedded programming for microcontrollers, Arduinos, or Raspberry Pis
- CLI tools
- Enhance the performance of JS/Ruby/Elixir/etc by calling out to Rust
- Compile to Wasm and deploy to the edge, browser, and more
- Game development
- Operating systems and shells
Why Rust Adventure?
It is true that there is a lot of writing on Rust out there. Not the least of which is the freely available book "The Rust Programming Language", but also smaller more focused books on writing macros or doing embedded programming.
These are fantastic resources.
What's different about Rust Adventure?
Firstly, Rust Adventure is a set of self-paced workshops that are made up of focused videos. If you're having trouble reading all of "The Rust Programming Language" and then coming up with your own projects, Rust Adventure is for you.
Most of the resources that existed before I started working on Rust Adventure were granular. They often run through language features in isolation, building up from variables to functions to match
syntax and so on or extremely specific.
This is useful for a deep dive into language constructs but for me after I went through these resources I found myself still having trouble writing real world Rust programs.
Still other texts assume you're familiar with C and will use analogies to how C works.
When I was learning Rust, I came from working with JavaScript for years. I didn't come from a C background and I didn't get a computer science degree.
Rust Adventure is a series of self-paced practical workshops that introduce you to real-world usage of Iterators, Traits, Futures, and other language features through a set of projects that you can then continue working with.
Rust Adventure workshops assume no previous knowledge of C and are designed so that someone can come to Rust from working with a dynamic language like Ruby, JavaScript, or Python.
The goal of Rust Adventure is to help you transfer what you learn in each workshop to your own future projects.
