
Begin your journey to become a professional Rust developer with this course. The curriculum covers Windows, Linux, and Mac setups and notes for beginners.
Explore Rust fundamentals from variables and functions to memory safety with ownership, borrowing, and references, then cover structs, enums, generics, collections, error handling, testing, and async Rust.
Install rust on Windows 10 using the rustup installer, install Visual Studio C++ build tools desktop development, ensure the PATH is updated, and verify the rust version with rustc --version.
install the latest Rust on Ubuntu 20 by ensuring kernel and build essential, then run the curl installer to install Rust 1.57 and update your path—steps also work on macOS.
Learn the basics of programming with Rust, including setting up a simple program and building and running it, and explore variables, data types, conditionals, functions, and skills for any language.
Set up your first Rust program with cargo, create a new project, and run the executable to print hello world to the console, while exploring main.rs and cargo's role.
Install the official rust extension for Visual Studio Code, open and navigate your project folder, and run cargo run to compile and display Hello World.
Declare variables with let, toggle mutability with mut, and print values using println to observe run outputs. Use const for immutable values and follow all-caps naming conventions to indicate constants.
Explore rust scalar data types, including signed and unsigned integers of 8, 16, 32, 64, 128 bits, floats, booleans, and characters, with decimal, hex, octal, and binary literals.
Discover how tuples group multiple values into a fixed-length compound type, access elements by zero-based indices, and destructure into separate variables, with examples from integers, strings, and booleans.
Explore arrays in Rust as fixed-length, same-type collections with zero-based indexing and learn to modify them mutably while avoiding out-of-bounds panics.
Vectors in Rust are resizable heap-allocated arrays created with the vec macro or Vec::new, supporting push, pop, debug formatting, capacity, and growth from ranges.
Learn how slices in Rust reference a region of an array or vector as a non owning fat pointer, enabling functions to operate on ranges rather than single values.
Explore strings and &str in Rust, including heap allocation, utf-8 validation, and non-null termination. Learn to create, convert between String and string slices, mutate, and compare values.
Learn how string literals use backslash escapes to represent non utf eight sequences, with an example that prints rust using cargo build and run.
define and call functions with the fn keyword and snake_case names, see main as the program entry point, and learn parameters, return values, gcd, and boolean returns.
Explore control flow by using if statements with else and else if, and master loops while and for, including nested loops with break, applied to vectors and printed outputs.
Master the fundamental concepts essential for becoming a great programmer, review any uncertain topics, and engage in the Q&A to solidify understanding before advancing to section three.
Explore Rust basics with a step-by-step section 2 assignment walkthrough, covering variables, modulo, vectors, mutability, string concatenation, functions, control flow, and ownership.
Explore Rust's ownership, references, and borrowing, including moves, clones, and copying, and see how the ownership model shapes the memory model and its impact on function use and code.
Learn Rust's ownership model that guarantees memory safety by enforcing a single owner and automatic drops when out of scope, while comparing stack and heap behavior.
Demonstrates Rust move semantics by transferring ownership from one variable to another and preventing access to moved values; contrasts moves with copies and hints at deep and shallow copies.
Explore clone as a deep copy that copies values into a new variable without ownership transfer, illustrated by cloning a vector of strings like Tyler.
Explore how the copy trait works in Rust by illustrating why integers copy to both X and Y, and contrast with move semantics while reinforcing ownership concepts.
Explore ownership, moves, and copying in Rust through hands-on examples of passing values to functions, returning ownership, and how loops and control flow affect ownership.
Explore references and borrowing in Rust, distinguishing shared references for reading and mutable references for writing. See how mutability enables modifying values without ownership, demonstrated with a hello world example.
Explore solving the section 3 assignment by writing a function that checks the first vector value, uses vec!, and explains ownership, mutability, and the copy trait in Rust.
Explore the three types of strokes, led by the named field stroke, and examine lifetimes—what they are, why they exist, and their evolving history in this Rust course.
Learn how Rust structs organize data by named fields, tuple-like, and unit-like forms, and access them with dot notation. Build and initialize structs like user, auto-map fields, and print values.
Implement methods on a struct using self to compute area and access or mutate width. Explore mutable self and mutable references, then preview lifetimes in Rust.
Explore Rust lifetimes to prevent dangling references by learning how references carry lifetimes, how lifetime annotations describe relationships without changing lifetimes, and how return types must align with input lifetimes.
Explore how lifetimes in structs require a lifetime annotation for each reference, preventing dangling references by ensuring a text field's string slice cannot outlive its string.
Explore static lifetimes and how references can live for the program's duration, noting that string literals have a static lifetime stored in the binary and minimize dangling references with fixes.
Learn to define a car struct with miles per gallon, color, and top speed, implement setters for each field, and print a configured car with default values and updates.
Explore how enemies define a type with variants and how patterns let you execute code based on specific logic using pattern matching.
Learn how to define and use enums in Rust, implement methods, match on self, and attach data or structs to variants, including ip address kinds and lifetime considerations.
Understand how the option enum represents a value or none using a generic type T, with some and none variants. Learn to use match to handle some and none cases.
Learn how Rust's match statement exhaustively compares values against patterns, handles options with Some and None, and uses catch-all underscores for unseen cases.
Learn how if let simplifies single-pattern matches, illustrated with dog versus not dog, then extend with elseif, and implement stacks using while loops and vector pops.
Explore advanced pattern matching in rust by using or-patterns, inclusive and exclusive ranges, and if-guards within match arms, highlighting idioms and preparing for generics.
Defines a Shape enum with Triangle, Square, Pentagon, and Octagon, implements a corners method using match to return the corresponding number of corners, and prints the results.
Explore generics and traits in Rust, using generics as stand-in types for concrete types and traits to represent capabilities implemented across many types.
Learn how generics let code operate on different types via a point struct using type T for X and Y, and add a second generic U to mix types.
Explore how a trait represents a capability and enables shared behavior across types, then implement an overview trait for multiple courses with a default method.
Explore passing traits as parameters in Rust, using the overview trait across different types, with generic bounds and multiple trait bounds to express complex trait relationships.
Explore utility traits from the standard library, starting with the drop trait, which frees resources when values go out of scope and lets you observe resource cleanup.
Explore Rust's clone trait, which creates independent copies using self, and learn that cloning can be expensive when copying owned data, such as a vector of strings.
Explore when a type can implement shallow byte-for-byte copy in Rust, including i32 as a copy type, and learn to derive or implement copy and clone for structs with tradeoffs.
Examine from and into traits for converting values between types in Rust, including from and try into, with note of potential truncation from 64-bit to 32-bit and error handling.
learn to implement operator overloading in Rust by defining the add trait for a generic point type, restricting T with Add, and printing results with the Debug formatter.
implement a properties trait for car and motorcycle with color and top speed setters and print results. demonstrate a generic print function using a debug type to print various values.
Organize Rust code with packages, crates, modules, and paths, and learn how cargo builds, tests, and shares crates. Discover crate roots for binary and library crates via src and cargo.toml.
Master cargo driven rust project structure by using crates and modules, define libraries with mod, expose items via pub and pub crate, and organize with use for nested modules.
Explore the rough standard library's common collections, focusing on vectors as the familiar starting point for storing data and memory.
Explore vector operations in rust by creating a mutable nums vector, pushing and popping (Option<T>), accessing first and last, length and is_empty, and using insert, remove, sort, reverse, and shuffle.
Discover how a binary heap keeps the greatest value at the front and use push, pop, and peak to manage priorities.
Explore maps in rust by creating and manipulating hash maps and BTreeMaps, including inserting key-value pairs, checking keys with contains_key, retrieving values, updating entries, and removing or clearing data.
Learn to use Rust hash sets to store unique values, check membership, and print contents with iterators, then perform intersection, union, and difference across two sets.
Explore how air handling is addressed in Rust, acknowledging that errors will occur and outlining strategies to reduce bugs.
Explore how Rust handles errors with recoverable and unrecoverable errors, focusing on the panic macro, thread termination, and unwinding versus abort, plus using backtrace for debugging.
Learn how the result type, an enum with Ok and Err variants, lets you handle file open failures without stopping the program and how to capture these errors.
Learn to handle file errors in Rust with match on Result and error kinds, creating files on not found, then use unwrap and expect for clearer error messages.
Learn how to propagate errors in Rust using the question mark operator, returning a result to the call stack and simplifying error handling.
Explore how testing in Rust helps catch bugs and ensure code remains stable as you extend functionality. Learn simple, practical testing techniques.
This lecture introduces rust test setup with cfg test, a test module, function using assert equals and panic to show failures; run cargo test to observe passing and failing tests.
Explore rust testing with assert equals and assert, use ignore and should panic, and learn to run cargo test with subsets and parallel threads.
Welcome to the biggest and most comprehensive Rust programming language course on Udemy!
With 17.5 hours of content already, this hands-on practical course is frequently updated to make sure you master all the skills you need to become a Rust expert in the quickest, clearest manner possible.
Stuffed full with practical challenges and exercises, the first half of the course introduces you to the basics of Rust and getting you comfortable and confident with Rust. The second half of the course focuses on data structures and algorithms, looking at which data structures you can use, as well as how to use them! You'll also learn to analyse algorithms for space and time resource consumption... and a lot more!
Why learn Rust?
Rust is the most loved programming language by developers over the past few years according to numerous developer surveys. The Rust programming language is a highly sought after skill and is also one of the best paying skills in the industry.
In the US, Rust developers earn an average of 140k - 250k USD per annum (2022).
What do YOU want to do with Rust?! Developers can (and do!) use Rust to build game engines, file systems, websites and tools, operating systems, browser components, and a whole lot more.
Rust does not sacrifice speed for memory management like many languages do, but Rust ensures memory safety unlike languages like C/C++. Rust's compiler is going to handle a lot of the checking for you to ensure there are no undefined behaviors, dangling pointers, double-frees, etc.
Why THIS course?
This is a fast paced course that is designed to give you everything you need to learn in a clear, but very concise manner. There is no fluff involved. I want to give you the skills you need as quickly as possible to allow you to immediately begin developing high quality software using Rust.
As well as practical projects, nearly every section of the course has a dedicated student assignment to complete! Each assignments tests your new skills and helps give you the confidence to tackle your own projects going forward!
In this course I will cover:
Common programming concepts (fundamental types, functions, control flow)
Ownership and moves
References
Structs
Enums and Patterns
Error Handling
Crates and Modules
Traits and Generics
Iterators
Collections
Concurrency
Webassembly
And much, much more!
By the end of this course you will have started at the basics of programming and journeyed all the way to becoming an expert in Rust!
What are you waiting for? Dive in to Rust today!