Чему вы научитесь
- читать любую ошибку владения по трём точкам: где начался заём, где он мешает и где ссылкой пользуются потом
- чинить ошибки владения тремя способами и выбирать, какой к месту
- объяснять, что лежит на стеке и в куче и что именно копирует move
- предсказывать порядок уничтожения значений и проверять себя выводом
- понимать, почему NLL пропускает один код и отвергает похожий, и обходить «проблемный случай №3»
- доставать значения из-под &mut через mem::take, replace и swap и брать две &mut из одного вектора
- разбираться, кто чем владеет в циклах, match, замыканиях и итераторах
- писать сигнатуры так, чтобы вызывающему не приходилось клонировать
О курсе
Курс для тех, кого достал borrow checker. Владение от стека и кучи до NLL и MIR, справочник 25 ошибок компилятора, 211 задач с автопроверкой и практикум в каждом модуле. Финал: спасаем программу с 12 ошибками.
Для кого этот курс
Тем, кто знает основы Rust (прошёл бесплатный курс «Rust: первые шаги» или Rust Book) и спотыкается о borrow checker. Тем, кто пришёл из Python, Go, Java или C++ и хочет понять, что Rust творит с памятью. И тем, кто уже пишет на Rust и хочет объяснять ошибки владения коллегам, а не заклеивать их клонами.
Начальные требования
Основы Rust: переменные, функции, Vec и String, циклы, if и match. Если что-то из этого пока мутно, начните с бесплатного курса «Rust: первые шаги» https://stepik.org/course/287515. Ставить Rust себе не обязательно: задачи решаются прямо на Stepik, а поиграться можно в Rust Playground.
Преподаватели курса
Как проходит обучение
Полностью в браузере. Теория маленькими шагами, тесты после каждой темы, задачи на код с автопроверкой прямо на Stepik и практикум в конце каждого модуля. Ставить Rust себе не обязательно, для экспериментов хватит Rust Playground.
Что вы получите
- уверенность с borrow checker: ошибка владения перестаёт быть стеной текста
- справочник 25 ошибок E0XXX с примерами и способами починки, к которому удобно возвращаться
- 211 решённых задач и спасённую программу на 160 строк
- шпаргалки по каждому модулю
- фундамент для следующих курсов линейки: лайфтаймы, трейты, умные указатели, многопоточность и async
Нагрузка
4–5 часов в неделю