mirror of
https://github.com/sunface/rust-by-practice.git
synced 2025-06-23 04:29:41 +00:00
update why-exercise.md
This commit is contained in:
@ -1,25 +1,35 @@
|
||||
# Rust By Practice
|
||||
This book was designed for easily diving into Rust,and it's very easy to use: All you need to do is to make each exercise compile without ERRORS and Panics !
|
||||
|
||||
|
||||
This book was designed for easily diving into Rust, and it's very easy to use: All you need to do is to make each exercise compile without ERRORS and Panics !
|
||||
|
||||
## Read online
|
||||
|
||||
- [English](https://practice.rs)
|
||||
- [简体中文](https://zh.practice.rs)
|
||||
|
||||
## Features
|
||||
|
||||
- There are three parts in each chapter: examples, exercises and practices
|
||||
|
||||
- Covering nearly all aspects of Rust, such as **async/await, threads, sync primitives, optimizing and stand libraries** etc
|
||||
|
||||
- Solution for each exercise
|
||||
|
||||
- Difficulty from easy to super hard: easy 🌟 medium 🌟🌟 hard 🌟🌟🌟 super hard 🌟🌟🌟🌟
|
||||
|
||||
- Both [English](https://practice.rs) and [Chinsese](https://zh.practice.rs) are supported
|
||||
Part of our examples and exercises are borrowed from [Rust By Example](https://github.com/rust-lang/rust-by-example), thanks for your great works!
|
||||
|
||||
> Part of our examples and exercises are borrowed from [Rust By Example](https://github.com/rust-lang/rust-by-example), thanks for the great works you have been doing!
|
||||
Although they are so awesome, we have our own secret weapons :)
|
||||
|
||||
- There are three parts in each chapter: examples, exercises and practices
|
||||
|
||||
- Besides examples, we have `a lot of exercises`, you can Read, Edit and Run them ONLINE
|
||||
|
||||
- Covering nearly all aspects of Rust, such as async/await, threads, sync primitives, optimizing and standard libraries** etc.
|
||||
|
||||
- Every exercise has its own solutions
|
||||
|
||||
- The overall difficulties are a bit higher and from easy to super hard: easy 🌟 medium 🌟🌟 hard 🌟🌟🌟 super hard 🌟🌟🌟🌟
|
||||
|
||||
**What we want to do is fill in the gap between learning and getting started with real projects.**
|
||||
|
||||
## Some of our exercises
|
||||
|
||||
🌟🌟🌟 Tuple struct looks similar to tuples, it has added meaning the struct name provides but has no named fields. It's useful when you want give the whole tuple a name, but don't care the fields's names.
|
||||
|
||||
```rust,editable
|
||||
```rust
|
||||
|
||||
// fix the error and fill the blanks
|
||||
struct Color(i32, i32, i32);
|
||||
@ -27,7 +37,7 @@ struct Point(i32, i32, i32);
|
||||
fn main() {
|
||||
let v = Point(___, ___, ___);
|
||||
check_color(v);
|
||||
}
|
||||
}
|
||||
|
||||
fn check_color(p: Color) {
|
||||
let (x, _, _) = p;
|
||||
@ -38,7 +48,7 @@ fn check_color(p: Color) {
|
||||
```
|
||||
|
||||
🌟🌟 Within the destructuring of a single variable, both by-move and by-reference pattern bindings can be used at the same time. Doing this will result in a partial move of the variable, which means that parts of the variable will be moved while other parts stay. In such a case, the parent variable cannot be used afterwards as a whole, however the parts that are only referenced (and not moved) can still be used.
|
||||
```rust,editable
|
||||
```rust
|
||||
|
||||
// fix errors to make it work
|
||||
#[derive(Debug)]
|
||||
@ -56,7 +66,7 @@ fn main() {
|
||||
|
||||
// ONLY modify this line
|
||||
println!("{}, {}, {:?}",f.name, f.data, f);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
🌟🌟 A match guard is an additional if condition specified after the pattern in a match arm that must also match, along with the pattern matching, for that arm to be chosen.
|
||||
|
Reference in New Issue
Block a user