Skip to content

[Rust Practice Labs] This repository collects 231 of programming scenarios (labs and challenges) for Rust Practice Labs. It offers comprehensive courses and hands-on labs tailored for learners of all levels, from students to professionals and enthusiasts.

Notifications You must be signed in to change notification settings

labex-labs/rust-practice-labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 

Repository files navigation

Rust Practice Labs

Rust Practice Labs

This course contains lots of labs for Rust, each lab is a small Rust project with detailed guidance and solutions. You can practice your Rust skills by completing these labs, improve your coding skills, and learn how to write clean and efficient code.

Rust

Scenarios

Index Name Difficulty Practice
001 πŸ“– Defining Modules to Control Scope and Privacy β˜…β˜†β˜† Start Lab
002 πŸ“– Refutability in Rust Pattern Matching β˜…β˜†β˜† Start Lab
003 πŸ“– Rust Metaprogramming with Macros β˜…β˜†β˜† Start Lab
004 πŸ“– Rust Playground Exploration with mdbook β˜…β˜†β˜† Start Lab
005 πŸ“– Disabling Rust Unused Code Warnings β˜…β˜†β˜† Start Lab
006 πŸ“– Conditional Rust Function Compilation β˜…β˜†β˜† Start Lab
007 πŸ“– Lifetime Concepts in Rust Programming β˜…β˜†β˜† Start Lab
008 πŸ“– Domain Specific Languages β˜…β˜†β˜† Start Lab
009 πŸ“– Variadic Interfaces in Rust Programming β˜…β˜†β˜† Start Lab
010 πŸ“– Rust Namespacing with use Declaration β˜…β˜†β˜† Start Lab
011 πŸ“– Rust Variable Binding Declaration β˜…β˜†β˜† Start Lab
012 πŸ“– Rust Programming Fundamentals: Variable Bindings a... β˜…β˜†β˜† Start Lab
013 πŸ“– Mutable Variable Bindings in Rust β˜…β˜†β˜† Start Lab
014 πŸ“– Immutable Data Binding in Rust β˜…β˜†β˜† Start Lab
015 πŸ“– Returning From Loops β˜…β˜†β˜† Start Lab
016 πŸ“– An Example Program Using Structs β˜…β˜†β˜† Start Lab
017 πŸ“– Controlling How Tests Are Run β˜…β˜†β˜† Start Lab
018 πŸ“– Rust Borrow Checker Lifetime Elision β˜…β˜†β˜† Start Lab
019 πŸ“– Rust Variable Bindings and Type Inference β˜…β˜†β˜† Start Lab
020 πŸ“– Nesting and Labels β˜…β˜†β˜† Start Lab
021 πŸ“– Rust FizzBuzz Loop Programming β˜…β˜†β˜† Start Lab
022 πŸ“– Concise Control Flow With if Let β˜…β˜†β˜† Start Lab
023 πŸ“– Rust Constants Exploration β˜…β˜†β˜† Start Lab
024 πŸ“– Creating a Library β˜…β˜†β˜† Start Lab
025 πŸ“– Mastering Macro Repetition in Rust β˜…β˜†β˜† Start Lab
026 πŸ“– Exploring Rust Infinite Loops β˜…β˜†β˜† Start Lab
027 πŸ“– Rust Literals and Type Specification β˜…β˜†β˜† Start Lab
028 πŸ“– Rust Mutability Ownership Demonstration β˜…β˜†β˜† Start Lab
029 πŸ“– Overloading Rust Macros with macro_rules! β˜…β˜†β˜† Start Lab
030 πŸ“– Unrecoverable Errors With Panic β˜…β˜†β˜† Start Lab
031 πŸ“– Destructuring and Dereferencing in Rust β˜…β˜†β˜† Start Lab
032 πŸ“– Exploring Cargo Workspaces in Rust β˜…β˜†β˜† Start Lab
033 πŸ“– Lifetime Management in Rust Structs β˜…β˜†β˜† Start Lab
034 πŸ“– Lifetime Annotation in Rust Traits β˜…β˜†β˜† Start Lab
035 πŸ“– Abort and Unwind β˜…β˜†β˜† Start Lab
036 πŸ“– Cargo Attributes in Rust Development β˜…β˜†β˜† Start Lab
037 πŸ“– Conditional Compilation with Rust's cfg Attribute β˜…β˜†β˜† Start Lab
038 πŸ“– Scope and Shadowing β˜…β˜†β˜† Start Lab
039 πŸ“– Destructuring Tuples in Rust β˜…β˜†β˜† Start Lab
040 πŸ“– Reading a File β˜…β˜†β˜† Start Lab
041 πŸ“– What Is Ownership? β˜…β˜†β˜† Start Lab
042 πŸ“– The Slice Type β˜…β˜†β˜† Start Lab
043 πŸ“– Printable Types in Rust's Standard Library β˜…β˜†β˜† Start Lab
044 πŸ“– Waiting for Child Process Completion β˜…β˜†β˜† Start Lab
045 πŸ“– Destructuring Rust Structs with Pattern Matching β˜…β˜†β˜† Start Lab
046 πŸ“– Validating References With Lifetimes β˜…β˜†β˜† Start Lab
047 πŸ“– Rust Enum Usage Examples β˜…β˜†β˜† Start Lab
048 πŸ“– Rust Lifetime Annotations Borrow Checker β˜…β˜†β˜† Start Lab
049 πŸ“– Rust Lifetime Coercion Exploration β˜…β˜†β˜† Start Lab
050 πŸ“– Rust Primitive Types Exploration β˜…β˜†β˜† Start Lab
051 πŸ“– Rust Lifetime and Trait Bounds β˜…β˜†β˜† Start Lab
052 πŸ“– Rust Closures with Generic Constraints β˜…β˜†β˜† Start Lab
053 πŸ“– Rust Multiple Bounds Exploration β˜…β˜†β˜† Start Lab
054 πŸ“– Shared-State Concurrency in Rust β˜…β˜†β˜† Start Lab
055 πŸ“– Defining and Instantiating Structs β˜…β˜†β˜† Start Lab
056 πŸ“– Documenting Rust Projects with Markdown β˜…β˜†β˜† Start Lab
057 πŸ“– Cargo Dependency Management in Rust β˜…β˜†β˜† Start Lab
058 πŸ“– Publishing a Crate to Crates.io β˜…β˜†β˜† Start Lab
059 πŸ“– Mutable Borrowing in Rust Book β˜…β˜†β˜† Start Lab
060 πŸ“– Customizing Rust Struct Output with fmt::Display β˜…β˜†β˜† Start Lab
061 πŸ“– Destructuring Arrays and Slices in Rust β˜…β˜†β˜† Start Lab
062 πŸ“– As Output Parameters β˜…β˜†β˜† Start Lab
063 πŸ“– Spawning Native Threads in Rust β˜…β˜†β˜† Start Lab
064 πŸ“– Rust Enum Destructuring and Usage β˜…β˜†β˜† Start Lab
065 πŸ“– Rust Comment Types and Documentation β˜…β˜†β˜† Start Lab
066 πŸ“– Mastering Rust Loops and Ranges β˜…β˜†β˜† Start Lab
067 πŸ“– The Ref Pattern β˜…β˜†β˜† Start Lab
068 πŸ“– Aliases for Result β˜…β˜†β˜† Start Lab
069 πŸ“– Exploring Rust's Functional Capabilities β˜…β˜†β˜† Start Lab
070 πŸ“– Handling Errors with Early Returns in Rust β˜…β˜†β˜† Start Lab
071 πŸ“– References and Borrowing β˜…β˜†β˜† Start Lab
072 πŸ“– Rust Panic Handling Example β˜…β˜†β˜† Start Lab
073 πŸ“– Rust Module Visibility Exploration β˜…β˜†β˜† Start Lab
074 πŸ“– Multiple Error Types β˜…β˜†β˜† Start Lab
075 πŸ“– Bringing Paths Into Scope With Use Keyword β˜…β˜†β˜† Start Lab
076 πŸ“– Rust Aliasing: Enhancing Code Readability β˜…β˜†β˜† Start Lab
077 πŸ“– Exploring Rust Closures and Environment Capture β˜…β˜†β˜† Start Lab
078 πŸ“– Option & Unwrap β˜…β˜†β˜† Start Lab
079 πŸ“– Executing Child Processes in Rust β˜…β˜†β˜† Start Lab
080 πŸ“– Rust Aliasing Concept Exploration β˜…β˜†β˜† Start Lab
081 πŸ“– Using Threads to Run Code Simultaneously β˜…β˜†β˜† Start Lab
082 πŸ“– Rust Trait Inheritance and Composition β˜…β˜†β˜† Start Lab
083 πŸ“– Chainable Option Handling with and_then() β˜…β˜†β˜† Start Lab
084 πŸ“– Closures as Function Parameters β˜…β˜†β˜† Start Lab
085 πŸ“– Exploring Rust's Result Type β˜…β˜†β˜† Start Lab
086 πŸ“– The Use Declaration β˜…β˜†β˜† Start Lab
087 πŸ“– Accepting Command Line Arguments β˜…β˜†β˜† Start Lab
088 πŸ“– Rust Error Messages to Standard Error β˜…β˜†β˜† Start Lab
089 πŸ“– Exploring Rust's Reference Counting Mechanism β˜…β˜†β˜† Start Lab
090 πŸ“– Accessing Command Line Arguments in Rust β˜…β˜†β˜† Start Lab
091 πŸ“– Rust Pattern Syntax Practice β˜…β˜†β˜† Start Lab
092 πŸ“– Exploring Rust Struct Types and Applications β˜…β˜†β˜† Start Lab
093 πŸ“– New Type Idiom β˜…β˜†β˜† Start Lab
094 πŸ“– Packages and Crates β˜…β˜†β˜† Start Lab
095 πŸ“– Cargo Documentation Generation and Testing β˜…β˜†β˜† Start Lab
096 πŸ“– The Match Control Flow Construct β˜…β˜†β˜† Start Lab
097 πŸ“– Storing Key-Value Pairs with Rust Hash Maps β˜…β˜†β˜† Start Lab
098 πŸ“– Using Box for Heap Data β˜…β˜†β˜† Start Lab
099 πŸ“– Rc, the Reference Counted Smart Pointer β˜…β˜†β˜† Start Lab
100 πŸ“– Advanced Functions and Closures β˜…β˜†β˜† Start Lab
101 πŸ“– Cloning Rust Structs with Clone Trait β˜…β˜†β˜† Start Lab
102 πŸ“– Separating Modules Into Different Files β˜…β˜†β˜† Start Lab
103 πŸ“– Exploring Rust Tuples and Transposing Matrices β˜…β˜†β˜† Start Lab
104 πŸ“– Modular Rust File Organization β˜…β˜†β˜† Start Lab
105 πŸ“– Rust Function Signatures with Lifetimes β˜…β˜†β˜† Start Lab
106 πŸ“– Exploring Rust's Unsafe Operations β˜…β˜†β˜† Start Lab
107 πŸ“– Using a Library β˜…β˜†β˜† Start Lab
108 πŸ“– Treating Smart Pointers Like Regular References β˜…β˜†β˜† Start Lab
109 πŸ“– Factoring Out Repetition with Rust Macros β˜…β˜†β˜† Start Lab
110 πŸ“– Rust Method Syntax Practice β˜…β˜†β˜† Start Lab
111 πŸ“– Rust Macros Designators Introduction β˜…β˜†β˜† Start Lab
112 πŸ“– Binding and Destructuring in Rust β˜…β˜†β˜† Start Lab
113 πŸ“– Alternate/Custom Key Types β˜…β˜†β˜† Start Lab
114 πŸ“– To and From Strings β˜…β˜†β˜† Start Lab
115 πŸ“– Rust Pattern Matching Exploration β˜…β˜†β˜† Start Lab
116 πŸ“– Super and Self β˜…β˜†β˜† Start Lab
117 πŸ“– Rust Software Testing Fundamentals β˜…β˜†β˜† Start Lab
118 πŸ“– Literals and Operators β˜…β˜†β˜† Start Lab
119 πŸ“– Iterating Over Results β˜…β˜†β˜† Start Lab
120 πŸ“– Formatted Print in Rust β˜…β˜†β˜† Start Lab
121 πŸ“– Storing Lists of Values With Vectors β˜…β˜†β˜† Start Lab
122 πŸ“– Rust Error Handling with Question Mark β˜…β˜†β˜† Start Lab
123 πŸ“– Rust Library Functionality with Test-Driven Develo... β˜…β˜†β˜† Start Lab
124 πŸ“– Efficient File Reading in Rust β˜…β˜†β˜† Start Lab
125 πŸ“– Map for Result β˜…β˜†β˜† Start Lab
126 πŸ“– Building a Single-Threaded Web Server β˜…β˜†β˜† Start Lab
127 πŸ“– Rust Borrowing Ownership Fundamentals β˜…β˜†β˜† Start Lab
128 πŸ“– Concise Rust Pattern Matching with Let-Else β˜…β˜†β˜† Start Lab
129 πŸ“– Exploring Rust Traits for Customized Methods β˜…β˜†β˜† Start Lab
130 πŸ“– Rust Type Inference Advanced Example β˜…β˜†β˜† Start Lab
131 πŸ“– Concurrent Data Transfer with Rust Channels β˜…β˜†β˜† Start Lab
132 πŸ“– Paths in Rust Module Tree β˜…β˜†β˜† Start Lab
133 πŸ“– Shared Ownership with Rust Arc β˜…β˜†β˜† Start Lab
134 πŸ“– Storing UTF-8 Encoded Text With Strings β˜…β˜†β˜† Start Lab
135 πŸ“– Rust Book Lab: Unit and Integration Tests β˜…β˜†β˜† Start Lab
136 πŸ“– Writing Rust Functions β˜…β˜†β˜† Start Lab
137 πŸ“– Filesystem Operations in Rust β˜…β˜†β˜† Start Lab
138 πŸ“– Concise Rust Option Iteration with While Let β˜…β˜†β˜† Start Lab
139 πŸ“– Pulling Results Out of Options β˜…β˜†β˜† Start Lab
140 πŸ“– Exploring Rust HashSet Operations β˜…β˜†β˜† Start Lab
141 πŸ“– Command-Line Argument Parsing in Rust β˜…β˜†β˜† Start Lab
142 πŸ“– Defining Generic Functions in Rust β˜…β˜†β˜† Start Lab
143 πŸ“– Mastering Conditional Statements in Rust β˜…β˜†β˜† Start Lab
144 πŸ“– Exploring Rust Generics Functionality β˜…β˜†β˜† Start Lab
145 πŸ“– Rust Raw Identifiers Introduction β˜…β˜†β˜† Start Lab
146 πŸ“– Phantom Type Parameters β˜…β˜†β˜† Start Lab
147 πŸ“– Recoverable Errors With Result β˜…β˜†β˜† Start Lab
148 πŸ“– Rust Method Usage Demonstration β˜…β˜†β˜† Start Lab
149 πŸ“– Exploring Rust's Immutable Path Struct β˜…β˜†β˜† Start Lab
150 πŸ“– To Panic or Not to Panic β˜…β˜†β˜† Start Lab
151 πŸ“– How to Write Tests β˜…β˜†β˜† Start Lab
152 πŸ“– Implement Generic Double Deallocation Trait β˜…β˜†β˜† Start Lab
153 πŸ“– Exploring Rust's Drop Trait β˜…β˜†β˜† Start Lab
154 πŸ“– Rust Operator Simplifies Error Handling β˜…β˜†β˜† Start Lab
155 πŸ“– Diverging Functions in Rust β˜…β˜†β˜† Start Lab
156 πŸ“– Visibility of Rust Struct Fields β˜…β˜†β˜† Start Lab
157 πŸ“– Cleanup with Rust's Drop Trait β˜…β˜†β˜† Start Lab
158 πŸ“– Reference Cycles Can Leak Memory β˜…β˜†β˜† Start Lab
159 πŸ“– Implement fmt::Display for List in Rust β˜…β˜†β˜† Start Lab
160 πŸ“– TryFrom and TryInto β˜…β˜†β˜† Start Lab
161 πŸ“– Exploring Rust Iterator's Any Function β˜…β˜†β˜† Start Lab
162 πŸ“– Rust Generics Type Constraints β˜…β˜†β˜† Start Lab
163 πŸ“– Testcase: Empty Bounds β˜…β˜†β˜† Start Lab
164 πŸ“– Exploring Rust's Impl Trait Functionality β˜…β˜†β˜† Start Lab
165 πŸ“– Searching Through Iterators β˜…β˜†β˜† Start Lab
166 πŸ“– Operator Overloading in Rust β˜…β˜†β˜† Start Lab
167 πŸ“– Implementing an Object-Oriented Design Pattern β˜…β˜†β˜† Start Lab
168 πŸ“– Foreign Function Interface β˜…β˜†β˜† Start Lab
169 πŸ“– Simplifying Rust Option Handling with Map β˜…β˜†β˜† Start Lab
170 πŸ“– Rust Integration Testing Fundamentals β˜…β˜†β˜† Start Lab
171 πŸ“– Handling Errors with Box in Rust β˜…β˜†β˜† Start Lab
172 πŸ“– From and Into β˜…β˜†β˜† Start Lab
173 πŸ“– Mastering Rust Vectors: Resizable Array Essentials β˜…β˜†β˜† Start Lab
174 πŸ“– Exploring Rust Closures and Capturing Behavior β˜…β˜†β˜† Start Lab
175 πŸ“– Rust Formatting and Display Trait β˜…β˜†β˜† Start Lab
176 πŸ“– Exploring Rust's Result Enum β˜…β˜†β˜† Start Lab
177 πŸ“– Ownership and Moves β˜…β˜†β˜† Start Lab
178 πŸ“– Rust Option Enum Handling Failure β˜…β˜†β˜† Start Lab
179 πŸ“– Reading Files in Rust β˜…β˜†β˜† Start Lab
180 πŸ“– Create File with Rust Standard Library β˜…β˜†β˜† Start Lab
181 πŸ“– Child Process Interaction with Pipes β˜…β˜†β˜† Start Lab
182 πŸ“– Rust Panic Handling and Memory Safety β˜…β˜†β˜† Start Lab
183 πŸ“– Testcase: Unit Clarification β˜…β˜†β˜† Start Lab
184 πŸ“– Closures: Anonymous Functions That Capture Their E... β˜…β˜†β˜† Start Lab
185 πŸ“– Arrays and Slices β˜…β˜†β˜† Start Lab
186 πŸ“– Unpacking Options and Defaults β˜…β˜†β˜† Start Lab
187 πŸ“– Disambiguating Overlapping Traits β˜…β˜†β˜† Start Lab
188 πŸ“– Parallel Data Processing in Rust β˜…β˜†β˜† Start Lab
189 πŸ“– Generic Container Trait Implementation β˜…β˜†β˜† Start Lab
190 πŸ“– Working With Environment Variables β˜…β˜†β˜† Start Lab
191 πŸ“– Returning Traits With Dyn β˜…β˜†β˜† Start Lab
192 πŸ“– Exploring Rust's Powerful if let Construct β˜…β˜†β˜† Start Lab
193 πŸ“– Partial Move Destructuring in Rust β˜…β˜†β˜† Start Lab
194 πŸ“– Rust Unit Testing Fundamentals β˜…β˜†β˜† Start Lab
195 πŸ“– Using Rust Match Guards β˜…β˜†β˜† Start Lab
196 πŸ“– Trait Objects for Heterogeneous Values β˜…β˜†β˜† Start Lab
197 πŸ“– Processing a Series of Items With Iterators β˜…β˜†β˜† Start Lab
198 πŸ“– Derive Traits in Rust Tuple Structs β˜…β˜†β˜† Start Lab
199 πŸ“– Defining an Enum β˜…β˜†β˜† Start Lab
200 πŸ“– Defining an Error Type β˜…β˜†β˜† Start Lab
201 πŸ“– All the Places Patterns Can Be Used β˜…β˜†β˜† Start Lab
202 πŸ“– Exploring Rust's Associated Types β˜…β˜†β˜† Start Lab
203 πŸ“– Implementing Generic Types in Rust β˜…β˜†β˜† Start Lab
204 πŸ“– Rust Casting: Explicit Type Conversion β˜…β˜†β˜† Start Lab
205 πŸ“– Associated Functions & Methods β˜…β˜†β˜† Start Lab
206 πŸ“– Rust RAII Resource Management β˜…β˜†β˜† Start Lab
207 πŸ“– Characteristics of Object-Oriented Languages β˜…β˜†β˜† Start Lab
208 πŸ“– Exploring Rust's Static Concept β˜…β˜†β˜† Start Lab
209 πŸ“– Refactoring to Improve Modularity and Error Handli... β˜…β˜†β˜† Start Lab
210 πŸ“– Implementing Iterators in Rust β˜…β˜†β˜† Start Lab
211 πŸ“– Advanced Rust Traits Exploration β˜…β˜†β˜† Start Lab
212 πŸ“– Other Uses of ? β˜…β˜†β˜† Start Lab
213 πŸ“– Wrapping Errors with Custom Type β˜…β˜†β˜† Start Lab
214 πŸ“– Exploring Rust String Concepts β˜…β˜†β˜† Start Lab
215 πŸ“– As Input Parameters β˜…β˜†β˜† Start Lab
216 πŸ“– Improving Our I/O Project β˜…β˜†β˜† Start Lab
217 πŸ“– Traits: Defining Shared Behavior β˜…β˜†β˜† Start Lab
218 πŸ“– Exploring Unsafe Rust Superpowers β˜…β˜†β˜† Start Lab
219 πŸ“– Rust HashMap Data Storage Tutorial β˜…β˜†β˜† Start Lab
220 πŸ“– Expressive Rust Generics with Where Clause β˜…β˜†β˜† Start Lab
221 πŸ“– Unpacking Options With ? β˜…β˜†β˜† Start Lab
222 πŸ“– Removing Duplication by Extracting a Function β˜…β˜†β˜† Start Lab
223 πŸ“– Advanced Rust Types Practice β˜…β˜†β˜† Start Lab
224 πŸ“– Rust Enum Concepts and Type Aliases β˜…β˜†β˜† Start Lab
225 πŸ“– Rust Linked List Implementation β˜…β˜†β˜† Start Lab
226 πŸ“– Rust Asynchronous Channels Communication β˜…β˜†β˜† Start Lab
227 πŸ“– Exploring Rust Inline Assembly Usage β˜…β˜†β˜† Start Lab
228 πŸ“– Rust Multithreaded Server Development β˜…β˜†β˜† Start Lab
229 πŸ“– Rust Macros Exploration in LabEx β˜…β˜†β˜† Start Lab
230 πŸ“– Graceful Shutdown and Cleanup β˜…β˜†β˜† Start Lab
231 πŸ“– RefCell and the Interior Mutability Pattern β˜…β˜†β˜† Start Lab

More

About

[Rust Practice Labs] This repository collects 231 of programming scenarios (labs and challenges) for Rust Practice Labs. It offers comprehensive courses and hands-on labs tailored for learners of all levels, from students to professionals and enthusiasts.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published