Learning Rust
Material I come across which is benefitial to read through to learn the language (next to my own series, of course)
Content
Rust Overview
- General Overview
- Rust Features
2.1 Traits
2.2 Types
2.3 Associated Types
2.4 Closures
2.5 Ownership
2.6 Allocation and Memory
2.7 Lifetimes
2.8 Macros
2.9 Cargo - Specific Knowledge
3.1 Iterator
3.2 Options
3.3 Documentation Testing - Complete Learning Websites
- Tutorials
- Talks
- Project Ideas
- General Tinker
- Long form and General Knowledge
Rust Asnyc/Web
- Async
- Concurrency
- Futures
- Libraries
- Tide
- Interesting Projects
- Specific Knowledge
- General Web and Async KnowHow
- Async Tinker
- Insight in other languages
General Overview
- Rust for High-Level Programming Language Developers – IQDevs – Technology Excellence Redefined
- Learning-Rust/main.rs at master · Mathieu-Desrochers/Learning-Rust · GitHub
- Oxide : The Essence of Rust
- Structure literals vs constructors in Rust
Rust Features
Traits
- Rust: Traits – | ?- BlogName = _.
- Abstraction without overhead: traits in Rust - The Rust Programming Language Blog
- Rust Basics: the add Trait - Hashnode
Types
Associated Types
Closures
- Closures: Anonymous Functions that Can Capture Their Environment - The Rust Programming Language
- Finding Closure in Rust | Huon on the internet
Ownership
- Ownership in Rust, Part 1 – Thomas Countz – Medium
- Ownership in Rust, Part 2 – Thomas Countz – Medium
- Rust: Unlocking Systems Programming
- Stacked Borrows Implemented
Allocation and Memory
Lifetimes
- Rust Lifetimes for the Uninitialised
- Why can lifetimes not be inferred? - help - The Rust Programming Language Forum
- Lifetimes in Rust - Stack Overflow
- Generic Types, Traits, and Lifetimes - The Rust Programming Language
Macros
- A Practical Intro to Macros in Rust 1.0
- The Little Book of Rust Macros
- Deriving Traits in Rust with Procedural Macros · naftuli.wtf
Cargo
Specific Knowledge
Iterator
Options
Documentation Testing
Complete Learning Websites
Tutorials
- Writing an OS in Rust
- Streaming gRPC with Rust – Kevin Hoffman – Medium
- Introduction - Learning Rust With Entirely Too Many Linked Lists
- Stanford CS140e - Operating Systems
- Implementing TCP in Rust (part 1) - YouTube
- Build a cryptocurrency! - Blockchain in Rust #01: Blocks & Hashing - YouTube
Talks
- Rust - YouTube
- GOTO 2018 • Zen and the Art of Convincing Your Company to Use Rust • Ashley Williams - YouTube
- RustConf 2017 - Building Rocket by Sergio Benitez - YouTube
- RustConf 2018 - No Spaghetti: Designing for Understanding by Brandon W. Maister - YouTube
- TechCast #108 – Carol Nichols on Rust – Chariot Solutions
- A Case for Oxidation: The Rust Programming Language - YouTube
Project Ideas
General Tinker
- Understand this assembly output
- Understand this example code
- Rust pattern: Iterating an over a Rc<Vec>
- State Machine Patterns in Rust
Long form and General Knowledge
- Scientific computing: a Rust adventure Part 0 - Vectors
- Scientific computing: a Rust adventure Part 1 - Zero-cost abstractions
- Test harness - Wikipedia
Async
- What Are Tokio and Async IO All About?
- Async, futures, and tokio - Rust Crash Course lesson 7
- async/await notation for ergonomic asynchronous IO Pull Request
- asynchronous - What is the purpose of async/await in Rust?
- The relationship between async libraries in Rust
- RFC: stabilize
std::task
andstd::future::Future
Concurrency
- Green Threads are like Garbage Collection
- Fearless Concurrency - The Rust Programming Language
- Sending trait objects between threads - help - The Rust Programming Language Forum
- std::sync::Arc - Rust
- Is Send/Sync special cased? - The Rust Programming Language Forum
- What is a Thread?
Futures
- Understanding Futures In Rust — Part 1 | Viget
- Futures in Rust (and Haskell)
- Converting AsyncRead and AsyncWrite to Futures, Sinks and Streams
- Zero-cost futures in Rust · Aaron Turon
Libraries
- Futures: Zero-cost asynchronous programming in Rust
- Romio: Wherefore art thou Romio? , GitHub - withoutboats/romio: asynchronous networking primitives
- Juliex: GitHub - withoutboats/juliex
- Tower: GitHub - tower-rs/tower: fn(Request) -> Future
- Serde: GitHub - serde-rs/serde: Serialization framework for Rust
- HTTP-Service: GitHub - rustasync/http-service: Types and traits for http-based services using the latest futures API
- Tokio: Tokio - The asynchronous run-time for the Rust programming language.
Tide
- WIP New Tide middleware: Automatic compression handling by kimsnj · Pull Request #117 · rustasync/tide · GitHub
- URL generation · Issue #24 · rustasync/tide · GitHub
- Logging middleware · Issue #8 · rustasync/tide · GitHub
- An RFC for structured logging by KodrAus · Pull Request #296 · rust-lang-nursery/log · GitHub
- Nail down wildcard/fallback rules · Issue #12 · rustasync/tide · GitHub
- Extend extractors with an optional seed per endpoint. by HeroicKatora · Pull Request #126 · rustasync/tide · GitHub
- WIP Revamp Tide, dropping Extractors and simplifying the framework by aturon · Pull Request #156 · rustasync/tide · GitHub
- Nail down wildcard/fallback rules · Issue #12 · rustasync/tide · GitHub
- Consider using route_recognizer instead of path-table · Issue #141 · rustasync/tide · GitHub
- Gotham Example
Interesting projects
- rust-ipfs-api: Rust crate for interfacing with the IPFS API
- Radicle 🌱
- ffsend: Easily and securely share files from the command line
- rust-imap: IMAP client library
- Ramhorns: Dynamic templates
- May - coroutines in Rust
Specific Knowledge
General Web and Async KnowHow
- Concurrency, Parallelism, Threads, Processes, Async and Sync — Related? 🤔
- The Illustrated TLS 1.3 Connection: Every Byte Explained
- corefx/HttpCorrelationProtocol.md at master · dotnet/corefx · GitHub
- Transport Layer Security - Wikipedia
- Finite-state machine - Wikipedia
- There is no free lunch
Async Tinker
- Sending trait objects between threads
- Event Stream in AWS Lambda
- How do I use asnyc/await syntax in Tokio?