# Rust By Practice ([中文 Readme](./zh-CN/Readme.md)) - Online Reading: [https://practice.rs](https://practice.rs) Greetings Rustaceans and welcome here, if you have the following problems: - You have learned basics of Rust, and want to learn more, e.g do some exercises, but found easy ones - Practice Rust toolchains, std, ascyn/.await and more - Have no idea of what to do next, maybe you tried writing a demo /project, but... not that good or even worse: failed Maybe you have come to the right place. Here are lots of easy to hard exercises and practices to improve your Rust skills which cover almost every topic in Rust. In a word, this book will try to help you filling the gap between easy-to-learn and hard-to-use. ## How to use - You can edit exercises online and also run it online - **Your only goal is make every exercise comipile with NO ERRORS!** - difficulty level: easy: 🌟 medium: 🌟🌟 hard: 🌟🌟🌟 hell: 🌟🌟🌟🌟 ## Contributing We welcome all kinds of contributors. Every exercise you have contributed will be annotated with your github name and personal link, it's time to show yourself to the world! ## Learning Rust If you are a first-time Rust learner, here are some high quality learning resources : - [The Book](https://doc.rust-lang.org/book/index.html) for English speakers - [Rust语言圣经(The Course)](https://course.rs) for Chinese speakers, it covers nearly all the topics in Rust ## difference to rustlings [Rustlings](https://github.com/rust-lang/rustlings) only contains small and easy exercises for junior rust devs. There is a big gap between learning Rust and using it in your projects. Another limit for rustlings is that you have to download rustlings to local machine and compile it first before starting to learn. ## difference to rust by example [Rust By Example](https://doc.rust-lang.org/stable/rust-by-example/) is an excellent online book for learning Rust,`exercise.rs` has some small advantages in : - more topics and exercises,specially for the hard part of Rust,e.g string, lifetime, smart pointers, threads and async/.await etc - difficulty from easy to hard,it will minimize the gap between learning and using in projects - up-to-date, e.g features which added in Rust 1.59 also have the corresponding exercises in `practice.rs` - real practices