
About Course
Who is this bootcamp for? Experienced developers looking to transition to Rust.Learn the language of the future. Your time is valuable (literally, $148,688/year). Learn Rust FAST with the bootcamp instead of digging through low quality resources. Students/Graduates looking for jobs. Learning Rust is a great addition to your resume. Stand out among other candidates. Become a competent programmer. Gain access to a community that can help you land your first job. И… You! Rust enthusiast. Rust is an innovative language that will expand your thinking! Cutting-edge technologies are created in Rust.
You’ll learn how to customize your development environment, configure your development environment (IDE), and install the necessary plugins. Then you will create your first project in Rust!
You will learn:
How to customize your development environment
Configuring your IDE and plugins
Creating Rust packages with Cargo
Variables and data types in Rust
Constant and static variables
Functions and runtime management
Understanding memory management is critical when learning Rust! In this section, you’ll learn about memory management from the very beginning!
You will learn:
A Rust-based computer science masterclass
How the ownership mechanism works
How the borrowing mechanism works
What slices are
String types (str, &str and String)
Rust does not use classes or objects! Instead, Rust uses structures (Structs) and enums (Enums) to create custom data types. In this section, you’ll learn how to create your own custom types!
You will learn:
How to create structures and enums
How to use implementation blocks
Pattern matching
Option and Result enumerations
Vectors
How to Structure Your Rust Projects
In this section, I’ll explain how modules work in an understandable way. I’ll also cover structuring larger projects and publishing your work on Crates.io.
You will learn:
An overview of project structure
The module system
External dependencies
Conditional compilation
How to structure large projects
Publishing your projects in Rust
How to Test and Document Your Code
Tests are a critical part of writing reliable code. In this section, you’ll learn how to write and structure unit and integration tests in Rust. We’ll also cover documentation issues.
You will learn:
How to write unit tests
How to write integration tests
How to structure your tests
Comments on documentation
Polymorphism with Generics and Traits
Rust does not support classical inheritance! Instead, polymorphism is achieved through generics (generalizations) and traits (traits). In this section, you will learn how both of these mechanisms work.
You will learn:
How to define generics
The Trait System
Trait boundaries and trait objects
Supertraits
Static dispatching vs. dynamic dispatching
How to display traits
Traits in the standard library
Advanced Memory Management
Memory management doesn’t end with possession and borrowing mechanisms! In this section, you’ll learn about lifetimes! We’ll also take a look at various smart pointers in Rust.
You will learn about:
Concrete Lifetimes (Concrete Lifetimes)
Generic Lifetimes Annotations (Generic Lifetimes Annotations)
Lifetimes in functions and structures
Smart pointers and why they are useful
Implicit Deref Coercion (Implicit Deref Coercion)
Understanding Error Handling in Rust
Understanding error handling is critical when designing your Rust applications. In this section, we’ll take a look at how error handling works in Rust.
You will learn:
How to generate uncorrectable errors
How to return correctable errors
How to propagate errors
Result and Option enumerations
How to handle multiple error types
How to use anyhow and thiserror
Functional Features in Rust
One of the most powerful features of Rust is its functional features. In this section, we’ll cover closures, function pointers, iterators, and more!
You will learn:
Closures and function pointers
Iterator pattern in Rust
Implementing the iterator pattern
How to iterate over collections
Combinators and how to use them
Parallelism and async/.await
This is probably the MOST IMPORTANT section. Understanding parallelism is critical, especially when using Rust for web projects.
You will learn:
The basic concepts of parallelism
Creating threads
Messaging using channels
Sharing state using Mutex
The async/.await model
How Futures work (future results)
What is asynchronous execution
What is Tokio and how it is used
What are Tokio tasks
Executing CPU-blocking code
Data Streams
The Powerful Macro System in Rust
Macros are an extremely powerful way to extend the syntax of a language. In this section, you’ll learn about the macro system in Rust from the very beginning!
The compilation process
What are macros
How to create declarative macros
How to create procedural macros
Function-like procedural macros
Attribute-like procedural macros
Custom Derive-based procedural macros (Custom Derive)
Unsafe Rust and FFI (Foreign Function Interface)
One of the great advantages of Rust is its ability to interact with other languages through the Foreign Function Interface. In this section, you will learn about insecure Rust and FFI!
You will learn about:
Unsafe Rust and when to use it
How to dereference raw pointers
What are unsafe functions
What unsafe traits are
How to modify static variables
How to write built-in assembly commands in Rust
How to call C code from Rust
How to call Rust code from C
Course Content
All lessons
-
001. Don’t skip this video!
07:20 -
002. How to use this Bootcamp effectively
05:43 -
003. Hello World
03:13 -
004. Variables
03:55 -
005. Data Types
03:34 -
006. Constants & Statics
02:44 -
007. Functions
03:26 -
008. Control Flow
03:21 -
009. Comments
00:50 -
010. Stack, Heap, and Static Memory
07:17 -
011. Memory Management Strategies
03:47 -
012. C++ RAII vs Rust OBRM – Part 1
10:52 -
013. C++ RAII vs Rust OBRM – Part 2
05:18 -
014. Ownership
06:32 -
015. Ownership Continued
07:18 -
016. Borrowing
10:29 -
017. Slices
09:02 -
018. BONUS Masterclass Strings in Rust. PART 1
10:09 -
019. BONUS Masterclass Strings in Rust. PART 2
10:39 -
020. Structs
03:30 -
021. Implementation Blocks
07:56 -
022. Tuple Structs
02:06 -
023. Enums
06:18 -
024. Matching
08:42 -
025. Option
05:53 -
026. Result
04:47 -
027. Vectors
07:21 -
028. Project Structure Overview
05:19 -
029. Modules
14:00 -
030. Modules Continued
08:18 -
031. External Dependencies
03:15 -
032. Publishing Your Package
06:10 -
033. Cargo Features
07:04 -
034. Cargo Workspaces
05:39 -
035. Unit Tests
12:24 -
036. Integration Tests
03:49 -
037. Documentation
02:26 -
038. BONUS Benchmark Testing
04:32 -
039. Generics
11:42 -
040. Traits
05:47 -
041. Trait Bounds
05:18 -
042. Supertraits
01:39 -
043. Trait Objects
06:47 -
044. Deriving Traits
02:45 -
045. The Orphan Rule
02:58 -
046. Concrete Lifetimes
05:55 -
047. Generic Lifetimes
09:35 -
048. Structs Lifetime Elision
08:05 -
049. Box Smart Pointer
05:28 -
050. Rc Smart Pointer
03:39 -
051. RefCell Smart Pointer
04:57 -
052. Deref Coercion
06:14 -
053. Unrecoverable Errors
02:02 -
054. Recoverable Errors
04:08 -
055. Propagating Errors
04:08 -
056. Result and Option
04:49 -
057. Multiple Error Types
05:41 -
058. Overview of Error Handling
04:46 -
059. Basic Error Handling
11:49 -
060. Custom Errors 1
06:22 -
061. Custom Errors 2
08:42 -
062. Custom Errors 3
06:59 -
063. thiserror & anyhow
05:13 -
064._BONUS_error-stack
23:20 -
065. Closures
12:21 -
066. Closures Continued
05:56 -
067. Function Pointers
04:42 -
068. Iterator Pattern
06:50 -
069. Iterator Pattern Continued
05:19 -
070. Iterating Over Collections
02:09 -
071. Combinators
11:06 -
072. Intro to Concurrency
08:18 -
073. Creating Threads
03:28 -
074. Moving Values Into Threads
01:01 -
075. Message Passing Between Threads
04:49 -
076. Sharing State Between Threads
02:48 -
077. Sharing State Between Threads Continued
03:33 -
078. Send & Sync Traits
02:07 -
079. async.await Basics
08:37 -
080. Tokio Tasks
04:46 -
081. CPU Intensive Code
02:11 -
082. Streams
02:09 -
083. Intro to Macros
05:08 -
084. Declarative Macros
03:00 -
085. Declarative Macros Continued
06:38 -
086. Procedural Macros
01:49 -
087. Procedural Macros – Function Like
04:51 -
088. Procedural Macros – Custom Derive
07:18 -
089. Procedural Macros – Attribute Like
07:09 -
090. Procedural Macros – Attribute Continued
07:10 -
091. Unsafe Basics
01:46 -
092. Dereferencing a Raw Pointer
02:48 -
093. Calling an Unsafe Function
01:37 -
094. Implementing an Unsafe Trait
01:09 -
095. Mutable Static Variables
01:29 -
096. Inline Assembly
01:09 -
097. FFI C from Rust
03:30 -
098. FFI Rust from C
01:45 -
099. BONUS FFI Rust from Python
07:35 -
100. What are microservices
06:19 -
101. Why Rust is great for microservices
02:40 -
102. Communication with gRPC
05:01 -
103. Containerization with Docker
08:02 -
104. CICD with GitHub Actions
02:18 -
105. Cloud Providers
03:21