/zero-to-async

Building a basic async runtime from scratch in embedded Rust

Primary LanguageRustApache License 2.0Apache-2.0

Zero to Async

This is the companion repository for the YouTube video, where we walk through the creation of a basic async runtime in embedded Rust from the ground up. The code for the end of each chapter is in its respective directory.

Is it perfect? No! But some parts of it might be helpful to those (ok, me) trying to learn about async/await or using Rust in embedded systems.

My apologies to Ferris for the use of unsafe in a few places: some were avoidable (PAC access via raw pointer), while others were not (no-std Waker/RawWaker stuff).

Prerequisites

A burning desire to learn new things? And watching the two videos leading up to this one, of course, which cover:

Also: reading the Rust book is always a good idea

Further Research

Can't get enough async embedded Rust? Then I'd encourage you to check out:

If you're looking for a similar bottom-up exploration of async Rust but this time using the standard library, check out the book "Asynchronous Programming in Rust" by Carl Fredrik Samson.

Any discussion of async Rust would be incomplete without mentioning without.boats blog, which is full of great articles about the history of async/await within the Rust project, async topics like Pinning, and possible future directions for async.