Как-то давно смотрел список Wayland композиторов, в нём был проект Way-Cooler, примечательный тем, что декларировался как духовный наследник AwesomeWM и проект использовал Rust. Но недавно я набрёл на пост автора с грустными новостями. В новостях про Rust часто просят привести примеры ПО, разрабатываемого на этом языке, т.е. многим интересен опыт реального применения этого языка. Именно таким опытом и делится автор по ссылке выше.
Для Ъ я попробую перевести пару самых главных, на мой взгляд, тезисов из поста. Надеюсь мой перевод не исказит смысл оригинала.
Автор на протяжении примерно года писал биндинг к библиотеке wlroots, за это время он внёс более 1000 изменений и в итоге репозиторий wlroots-rs содержал более 11 тысяч строк Rust кода, при чём это не просто копипаста одного куска для каждой сущности библиотеки, автор написал несколько макросов, один из которых сам же назвал уродливым. Автор пишет, что все 11 тысяч строк это просто обёртки, которые занимаются управлением памяти и при этом они не покрывают и половины API wlroots. Кроме того, автор заметил, что разобраться и пользоваться плодом его трудов довольно сложно и некоторые отказываются от использования wlroots-rs в пользу wlroots.
Основными проблемами при написании обёртки для wlroots автор называет описание модели владения объектами wlroots на языке Rust. По ссылке автор показывает несколько примеров кода, которые демонстрируют проблему. Кроме того, автор не видит возможности написать на Safe Rust расширение протокола Wayland.
В итоге автор принял непростое решение переписать Way-Cooler на C. Автор упоминает некоторые другие проекты, столкнувшиеся с аналогичной проблемой написания биндингов, которые приняли противоположное решение – переписать библиотеки на Rust.
Предлагаю кроме обсуждения этой новости, размещать в этой теме ссылки на другие истории использования Rust.