rust-by-practice README

The project's README from github.com/origin-brain/rust-by-practice. As one markdown file: README.md.

origin-bi%2Frust-by-practice | Trendshift

Practice Rust with challenging examples, exercises and projects

This book was designed for easily diving into and getting skilled with Rust It's very easy to use. All you need to do is to make each exercise compile without ERRORS and Panics!

Reading online

Features

Part of our examples and exercises are borrowed from Rust By Example, thanks for your great works!

Although they are so awesome, we have our own secret weapons :)

What we want to do is fill in the gap between learning and getting started with real projects.

Running locally

We use mdbook building our exercises. You can run locally with below steps:

$ git clone https://github.com/sunface/rust-by-practice
$ cargo install mdbook
$ cd rust-by-practice && mdbook serve en/
$ cd rust-by-practice && mdbook serve zh-CN/

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.


// fix the error and fill the blanks
struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
fn main() {
    let v = Point(___, ___, ___);
    check_color(v);
}

fn check_color(p: Color) {
    let (x, _, _) = p;
    assert_eq!(x, 0);
    assert_eq!(p.1, 127);
    assert_eq!(___, 255);
 }

🌟🌟 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.


// fix errors to make it work
#[derive(Debug)]
struct File {
    name: String,
    data: String,
}
fn main() {
    let f = File {
        name: String::from("readme.md"),
        data: "Rust By Practice".to_string()
    };

    let _name = f.name;

    // 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.


// fill in the blank to make the code work, `split` MUST be used
fn main() {
    let num = Some(4);
    let split = 5;
    match num {
        Some(x) __ => assert!(x < split),
        Some(x) => assert!(x >= split),
        None => (),
    }
}

rust-by-practice (origin-brain/rust-by-practice)

Searching Database…

Что это такое?Бесплатная онлайн-книга с упражнениями, примерами и практическими заданиями по Rust, которая помогает освоиться с языком, пишя и запуская настоящий код, а не только читая теорию.
Это книга для чтения или набор упражнений для решения?И то, и другое: каждая глава состоит из трёх частей (примеры, упражнения, практические задания), а упражнения можно читать, редактировать и запускать прямо онлайн без какой-либо локальной настройки.
Как начать работать с книгой?Читайте и решайте упражнения прямо в браузере через онлайн-версию книги или клонируйте репозиторий и соберите её локально с помощью mdbook, чтобы работать без интернета.
Что нужно для локального запуска?Набор инструментов Rust Cargo, с помощью которого устанавливается mdbook — он собирает и запускает книгу с упражнениями.
Как понять, что я решил упражнение?Системы оценок нет — упражнение считается решённым, когда ваш код компилируется без ошибок и не вызывает панику.
Упражнения подходят для новичков или быстро становятся сложными?Сложность оценивается от одной звезды (легко) до четырёх звёзд (очень сложно), поэтому материал начинается мягко и постепенно переходит к задачам уровня реальных проектов почти по всему Rust: async/await, потокам, примитивам синхронизации, стандартным библиотекам и структурам данных.
Предоставляются ли решения, если я застряну?Да, к каждому упражнению прилагается собственное решение.
Чем это отличается от Rust By Example?Часть материала заимствована из Rust By Example, но этот проект добавляет полностью работающие онлайн-упражнения и практические задания, позволяя заходить глубже, чем простое чтение примеров.
Есть ли китайская версия книги?Да, инструкции по локальной сборке охватывают как английское, так и китайское издание книги.
Size
2.8 MB
Stars
14.8K
Updated
CommitAug 24
Age
8y
Commits · 90 Days