Zenler Player
Your course is loading. Hang tight.
Master The Rust Programming Language : Beginner To Advanced
Back to curriculum
0% Complete
0% Complete
Introduction to Rust
What does Rust's memory safety mean? Part-1
Course repository
Create, Build, Run a Rust program
Print related macros in Rust
format!() and named place holders
Exercise-diy-1
Useful cargo tools
Printing in hex and binary formats
Exercise-diy-2
Exercise-diy-3
r and r# tagging of strings
Variables, mutability and data types explanation
'as' keyword and storing ASCII values
char data type
Exercise-diy-4
Array and array iteration
Exercise-diy-5
Arithmetic operators and short hand notations
Writing a Function in Rust
What does Rust's memory safety mean? Part-2
What does Rust's memory safety mean? Part-3
Unit testing in Rust
Writing test cases
Standard library assert macros
Writing test cases contd.
References
Borrow, Borrower and Referent
slice data type
Std. library functions of the slice data type
Using if..else as statements and expressions
The 'match' statement
Using if..else if..else and if let..else if let…else
comparision and logical operators
Bitwise Operators
Exercise-diy-6
Exercise-diy-6-2
Strings in Rust
Strings and UTF-8 format
Slice of a String
Converting String to Slice and vice versa
String concatination
String Indexing
Exercise-diy-7-Part-1
Exercise-diy-7-Part-2
Exercise-diy-7-Part-3
Ownership, Move, and Copy semantics
Call by value and Call by reference
Loop statements in Rust
Different ways of Iteration using for..in loop
Solution
while and while let loops
Exercise-diy-8
Tuple datatype
Pattern matching with tuples
Tuple matching and Move
ref keyword
Creating and Initializing a struct
Is struct 'move' or 'copy'?
Struct and Default trait
Tuple struct and Unit struct
Writing Struct methods
Associated function as Constructor of a Struct
Pattern matching with Struct
ref and @ usage with struct pattern matching
Defining an Enum in Rust
Methods and associated functions of an Enum
Pattern matching using Enums
Option type
Option Usage
Introduction to Vectors
Vectors under the hood
Vector indexing
Slice of a vector
Vector methods: push(), pop(), shrink_to_fit()
Exercise-diy-11
Vector methods: drain(), extract_if()
Vector methods: retain(), retain_mut()
Vector methods: split() and friends
Vector methods: splice(), append(), extend()
Vector methods: prepend using index() and splice()
VecDeque
Enum Result
Error handling using Result enum
Exercise on Result enum
Error propagation operator ( ? )
Converting 'Option' to 'Result' type
unwrap() and expect() methods
unwrap_err()
Std. Library error types
Handling std::io::Error
Numeric Errors : Exercise
Numeric Errors : Exercise contd
Exercise on error conversion
Exercise on error conversion contd.
map_err() usage
Auto conversion of errors
HashMap and its methods part-1
HashMap and its methods part-2
Generics syntax and Writing generic functions
Function with multiple generic type parameters
Generic structs and enums
Exercise-diy-13
Lifetime and scope
Lifetime annotations example
Lifetime elision rules
Lifetime annotations with structs
Lifetime annotations with structs contd.
Lifetime annotations with struct methods
Const. and Static variables
Introduction to Trait and Trait methods
Associated types of a Trait
Exercise: Implementing Display trait for user defined structure part-1
Exercise: Implementing Display trait for user defined structure part-2
Exercise: Implementing Display trait for user defined structure part-3
Trait bounds
Trait objects and Virtual table
Boxing the DST
Memory layout of Boxing of Trait Object
Introduction to Closures and Syntax
Closure capturing environment
Traits associated with closures
Behaviour of closure variables
Passing closure as arguments to a function part-1
Passing closure as arguments to a function part-2
Closures as Struct member fields
Memory layout of the program
Types of Closures
Exercise on Closure
Closures as Struct member fields[Using Generics]
Closures and event handling
Introduction to Iterators
Trait 'Iterator' Vs Trait 'IntoIterator'
Creating an custom iterator
Iterating over custom iterator by value, mutable and immutable borrow
Creating an custom iterator: Refactoring next method
Trait 'Iterator' Vs Trait 'IntoIterator'
Exercise: Implementing a custom iterator
Solution: Implementing a custom iterator
Implementing Trait 'IntoIterator' for a custom type Part-1
Implementing Trait 'IntoIterator' for a custom type Part-2
Implementing Trait 'IntoIterator' for a custom type Part-3
Implementing Trait 'IntoIterator' for a custom type Part-4-Solution
Iterator Methods
for_each() as an alternate to for loop
iter(), iter_mut() and into_iter() explanation
Commonly used iterator adapters
map()
collect()
Using collect() with custom collection
Implementing Trait 'FromIterator' on a type
filter()
package, crate, cargo.toml , cargo.lock
[package] section of cargo.toml, Semantic Versioning
Package structuring rules
[dependencies] section of cargo.toml
Rust editions
Modules
Privacy rules summary
Struct encapsulation
Organizing modules into separate files
Re-exporting
Raw Pointers (*mut T and *const T)
Smart Pointer Box T
Box of String
Using Dynamically Sized Type(DST)
Box of Slice [T]
Box of Trait object (dyn Trait)
Storing heterogeneous data in a Vector using Trait object
Converting Box of T in to raw pointers and vice versa
Borrow of Box T
Enabling recursive types using Box T
Rc
Strong and weak count of Rc type
Section 1: Introduction
Introduction to Rust
Preview
What does Rust's memory safety mean? Part-1
Preview
Course repository
Create, Build, Run a Rust program
Preview
Section 2: Prints
Print related macros in Rust
format!() and named place holders
Exercise-diy-1
Useful cargo tools
Printing in hex and binary formats
Exercise-diy-2
Exercise-diy-3
r and r# tagging of strings
Section 3: Variables and Data types
Variables, mutability and data types explanation
Preview
'as' keyword and storing ASCII values
Preview
char data type
Preview
Exercise-diy-4
Array and array iteration
Exercise-diy-5
Arithmetic operators and short hand notations
Writing a Function in Rust
Section 4: What does Rust's memory safety mean? contd.
What does Rust's memory safety mean? Part-2
Preview
What does Rust's memory safety mean? Part-3
Preview
Section 5: Testing in Rust
Unit testing in Rust
Preview
Writing test cases
Preview
Standard library assert macros
Writing test cases contd.
Section 6: References
References
Borrow, Borrower and Referent
slice data type
Std. library functions of the slice data type
Section 7: Decision making
Using if..else as statements and expressions
The 'match' statement
Using if..else if..else and if let..else if let…else
comparision and logical operators
Bitwise Operators
Exercise-diy-6
Exercise-diy-6-2
Section 8: Strings
Strings in Rust
Strings and UTF-8 format
Slice of a String
Converting String to Slice and vice versa
String concatination
String Indexing
Exercise-diy-7-Part-1
Exercise-diy-7-Part-2
Exercise-diy-7-Part-3
Section 9: Ownership
Ownership, Move, and Copy semantics
Call by value and Call by reference
Section 10: Loops
Loop statements in Rust
Different ways of Iteration using for..in loop
Solution
while and while let loops
Exercise-diy-8
Section 11: Tuples
Tuple datatype
Pattern matching with tuples
Tuple matching and Move
ref keyword
Section 12: Structure
Creating and Initializing a struct
Preview
Is struct 'move' or 'copy'?
Preview
Struct and Default trait
Tuple struct and Unit struct
Writing Struct methods
Associated function as Constructor of a Struct
Pattern matching with Struct
ref and @ usage with struct pattern matching
Section 13: Enums
Defining an Enum in Rust
Methods and associated functions of an Enum
Pattern matching using Enums
Option type
Option Usage
Section 14: Vectors
Introduction to Vectors
Vectors under the hood
Preview
Vector indexing
Slice of a vector
Vector methods: push(), pop(), shrink_to_fit()
Exercise-diy-11
Vector methods: drain(), extract_if()
Vector methods: retain(), retain_mut()
Vector methods: split() and friends
Vector methods: splice(), append(), extend()
Vector methods: prepend using index() and splice()
VecDeque
Section 15: Error Handling
Enum Result
Preview
Error handling using Result enum
Preview
Exercise on Result enum
Error propagation operator ( ? )
Converting 'Option' to 'Result' type
unwrap() and expect() methods
unwrap_err()
Std. Library error types
Handling std::io::Error
Numeric Errors : Exercise
Numeric Errors : Exercise contd
Exercise on error conversion
Exercise on error conversion contd.
map_err() usage
Auto conversion of errors
Section 16: HashMap
HashMap and its methods part-1
HashMap and its methods part-2
Section 17: Generics
Generics syntax and Writing generic functions
Function with multiple generic type parameters
Generic structs and enums
Exercise-diy-13
Section 18: Lifetimes
Lifetime and scope
Lifetime annotations example
Lifetime elision rules
Lifetime annotations with structs
Lifetime annotations with structs contd.
Lifetime annotations with struct methods
Section 19: Const and Static
Const. and Static variables
Section 20: Traits
Introduction to Trait and Trait methods
Associated types of a Trait
Exercise: Implementing Display trait for user defined structure part-1
Exercise: Implementing Display trait for user defined structure part-2
Exercise: Implementing Display trait for user defined structure part-3
Trait bounds
Trait objects and Virtual table
Boxing the DST
Memory layout of Boxing of Trait Object
Section 21: Closures
Introduction to Closures and Syntax
Closure capturing environment
Traits associated with closures
Behaviour of closure variables
Passing closure as arguments to a function part-1
Passing closure as arguments to a function part-2
Closures as Struct member fields
Memory layout of the program
Types of Closures
Exercise on Closure
Closures as Struct member fields[Using Generics]
Closures and event handling
Section 22: Iterators
Introduction to Iterators
Trait 'Iterator' Vs Trait 'IntoIterator'
Creating an custom iterator
Iterating over custom iterator by value, mutable and immutable borrow
Creating an custom iterator: Refactoring next method
Trait 'Iterator' Vs Trait 'IntoIterator'
Exercise: Implementing a custom iterator
Solution: Implementing a custom iterator
Implementing Trait 'IntoIterator' for a custom type Part-1
Implementing Trait 'IntoIterator' for a custom type Part-2
Implementing Trait 'IntoIterator' for a custom type Part-3
Implementing Trait 'IntoIterator' for a custom type Part-4-Solution
Iterator Methods
Preview
for_each() as an alternate to for loop
iter(), iter_mut() and into_iter() explanation
Commonly used iterator adapters
map()
collect()
Using collect() with custom collection
Implementing Trait 'FromIterator' on a type
filter()
Section 23: Structuring Code in Rust
package, crate, cargo.toml , cargo.lock
[package] section of cargo.toml, Semantic Versioning
Package structuring rules
[dependencies] section of cargo.toml
Rust editions
Modules
Privacy rules summary
Struct encapsulation
Organizing modules into separate files
Re-exporting
Section 24: Raw and Smart pointers
Raw Pointers (*mut T and *const T)
Smart Pointer Box T
Box of String
Using Dynamically Sized Type(DST)
Box of Slice [T]
Box of Trait object (dyn Trait)
Storing heterogeneous data in a Vector using Trait object
Converting Box of T in to raw pointers and vice versa
Borrow of Box T
Enabling recursive types using Box T
Section 25: Reference counted type Rc
Rc
Strong and weak count of Rc type
×
This is an unpublished lesson. This lesson will not be shown for students unless you set it as Public.
Back to Dashboard
No contents are available in this lesson!
No lessons available !
Back to Dashboard
Lesson contents locked
Enroll to unlock this lesson.
Enroll to unlock
Next Lesson