Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Rust Programming: The Complete Developer's Guide
Introduction
Rust Programming: The Complete Developer's Guide (2:46)
Exercise: Meet Your Classmates and Instructor
Course Projects + Code + Slides + Cheatsheet
ZTM Plugin + Understanding Your Video Player
Set Your Learning Streak Goal
Rust Fundamentals
Intro (2:26)
Data Types (5:01)
Variables (6:35)
Functions (8:12)
println! (3:04)
Control Flow with If (8:38)
Repetition (6:30)
Setup Rust: Toolchain (4:49)
Setup Rust: rust-analyzer (4:18)
Setup Rust: clippy (2:31)
Setup Rust: error-lens (1:27)
Comments (3:36)
Activity: Functions (7:08)
Numeric Types & Basic Arithmetic (3:36)
Activity: Basic Math (5:27)
Let's Have Some Fun (+ Free Resources)
Making Decisions with Rust
Control Flow: If & Else (2:33)
Activity: Logic with If & Else (3:59)
Activity: Logic with If & Else (4:59)
Match Expression (4:25)
Demo: Basic Match (3:11)
Activity: Basic Match 1 (4:03)
Activity: Basic Match 2 (5:11)
Unlimited Updates
Repetition
The Loop Expression (4:48)
Activity: Loops (4:58)
The While Loop (3:22)
Activity: While Loops (4:45)
Working With Data
Enums (3:11)
Demo: Enums (3:43)
Activity: Enums (6:09)
Structs (2:47)
Demo: Structs (2:51)
Activity: Structs (9:27)
Tuples (3:31)
Demo: Tuples (5:49)
Activity: Tuples (5:55)
Expressions (3:49)
Demo: Expressions (5:09)
Activity: Expressions (7:11)
Course Check-In
Rust's Memory Model
Intermediate Memory Concepts (3:34)
Ownership (6:17)
Demo: Ownership (6:07)
Activity: Ownership (4:57)
Data Collections
Implementing Functionality (9:20)
Activity: Implementing Functionality (16:30)
The Vector Data Structure (4:53)
Vector Basics & For Loops (2:28)
Activity: Vectors & For Loops (6:48)
About Strings (4:00)
Demo: Strings (4:28)
Activity: Strings (7:23)
Implement a New Life System
Expanding Knowledge
Deriving Functionality (6:08)
Type Annotations (4:07)
Enums Revisited (3:59)
Demo: Advanced Match (7:57)
Activity: Advanced match (10:42)
The Option Type (6:26)
Demo: Option (4:26)
Activity: Option (5:01)
Generating Documentation (2:24)
Standard Library API docs (3:33)
Activity: Standard Library API docs (3:46)
Fallible Functions
The Result Type (4:40)
Demo: Result (14:16)
Activity: Result (6:40)
Activity: Result & The Question Mark Operator (7:51)
Data Collection: HashMap
The HashMap Data Structure (4:20)
Working With HashMaps (5:32)
Activity: HashMap Basics (8:26)
Easier Data Management
Basic Closures (4:41)
Map Combinator (5:01)
Activity: Map Combinator (8:07)
Option Combinator Pattern (7:49)
Activity: Option Combinators (4:23)
Using Iterators (9:12)
Activity: Using Iterators (5:14)
Ranges (1:58)
If..let..else (2:58)
while..let (2:06)
Managing Code
Inline Modules (4:02)
Activity: Inline Modules (10:18)
Testing (6:52)
Activity: Testing (7:42)
External Crates (6:28)
Activity: Adding an External Crate (4:44)
External Modules (10:27)
Activity: External Modules (9:54)
Milestone Project: Billing Application
Gathering User Input (14:21)
Activity: Gathering User Input (22:47)
Mini Project: Introduction (2:44)
Retrieve User Input (3:16)
Creating The Main Menu Loop (7:14)
Required Data Structures (4:10)
Implementation: Adding & Viewing Bills (13:00)
Implementation: Removing Bills (6:50)
Implementation: Editing Bills (9:15)
Shared Functionality
Traits (4:54)
Demo: Traits (4:58)
Activity: Traits (5:58)
Implementing The "Default" Trait (2:28)
Generics & Functions (13:54)
Demo: Generics & Functions (6:22)
Activity: Generics & Functions (5:52)
Generic Structures (10:06)
Generic Structures & impl Blocks (7:58)
Demo: Generics & Structures (6:38)
Activity: Generics & Structures (10:18)
Advanced Memory Concepts (8:50)
Trait Objects (11:35)
Demo: Trait Objects (7:26)
Activity: Trait Objects (8:35)
Lifetimes
Ownership & Lifetimes (9:03)
Demo: Lifetimes (8:32)
Activity: Lifetimes & Structures (10:49)
Activity: Lifetimes & Functions (4:47)
Improving Program Reliability
Custom Error Types (8:51)
Demo: Custom Error Types (8:53)
Activity: Creating a Custom Error (9:01)
const (2:20)
New Type Pattern (5:07)
Activity: Utilizing The New Type Pattern (8:08)
TypeState Pattern (4:13)
Demo: TypeState Pattern (11:48)
Activity: TypeState Pattern (7:41)
Demo: Match Guards & Binding (6:22)
Activity: Match Guards & Binding (8:45)
Arrays & Slices (7:48)
Slice Patterns (5:53)
Activity: Slices (5:41)
Type Aliases (5:22)
Exercise: Imposter Syndrome (2:55)
Type Conversions
From/Into (8:17)
TryFrom/TryInto (3:56)
Demo: From/Into (7:58)
Activity: TryFrom/TryInto (10:15)
Numeric Limits & Numeric Type Casting (7:59)
Maintainable Code
Effective Trait Usage (10:00)
Demo: Abstract Network Request (12:06)
Activity: Abstract Data Storage (17:54)
Demo: Proxy / Delegate (10:17)
Activity: Implement a proxy structure (8:49)
Demo: Extension traits (3:31)
Demo: Blanket implementations (5:39)
Activity: Extension traits & blanket implementations (3:30)
Test-Driven Development (TDD) (11:33)
TDD Demo: Standalone function 1 (6:50)
TDD Demo: Standalone function 2 (6:34)
TDD Demo: struct methods (13:55)
Red-Green-Refactor (5:15)
TDD Demo: Maintainable tests 1 (8:43)
TDD Demo: Maintainable tests 2 (9:33)
TDD Demo: Maintainable tests 3 (12:30)
Activity: Applying TDD (14:36)
Project: Time Tracker
Project overview (0:57)
Creating a new project (2:33)
Project structure (3:33)
Dependencies (1:31)
Error configuration (10:15)
Tracing configuration (5:27)
Initial testing setup (9:28)
CLI Parsing module (9:45)
Parsing with Clap (6:06)
Tracker module (8:02)
Starting & stopping the tracker (11:20)
Time records setup (11:41)
TIme records implementation (13:55)
Tracker behavior test (5:13)
Tracker behavior test implementation (2:16)
Extract tracker interface (5:40)
Reporting setup (15:35)
Calculating elapsed duration (5:19)
Report formatter setup (4:19)
Report formatter implementation (1:55)
CLI: start command test setup (8:33)
CLI: start & stop command implementation (10:49)
CLI: generating reports & cleanup (11:37)
Parallel Execution
Passing Closures to Functions (10:53)
Threads (6:44)
Demo: Threads (7:39)
Activity: Threads (4:29)
Channels (8:13)
Demo: Channels (5:04)
Demo: Bidirectional Threaded Communication (7:28)
Activity: Channels (9:23)
Shared Ownership
Smart Pointers (4:07)
Interior Mutability: Cell & RefCell (8:06)
Demo: Smart Pointers & RefCell (7:49)
Activity: Smart Pointers & RefCell (9:14)
Arc/Mutex (8:38)
Threading: Deadlocks (6:27)
Demo: Arc/Mutex (4:15)
Activity: Arc/Mutex (5:13)
Standard Library Tour
Enum Equality & Ordering (3:42)
Struct Equality & Ordering (4:23)
Operator Overloading (7:24)
Iterators: Implementing Iterator for a Struct (3:31)
Implement IntoIterator (7:58)
Demo: Implementing IntoIterator (9:23)
Activity: Implementing Iterator (5:45)
Iterators: Custom Iteration Logic (8:07)
Helpful Macros (7:48)
Managing Integer Overflow (5:39)
Other Language Features
Turbofish (2:29)
Loop Labels (2:44)
Loop Expressions (2:34)
Struct Update Syntax (2:47)
Escape Sequences & Raw Strings (4:17)
Crate Roundup
dotenvy (2:32)
serde (3:56)
rand (4:20)
cached (4:16)
regex (5:17)
chrono (7:31)
strum (4:24)
derive_more (6:32)
rayon (4:00)
tracing (6:29)
color-eyre (4:15)
Resources
Helpful Links for Your Rust Career
Declarative Macros
Overview (6:54)
Detail (15:39)
Demo: impl Blocks (6:38)
Activity: Control Flow (2:51)
Activity: impl Blocks (2:34)
Repetitions (8:46)
Demo: Repetitions (3:14)
Activity: HashMap (5:22)
Demo: Syntax Extension (8:52)
Activity: Syntax Extension (4:11)
Activity: Generating Tests (6:31)
Activity: Function Tracer (4:47)
Demo: Checked Config (13:18)
Demo: Recursive tt Muncher (6:40)
Where To Go From Here?
Thank You! (1:17)
Review This Course!
Become An Alumni
Learning Guideline
ZTM Events Every Month
LinkedIn Endorsements
The Option Type
This lecture is available exclusively for ZTM Academy members.
If you're already a member,
you'll need to login
.
Join ZTM To Unlock All Lectures