Курс по Rust — вторият, след Go
От Dorian Chávez, основател на Hábil и архитект на интеграции. Така обучаваме тези, които изграждат системи, които не могат да се провалят.
За кого е: за някой, който вече е завършил курса по Go и иска да разбере другия край на спектъра. Rust не се учи вместо Go: учи се след него, и така се разбира какво решение е взел всеки от двата.
Първо направи курса по Go. Това не е каприз: този курс приема за известни базовите понятия — променливи, функции, struct-ове, списъци, грешки — и се занимава с това, което Rust прави различно. Да започнеш оттук би означавало да учиш две трудни неща едновременно.
От какво имаш нужда: компютър с Linux Mint и завършен курс по Go. Урок 0 инсталира Rust от нулата.
Rust пуска нова версия на всеки шест седмици. Преди всяка сесия: rustup update stable. И ако един
урок не казва за коя версия е написан, не му се доверявай: в Rust девет месеца са шест версии
разлика, а това си личи.
Ще напишеш СЪЩАТА програма
revisor отново: получава списък със услуги, пита всичките едновременно, произвежда доклад.
Да напишеш същата програма два пъти е методът. Четенето на сравнения „Go срещу Rust“ не учи на нищо; борбата със същия проблем в двата езика учи. И ще откриеш, че това, което в Go ти отне един следобед, в Rust ти отнема три — докато разбереш защо, и тогава разбираш и двете неща.
Това, което никой не ти казва и което определя този курс
Rust има различна крива, не по-дълга: различна. Синтаксисът е лесен. Трудното е
borrow checker-ът, компонентът на компилатора, който проверява кой е собственик на всяка данна.
Ето какво обикновено разказват тези, които преподават и които учат Rust, като порядък и без претенция да
е измерване:
- Borrow checker-ът обикновено става интуитивен след няколко седмици практика. Не преди. Не е, че си бавен: този мисловен модел се изгражда, като се сблъскваш.
- Много хора посвещават няколко седмици на основите, преди първия си истински проект.
- Компилаторът на Rust е най-добрият учител, който съществува. Грешките му обясняват проблема, посочват реда и предлагат поправката. В Rust се учи, като се четат грешки, а не като се избягват.
И ето най-важната разлика с курса по Go: в Go стандартната библиотека стига за почти всичко. В Rust
не: async, HTTP и сериализация живеят във външни crate-ове (tokio, reqwest, serde). Това не
е липса — това е решението стандартът да е минимален и стабилен. Но означава, че тук ще използваш
зависимости още от рано.
Деветте урока
Методът е този, който върши работа, измерено: прочиташ една глава от The Book, правиш упражненията ѝ от Rustlings и чак тогава продължаваш. Четенето на един дъх запазва много по-малко, макар да отнема същото време.
| Урок | The Book | Какво изграждаш | |
|---|---|---|---|
| 0 | Подготовка | гл. 1 | rustup, cargo и Rustlings |
| 1 | Основи | гл. 2-3 | типове, mut, контрол на потока |
| 2 | Ownership | гл. 4 | урокът, който решава всичко |
| 3 | Structs, enums и match | гл. 5-6 | моделът на revisor, с Option |
| 4 | Колекции и грешки | гл. 8-9 | Vec, HashMap, Result, ? |
| 5 | Trait-ове, generic типове и lifetime-ове | гл. 10 | trait-ът Revisor и generic типовете, и 'a, което плаши |
| 6 | Модули, тестове и cargo | гл. 7, 11, 14 | истинският проект |
| 7 | Конкурентност и async | гл. 16-17 | да проверява всичко едновременно |
| 8 | Завършената програма | гл. 12 | reqwest, serde, clap, бинарният файл |
Ownership е в урок 2 и не може да се премести. Той е глава 4 на The Book поради една причина: всичко останало — struct-ове, колекции, грешки, конкурентност — се обяснява в термините на това кой на какво е собственик. Ако го прескочиш, следващите шест седмици са запаметяване на правила без смисъл.
Трите източника и как да ги комбинираш
- The Book — официална, 21 глави. Имаш я офлайн:
rustup doc --book. За този курс: глави 1-12, 14 и 16-17. - Rustlings — 95 интерактивни упражнения, много от тях
насочени конкретно към borrow checker-а.
cargo install rustlings. Редът има значение: глава, после нейните упражнения. - Rust by Example — като бърза справка.
После, когато вече пишеш Rust, който работи: Rust for Rustaceans (Jon Gjengset) е книгата, към която се обръщат инженерите, които вече са минали този етап. Не по-рано: не върши работа като въведение.
Как да го използваш
- Най-малко 90 минути на урок. Rust изисква повече седене от Go; с 60 не стига.
- Чети грешките на компилатора цели. Не само първия ред. Rust ти казва проблема, причината и често точната поправка. Да пренебрегнеш това е да изхвърлиш най-добрия инструмент, който имаш.
cargo clippyот първия ден. Това е официалният linter и учи на идиоматичен Rust, докато работиш.programas/— всички програми от уроците, готови за компилиране и изпълнение, и пълниятrevisorс неговите тестове. Всяка се проверява автоматично при всяка промяна.bitacora.md— тук има по-голямо значение, отколкото в Go: запиши всяка борба с borrow checker-а. Когато в урок 5 ги препрочетеш, ще видиш, че първите вече ти изглеждат очевидни. Това е моментът, в който е научено.