Привет, Хабр!

Некоторое время назад у меня образовалось немного (вернее много) свободного времени, и я между моментами серфинга на известном сайте HH решил посмотреть в сторону освоения Rust. Кроме всего прочего меня очень интересует тема библиотек графических интерфейсов.

В Rust есть несколько подобных библиотек, я решил остановиться на Iced — текущая версия Iced 0.14. Прежде всего понадобилось понять принципы построения библиотеки и архитектурную философию паттерна ELM, которая реализована в библиотеке.

В процессе изучения родился описываемый ниже PET‑проект Iced Forms Pack. Проект представляет собой конструктор форм из базовых элементов Iced.

В программе можно сконструировать простые формы и выполнять их сохранение/восстановление. Имеется возможность посмотреть код Rust для реализации данной формы с теми или иными настройками элементов.

Предусмотрена возможность экспорта формы в JSON для последующей генерации приложения.

Кодогенерация из экспортированного файла в проект Rust выполняется с помощью утилиты iced_forms_gen. Ниже показан подобный проект для демонстрируемой в статье формы.

Код генерируется с использованием шаблонов Tera 2. Полученный проект остается дополнить логикой. Пример формы компилируется в следующее приложение:

Приложение Iced Forms Pack задумывалось как мультиплатформенное, и по крайней мере в Windows/Linux оно компилируется и выполняется. Целью данного PET‑проекта я ставил освоение Rust, изучение одной из GUI библиотек языка и попытку реализации простенького RAD.

Спасибо за внимание.

В качестве дисклаймера: проект является pet‑проектом, разрабатывался в качестве обучения rust с привлечением ИИ.

Исходные коды проекта можно посмотреть по ссылке