From 0aa06306a6e8509f3074662fad26f2c765347bc3 Mon Sep 17 00:00:00 2001 From: sunface Date: Sat, 5 Mar 2022 18:25:26 +0800 Subject: [PATCH] update why-exercise.md --- src/why-exercise.md | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/why-exercise.md b/src/why-exercise.md index 2268925..f9841be 100644 --- a/src/why-exercise.md +++ b/src/why-exercise.md @@ -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.