Как тренироваться в Rust программирование?

Совсем недавно я писал про свой опыт прочтения книги Rust в действии. В этой же заметке я хочу описать свой следующий шаг по изучению Rust.

Понятно дело, что нельзя изучать язык (будь то, язык программирования, или просто иностранный) без практики. Вы хоть 10 книг прочитайте, но пока не начнете использовать язык, вы им не овладеете. Поэтому я начал думать, что бы мне такого сделать с Растом. Подходящих задач на работе у меня пока нет, поэтому пришлось поискать какие-нибудь упражнения.

Кажется, что на сегодняшний день существует 3 популярных каталога с упражнениями:

Так как я ничего про эти каталоги не знал ранее, то решил выбрать что-то на обум, воспользовавшись критерием звездочек на гитхабе. Таки образом, я взялся за rustlings.

Удивительно, но rustlings сделан супер качественно. Я был крайне удивлен качеством материалов и общей структурой, при условии что это бесплатные материалы. По сути, это набор из 94 заданий, где вам нужно поменять 1-2 строки кода, либо написать 2-4 строки нового кода. Все упражнения работы по темам (указатели, паттерн матчинг, структуры, макросы и т.д).

Если вам нужна помощь, можно написать hint в терминале (где и запущен скрипт с упражнениями, который компилирует ваше решение, а также выполняет лайв релоадинг, чтобы вы мгновенно получали обратную связь об правельности вашего решения). В результате на запрос помощи, вам дадут или прямую подсказку, либо ссылку на официальную книжку The Book, где подробно разобрана та или иная тема.

Сколько примерно нужно времени на все упражнения? Зависит от вашей текущей базы. У меня была база — одна книжка. И я решил упражнения за пару выходных + парну будней дней. Но опять же, я прочитал довольно мало документации по тем упражнениям, что я делал, так как собираюсь прочитать The Book снуля, как один из следующих этапов изучения Раста.

В целом, мне эти упражнения понравились сильно больше, и я смело могу рекомендовать их вместе с The Book, вместо Rust In Action (если цель — изучить язык, а не стать системным программистом).

Категории: Программирование