Инструменты7 июля 2026 г., 13:47 МСК🤖 Auto

Iced для Rust: реактивный GUI с Elm-архитектурой и поддержкой Web

Библиотека Iced для Rust предлагает типобезопасный кроссплатформенный GUI, вдохновленный Elm, с поддержкой Windows, macOS, Linux и Web.

Баннер новости 3028

Архитектура Elm в мире Rust

Iced реализует паттерн The Elm Architecture, разделяя приложение на четыре четких компонента: State (состояние), Messages (события), View (отображение) и Update (логика изменений). Этот подход обеспечивает предсказуемость интерфейса и упрощает отладку сложных приложений. Библиотека поддерживает асинхронные действия через futures и включает встроенные виджеты, такие как текстовые поля и скроллируемые области.

Кроссплатформенность и рендеринг

Ключевое преимущество Iced — работа на Windows, macOS, Linux и в браузере (Web). Архитектура модульная: ядро отделено от рендеринга. Доступны два встроенных бэкенда на базе wgpu и tiny-skia:

Компонент Технология Описание
iced_wgpu wgpu (Vulkan/Metal/DX12) Аппаратное ускорение, основной рендерер
iced_tiny_skia tiny-skia Программный рендеринг, fallback-вариант
Windowing Shell Native Интеграция с оконными системами ОС

Пример кода: Счетчик

Простота API демонстрируется на примере создания счетчика. Состояние хранится в структуре, сообщения (нажатия кнопок) определяются через enum, а view-логика собирает UI из колонок и кнопок. Обновление состояния происходит в функции update, которая реагирует на сообщения.

История и статус проекта

Разработка началась в мае 2019 года как часть проекта Coffee (2D-движок). Первая альфа-версия вышла как рендерер-агностичная библиотека. Сейчас проект находится в стадии experimental, но активно развивается при поддержке команды Cryptowatch от Kraken.com. Доступны инструменты отладки с метриками производительности и time-traveling.

Для кого это

Iced подходит разработчикам на Rust, которым нужен типобезопасный, реактивный GUI с минимальным boilerplate-кодом. Проект открыт для контрибьюторов, сообщество активно в Zulip и Discord.

Источник: Github ↗