Journey
Learn Rust
Learn the Rust programming language with a free, interactive online course. Master Rust syntax, ownership and borrowing, lifetimes, traits, and pattern matching through hands-on coding exercises and AI-assisted hints — and earn a free certificate when you finish.
16,009+ codders enrolled
- Beginner friendly
AI-assisted coding help
Hands-on interactive lessons
Audio narration on every lesson
Quizzes to test your knowledge
Free certificate of completion
Syllabus
3 sections3 projects202 lessons174 challenges1,120 quiz questions01Section 1
Fundamentals
Build a strong foundation with essential concepts and basic skillsSTART LEARNINGIntroduction
4 lessons324- 01RustChallenge
- 02Hello World!ChallengeQuizAudio
- 03CommentsQuizAudio
- 04Basic Program StructureChallengeQuizAudio
Variables Part 1
5 lessons539- 01NumbersChallengeQuizAudio
- 02CharChallengeQuizAudio
- 03 StringChallengeQuizAudio
- 04BooleanChallengeQuizAudio
- 05Mutable Variables ChallengeQuizAudio
Variables Part 2
5 lessons433- 01Type DeclarationChallengeQuizAudio
- 02Naming ConventionsQuizAudio
- 03Type InferenceChallengeQuizAudio
- 04Recap - Initialize VariablesChallenge
- 05Type CastingChallengeQuizAudio
Operators Part 1
5 lessons438- 01Arithmetic OperatorsChallengeQuizAudio
- 02Modulo OperatorChallengeQuizAudio
- 03Arithmetic ShortcutsChallengeQuizAudio
- 04Comparison OperatorsChallengeQuizAudio
- 05String ComparisonQuizAudio
Operators Part 2
4 lessons424- 01Logical Operators Part 1ChallengeQuizAudio
- 02Logical Operators Part 2ChallengeQuizAudio
- 03Recap - Simple LogicChallenge
- 04Logical Operators Part 3ChallengeQuizAudio
Decision Making
5 lessons532- 01If ExpressionsChallengeQuizAudio
- 02If-ElseChallengeQuizAudio
- 03Match StatementChallengeQuizAudio
- 04Recap - If ElseChallenge
- 05Nested If - ElseChallengeQuizAudio
Basic IO
4 lessons417- 01Printing to ConsoleChallengeQuizAudio
- 02Reading User InputChallengeQuizAudio
- 03Recap - Till 120Challenge
- 04Recap - True or FalseChallenge
Calculator App
Project4 lessons1- 01Welcome MessageChallenge
- 02Getting NumbersProject
- 03Basic OperationsProject
- 04Formatted OutputProject
Loops
8 lessons851- 01For Over SeriesChallengeQuizAudio
- 02While LoopChallengeQuizAudio
- 03BreakChallengeQuizAudio
- 04ContinueChallengeQuizAudio
- 05Nested LoopChallengeQuizAudio
- 06Loop LabelsChallengeQuizAudio
- 07Infinite LoopChallengeQuizAudio
- 08Recap - Dynamic InputChallenge
Variable Bindings
4 lessons230- 01ScopeQuizAudio
- 02Shadowing Part 1ChallengeQuizAudio
- 03Variable BindingQuizAudio
- 04Shadowing Part 2ChallengeQuizAudio
Functions
6 lessons634- 01Declaring FunctionsChallengeQuizAudio
- 02Parameters and ArgumentsChallengeQuizAudio
- 03Return ValuesChallengeQuizAudio
- 04Multiple Return ValuesChallengeQuizAudio
- 05Recap - Sigma FunctionChallenge
- 06Recap - Validation FunctionChallenge
Arrays Basics
5 lessons430- 01Declaring ArraysChallengeQuizAudio
- 02Array as ParameterQuizAudio
- 03Accessing ElementsChallengeQuizAudio
- 04Modifying ArraysChallengeQuizAudio
- 05Recap - Pretty Print ArrayChallenge
Arrays Continued
5 lessons423- 01Mutable Reference ArraysChallengeQuizAudio
- 02Array MethodsChallengeQuizAudio
- 03Recap - Product ArrayChallenge
- 04Recap - Reversed ArrayChallenge
- 05Better PrintQuizAudio
Iterating Over Arrays
4 lessons333- 01Range GuideChallengeQuizAudio
- 02Enhanced For LoopChallengeQuizAudio
- 03Borrow In LoopQuizAudio
- 04Common Array OperationsChallengeQuizAudio
String Operations
4 lessons424- 01String MethodsChallengeQuizAudio
- 02format! MacroChallengeQuizAudio
- 03String ConversionChallengeQuizAudio
- 04Recap - FormatChallenge
Final Projects
3 lessons37- 01Number PatternChallengeQuizAudio
- 02Pattern FinderChallenge
- 03Student Grade CalculatorChallenge
02Section 2
Logic & Flow
Develop problem-solving skills and create dynamic, interactive programsSTART LEARNINGAdvanced Control Flow
6 lessons640- 01The 'match' ExpressionChallengeQuizAudio
- 02Matching Multiple ValuesChallengeQuizAudio
- 03Matching RangesChallengeQuizAudio
- 04The 'if let' ExpressionChallengeQuizAudio
- 05Loops as ExpressionsChallengeQuizAudio
- 06Recap - Simple Command ParserChallenge
Introduction to Vectors
8 lessons756- 01What is a Vector?QuizAudio
- 02Creating a VectorChallengeQuizAudio
- 03Adding Elements with pushChallengeQuizAudio
- 04Accessing Vector ElementsChallengeQuizAudio
- 05Iterating Over a VectorChallengeQuizAudio
- 06Mutable IterationChallengeQuizAudio
- 07Removing ElementsChallengeQuizAudio
- 08Recap - Basic Score TrackerChallenge
Command-Line To-Do List
5 lessons5- 01Project SetupChallenge
- 02Adding a TaskChallenge
- 03Viewing All TasksChallenge
- 04Removing a TaskChallenge
- 05Final CodeChallenge
Grouping Data with Structs
7 lessons650- 01What is a Struct?QuizAudio
- 02Structs OverviewChallengeQuizAudio
- 03Accessing Struct FieldsChallengeQuizAudio
- 04Mutable StructsChallengeQuizAudio
- 05Structs as Function ParametersChallengeQuizAudio
- 06Tuple StructsChallengeQuizAudio
- 07Recap - Create a Book StructChallenge
Key-Value Pairs with Hash Maps
8 lessons653- 01What is a Hash Map?QuizAudio
- 02Creating a Hash MapQuizAudio
- 03Inserting Key-Value PairsChallengeQuizAudio
- 04Accessing ValuesChallengeQuizAudio
- 05Iterating Over a Hash MapChallengeQuizAudio
- 06Updating a ValueChallengeQuizAudio
- 07Removing a PairChallengeQuizAudio
- 08Recap - Word CounterChallenge
Handling Absence with 'Option'
7 lessons645- 01What is an 'Option'?QuizAudio
- 02Using 'match' with 'Option'ChallengeQuizAudio
- 03is_some() and is_none()ChallengeQuizAudio
- 04Unwrapping an 'Option'ChallengeQuizAudio
- 05The expectChallengeQuizAudio
- 06Providing a Default: unwrap_orChallengeQuizAudio
- 07Recap - Find an ElementChallenge
Handling Errors with 'Result'
7 lessons648- 01What is a 'Result'?QuizAudio
- 02Using 'match' with 'Result'ChallengeQuizAudio
- 03is_ok() and is_err()ChallengeQuizAudio
- 04Shortcuts: unwrap and expectChallengeQuizAudio
- 05The Question Mark Operator '?'ChallengeQuizAudio
- 06Parsing Strings to NumbersChallengeQuizAudio
- 07Recap - Safe Division FunctionChallenge
Project: Simple Item Inventory
5 lessons5- 01Project SetupChallenge
- 02Adding an ItemChallenge
- 03Checking StockChallenge
- 04Selling an ItemChallenge
- 05Putting it all togetherChallenge
String Slices and More
5 lessons432- 01String vs. &strQuizAudio
- 02Creating String SlicesChallengeQuizAudio
- 03Slices as Function ParametersChallengeQuizAudio
- 04Other SlicesChallengeQuizAudio
- 05Recap - Find First WordChallenge
Closures & Anonymous Functions
5 lessons431- 01What is a Closure?QuizAudio
- 02Defining a Simple ClosureChallengeQuizAudio
- 03Closures with ParametersChallengeQuizAudio
- 04Capturing the EnvironmentChallengeQuizAudio
- 05Recap - Simple Adder ClosureChallenge
Final Challenges
3 lessons3- 01Recap - Unique ItemsChallenge
- 02Recap - User Profile ValidatorChallenge
- 03Recap - Grade SummarizerChallenge
03Section 3
Object Oriented Programming
Discover how to organize code with classes, objects, and reusable structuresSTART LEARNINGMethods and Behavior
7 lessons748- 01Intro Implementation BlocksChallengeQuiz
- 02The Self ParameterChallengeQuiz
- 03Mutable MethodsChallengeQuiz
- 04Associated FunctionsChallengeQuiz
- 05Multiple Implementation BlocksChallengeQuiz
- 06Method ChainingChallengeQuiz
- 07Recap - Rectangle ActionsChallenge
Encapsulation and Modules
6 lessons543- 01Modules BasicsQuiz
- 02The Public KeywordChallengeQuiz
- 03Private FieldsChallengeQuiz
- 04GettersChallengeQuiz
- 05SettersChallengeQuiz
- 06Recap - Secure LockerChallenge
Advanced Enums
5 lessons535- 01Enums with DataChallengeQuiz
- 02Methods on EnumsChallengeQuiz
- 03Matching Data VariantsChallengeQuiz
- 04The Option Enum RevisitedChallengeQuiz
- 05Recap - Shape EnumChallenge
Project: Virtual Pet
Project5 lessons1- 01Defining the PetChallenge
- 02Feeding the PetProject
- 03Playing with the PetProject
- 04Status ReportProject
- 05Final InteractionProject
Generics
5 lessons533- 01Generic StructsChallengeQuiz
- 02Generic MethodsChallengeQuiz
- 03Multiple Generic TypesChallengeQuiz
- 04Generic FunctionsChallengeQuiz
- 05Recap - Coordinate PointChallenge
Traits Definition
6 lessons641- 01What is a Trait?ChallengeQuiz
- 02Implementing TraitsChallengeQuiz
- 03Default ImplementationsChallengeQuiz
- 04Overriding DefaultsChallengeQuiz
- 05Traits with ParametersChallengeQuiz
- 06Recap - Media PlayerChallenge
Standard Traits
5 lessons536- 01The Debug TraitChallengeQuiz
- 02The Display TraitChallengeQuiz
- 03Clone and CopyChallengeQuiz
- 04Equality TraitsChallengeQuiz
- 05Recap - Printable PointChallenge
Traits as Bounds
5 lessons534- 01Trait Bounds SyntaxChallengeQuiz
- 02Multiple BoundsChallengeQuiz
- 03The Where ClauseChallengeQuiz
- 04Returning Types with TraitsChallengeQuiz
- 05Recap - Generic PrinterChallenge
Trait Objects
4 lessons425- 01Dynamic DispatchChallengeQuiz
- 02Vectors of TraitsChallengeQuiz
- 03Iterating Trait ObjectsChallengeQuiz
- 04Recap - Zoo ManagerChallenge
Project: Document System
Project5 lessons1- 01The Draw TraitChallenge
- 02Text ComponentProject
- 03Button ComponentProject
- 04The Screen StructProject
- 05Running the ScreenProject
Design Patterns in Rust
5 lessons531- 01Newtype PatternChallengeQuiz
- 02CompositionChallengeQuiz
- 03The Drop TraitChallengeQuiz
- 04From and IntoChallengeQuiz
- 05Recap - Smart Pointer MockChallenge
Final Challenges
3 lessons3- 01Generic StackChallenge
- 02Library CatalogChallenge
- 03Shape Area CalculatorChallenge
Why learn Rust with Coddy
- Write and run real Rust code in your browser — no rustup install, no Cargo setup. Each lesson compiles your Rust program server-side and shows the output (and any compiler errors) instantly.
- Coverage of what makes Rust unique: ownership, borrowing, lifetimes, traits, enums and pattern matching, error handling with
Result— the Rust foundations every systems programmer needs. - AI-assisted hints walk you through Rust's famously strict compiler errors, so the borrow checker becomes a teacher instead of a wall when you're getting started.
- Free Rust certificate when you finish the course — a credible signal for systems, infrastructure, blockchain, and embedded roles where Rust is increasingly the language of choice.
Frequently asked questions about learning Rust
Is Rust hard to learn?
Rust has a reputation for being hard, mostly because of ownership and the borrow checker — concepts most other languages don't expose. The flip side is that the compiler catches a huge class of bugs at build time. Coddy's course introduces ownership and borrowing gradually, with small exercises that turn the borrow checker from a wall into a teacher.
What is Rust used for?
Rust is widely used for systems programming, infrastructure (parts of the Linux kernel, Cloudflare, Discord, Dropbox), command-line tooling, embedded work, WebAssembly, and a growing chunk of blockchain and crypto code. It targets the same niches as C and C++ but with much stronger safety guarantees.
How long does it take to learn Rust?
Rust basics — syntax, control flow, functions, structs, enums — take two to four weeks of daily practice. Becoming comfortable with ownership, borrowing, lifetimes, and traits usually takes another two to six months. Mastery (advanced lifetimes, async, unsafe Rust) is a longer arc and best driven by real projects.
Should I learn Rust or Go?
Both are modern, statically-typed languages aimed at servers and infrastructure, but they trade off differently. Go optimizes for fast compile times, simple concurrency, and small spec — easier to pick up. Rust optimizes for performance and memory safety without a garbage collector — harder to learn but goes lower-level. Pick Go for backends and cloud tooling; pick Rust for systems work, performance-critical code, or anything that used to be C/C++.
Can I learn Rust online for free?
Yes. Coddy's interactive Rust course is free — full lessons, coding exercises, quizzes, and a certificate. Rust compiles server-side, so you don't need to install rustup or Cargo locally to get started writing real Rust.
Do I get a certificate after the Rust course?
Yes — when you finish Coddy's Rust course you receive a free certificate of completion. It's a verifiable signal you can add to your resume or share on LinkedIn alongside any Rust projects, CLI tools, or open-source contributions you've built.