Вот и закончл очередной свой домашнй проект посвященный Rust, но теперь - в мире фронтенда.
https://github.com/geooooo/wap_rs
Аудиоплеер на Rust + Wasm + Leptos, хотелось бы еще приправить и обернуть это Tauri,
но на текущем этапе и так проделана колосальная работа, тут даже эквалайзер живой и не бутофорный -
анимациия основана на частотах текущей аудио дорожки.
А теперь пару мыслей по поводу dev experience во время разработки на таком весьма нестандартном стеке.
Wasm - переносимый формат байткода или своего рода ассемблер для браузеров и способ компилировать
код с разных языков в него и отвязаться от велико-ужасного JavaScript.
Потенциально wasm заметно быстрее JS.
По части сборки в Wasm у комьюнити Rust есть Trunk, а также низкоуровневые либы в лице web-sys, wasm-bindgen для доступа к браузерным api и интеропу с JS. Вообще есть и другие инструменты в экосистеме
Rust.
Leptos - фреймворк для фронтенд разработки, помимо всего прочего он поддерживает SSR, но мой случай - чистый CSR. Leptos похож на React, есть довольно мощные шаблоны для верстки, опять же ближайшее сравненине - JSX, спасибо системе макросов в Rust, которая позволяет изобретать по сути DSL языки под разные случаи жизни.
Концепция "сигналов" чтобы триггерить рендеринг, функциональные компоненты, есть вспомогательные либы
для Leptos с реализацией идей хуков - useЧтоНибудь, опять же знакомая вещь.
Довольно приятный dev experience - система типов Rust само собой дает по рукам каждый раз когда наделал ошибок, а когда все пофиксил - все быстро пересобралось и само перезагрузилось и единственные ошибки -
логика кода или оставленный unwrap. Но по скорости разработки конечно несравнимо с опытом высокоуровневых
языков вроде JS/TS и Dart, все же Rust - язык системного программирования, а еще писать некоторые обвязки на браузерные api было немного больно.
Оставил на потом Tauri - нечто похожее на Electron из мира JS (да, мы все пользуемся приложениями на Electron, даже если вы этого не замечали), но у него есть свои особенности.