![][1]
Когда я узнал, что появился новый язык программирования системного уровня, с производительностью как у С++ и без сборщика мусора, я сразу заинтересовался. Мне нравится решать задачи с помощью языков со сборщиками мусора, вроде C# или JavaScript, но меня постоянно терзала мысль о сырой и грубой мощи С++. Но в С++ так много способов выстрелить себе в ногу и других хорошо известных проблем, что я обычно не решался.
Так что я влез в Rust. И, блин, влез глубоко.
Язык Rust все еще довольно молод, поэтому его экосистема пока находится в стадии начального развития. В некоторых случаях, например, в случае с [вебсокетами][2] или [сериализацией][3] есть хорошие и популярных решения. В других областях у Rust не все так хорошо. Одна из таких областей это OpenGL GUI, вроде [CEGUI][4] или [nanogui][5]. Я хотел помочь сообществу и языку, поэтому взялся за портирования nanogui на Rust, с кодом на чистом Rust, без связок с С/C++. Проект можно [найти тут][6].
Обычно, знакомство с Rust начинается с борьбы с идеей borrow-checker. Как и у других программистов, у меня тоже был период, когда я не мог понять, как решить ту или иную проблему. К счастью, есть классное сообщество в [\#rust-beginners][7]. Его обитатели помогали мне и отвечали на мои дурацкие вопросы. Мне понадобилось несколько недель на то, чтобы почувствовать себя более-менее комфортно в Rust.
Но я не подозревал, что когда сталкиваешься с проблемой, поиск решения похож на ориентацию в джунглях. Часто находится несколько ответов, которые _похожи_ на решение твоей проблемы, но не подходят из-за крохотной детали.
[Читать дальше →][8]
[1]:
https://habrastorage.org/files/3ee/da0/a79/3eeda0a79fd646aea814490e796078ea.jpg
[2]:
https://github.com/cyderize/rust-websocket
[3]:
https://github.com/serde-rs/json
[4]:
http://cegui.org.uk/
[5]:
https://github.com/wjakob/nanogui
[6]:
https://github.com/Oipo/nanogui-rust-sdl
[7]:
https://client00.chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-beginners
[8]:
https://habrahabr.ru/post/309968/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut