Итак, пришло время написать мой первый пост в 2018 году. Я был занят изучением языка Rust. В этом посте я попытаюсь объяснить, почему я решил его выучить, как я его изучаю и какие удивительные вещи можно использовать на этом языке.

Моя мотивация к изучению Rust

Впервые мне пришло в голову изучить Rust в июле 2017 года. В то время мы пытались реализовать протокол Ethereum в Elixir.

В Ethereum Merkle Patricia Tree хэши SHA3 используются для ключей узлов. Единственной реализацией SHA3, которую я нашел в экосистеме Erlang/Elixir, был erlang-keccakf1600 NIF, написанный на C. Но я не фанат ни Erlang, ни C. Я слышал, что на рынке языков системного программирования появился новый игрок. который может конкурировать с C/C++. Я решил написать Elixir NIF на языке Rust, потому что весь этот Эфириум в Эликсире был побочным проектом, у меня не было никаких сроков, и я хотел, чтобы все было идеально с нуля. Также это была хорошая возможность узнать что-то новое. Мои приключения с Rust начались.

Мои планы по изучению Rust рухнули, когда на работе в Bookmate мне поручили новый проект: нужно было написать микросервис на Kotlin, языке, которого я тогда не знал. К счастью, Kotlin — простой в освоении язык, и я уже писал пару микросервисов на Java. Kotlin позиционирует себя как практичную и удобную альтернативу Java. Но, к сожалению, мне пришлось приостановить игру с Rust, чтобы сосредоточить все свое внимание на этом проекте. После завершения проекта Kotlin моя мотивация закончить проект Ethereum умерла, поэтому у меня не было причин изучать Rust (кстати, другие ребята из github-организации Exthereum все еще работают над проектом).

Моя вторая попытка выучить язык началась в декабре 2017 года. У меня появилась идея простой игры. И знаете, какой язык я выбрал для его реализации? Правильно, я выбрал Rust. Путешествие продолжается до сих пор.

Мой план изучения Rust

… Я хочу подчеркнуть, что Rust — это не тот язык, который можно выучить за пару дней, а потом заняться сложными/техническими/советскими вещами. Вы будете вынуждены немедленно изучить строгую технику безопасности, и, вероятно, поначалу это будет неудобно. Однако, по моему собственному опыту, это привело меня к ощущению, что компиляция моего кода действительно что-то для меня значит.

Митчел Нордин

Я составил план максимально эффективного изучения Rust:

  1. Прочтите Книгу по программированию на Rust О’Рейли.
  2. Выполните все 78 упражнений из Экзерцизма. Вы можете начать делать упражнения во время чтения книги.
  3. Напишите пару простых библиотек.

Я надеюсь, что после завершения шага 3 я смогу сказать, что у меня есть базовые знания Rust. На момент написания этого поста я выполнил 47 упражнений из 78 (готовые упражнения доступны в репозитории github — exercism_rust).

Я на себе испытал крутую кривую изучения этого языка. Труднее всего было понять понятия собственности, ссылок и срока службы.

использование

Rust — новый язык системного программирования. Подобно C и C++, Rust дает разработчикам точный контроль над использованием памяти, поэтому его можно использовать для любой задачи, в которой используются C/C++:

  • Разработка игры. Есть отличный сайт под названием Мы уже играем? в котором перечислены все ресурсы для разработки игр в экосистеме Rust.
  • Операционные системы. Redox — это Unix-подобная операционная система, написанная на Rust https://os.phil-opp.com/ — в этой серии блогов создается небольшая операционная система.
  • Эликсир Нифс. Rustler — безопасный мост Rust для создания функций Erlang NIF.
  • Рубиновые расширения. Хеликс
  • И т.д

Первоначально опубликовано на www.badykov.com 28 января 2018 г.