Learn more about Substrate from these resources:
- Substrate Developer Hub Home - Landing page of the official Substrate documentation.
- Conceptual Docs - Explanation of Substrate's architecture at a high level of abstraction.
- Reference Docs - Documentaiton on specific Substrate APIs with little abstraction.
- Substrate Tutorials - Step by step guides to accomplish specific tasks with Substrate.
Once you've got the fundamentals of Substrate, it can only help to know more rust. Here is a collection of helpful docs and blog posts to take you down the rabbit hole.
To become more familiar with commmon design patterns in Rust, the following links might be helpful:
To optimize runtime performance, Substrate developers should make use of iterators, traits, and Rust's other "zero cost abstractions":
- Abstraction without overhead: traits in Rust, related conference talk
- Effectively Using Iterators in Rust
- Achieving Warp Speed with Rust
- Lock-free Rust: Crossbeam in 2019 a high-level overview of concurrency in Rust.
- Rayon splits your data into distinct pieces, gives each piece to a thread to do some kind of computation on it, and finally aggregates results. Its goal is to distribute CPU-intensive tasks onto a thread pool.
- Tokio runs tasks which sometimes need to be paused in order to wait for asynchronous events. Handling tons of such tasks is no problem. Its goal is to distribute IO-intensive tasks onto a thread pool.
- Crossbeam is all about low-level concurrency: atomics, concurrent data structures, synchronization primitives. Same idea as the
std::syncmodule, but bigger. Its goal is to provide tools on top of which libraries like Rayon and Tokio can be built.
- Introduction to Async/Await Programming (withoutboats/wakers-i)
- Futures (by Aaron Turon)
- RustLatam 2019 - Without Boats: Zero-Cost Async IO