Welcome to the Rust State Machine tutorial.
This is a guided tutorial intended to teach readers the basics of Rust, Blockchain, and eventually the inner workings of the Polkadot SDK.
It has been my experience that the hardest part of building your first blockchain using the Polkadot SDK is navigating the advance Rust features used by Substrate, and understanding the underlying magic behind various macros which generate code for you.
This tutorial tries to directly address this by having you build a completely vanilla Rust project which does all the same tricks as the Polkadot SDK, so you know first hand what is going on behind the scenes.
This tutorial does not assume the reader has much previous knowledge about Rust, Blockchain, or the Polkadot SDK, however, this tutorial does not replace a basic introduction of any of those topics.
It is strongly recommended that before you begin this tutorial, that you at least have read the first 11 chapters of the Rust Book.
You need not be an expert in all that you read, but it will help to have exposure to all the various topics like: ownership, basic data types, structures, enums, crates, error handling, traits, generic types, and tests.
The tutorial is broken into sections which cover specific learning goals for the reader, and can act as good pause points if you need them.
All of the content of this tutorial is open source, free to access, and can be found here.
If you have suggestions which can improve the tutorial, comments, issues and pull requests are welcome.
Without further ado, enjoy and I hope you learn a ton!