Course Introduction
Getting Started with Rust
- Introduction to Rust
- Overview of Rusts Key Features
- Setting up the Development Environment
- Introduction to Cargo
Rust Basics
- Writing and Running Your First Rust program
- Comments
- Variables and Mutability
- Scalar and Compound Data Types
- Constants
- Shadows
- Macros
- Control Flow if else if else
- Control Flow loop and labels
- Control Flow for and while
- Control Flow Pattern matching with match
Functions
Ownership
- Introduction
- Stack and Heap
- The String Type and Ownership
- Scope and Ownership
- Variables and Data Interacting with Move
- Variables and Data Interacting with Clone
- Ownership and Functions
- References and Borrowing
- Immutable and Mutable References
- Rules of References
- The Slice Type
- Rules for Slices
Collections & Error Handling
- Structs
- Methods
- Enums
- Vectors
- Hashmaps
- Unrecoverable Errors
- Recoverable Errors
- Creating Custom Error Types
- Logging Libraries
- Logging Best Practices
Packages, Modules and Crates
- Introduction to Crates
- Introduction to Packages
- Introduction to Modules
- Bringing Paths into Scope
- Separating Modules into Files
Building Command-Line Tools
- Introduction to CLI Tools and Importance in DevOps
- Parsing command line args with clap
- Project Manage Docker Containers using Docker Clients in Rust
Debugging in Rust
Advanced Rust Concepts
- Generic Types
- Traits Shared Behavior
- Validating References with Lifetimes
- Introduction to Smart Pointers
- Box Single Ownership and Heap Allocation
- Rc Reference Counting and Shared Ownership
- RefCell and Interior Mutability
- Weak Breaking Reference Cycles
- Implementing Your Own Smart Pointer
Closures and Iterators
Fearless Concurrency
Asynchronous Programming
Testing & Continuous Integration
- Introduction to Testing in Rust
- Organizing Tests in Rust
- Mocking Dependencies in Rust
- Managing and Running Tests in Rust
- Building and Deploying with CICD
Advanced Features
- Advanced Traits
- Default Generic Type Parameters
- Fully qualified syntax
- Advanced Types
- Advanced Functions and Closures
Network Programming and File Handling
- Introduction to Network Programming in Rust
- Building TCP Clients and Servers
- Building UDP Clients and Servers
- Introduction to File Handling in Rust
- Performing Common Filesystem Operations
- Project Networked File Transfer Application
WebAssembly with Rust
- Introduction to WebAssembly and Why Rust
- Setting Up Your Rust and WebAssembly Development Environment
- Interacting with WebAssembly from JavaScript
- Accessing WebAssembly Memory from JavaScript
- Building a Mini Project Log Analyzer