Об этом проекте
rui — это библиотека декларативного интерфейса для Rust, предназначенная для объединения трёх столпов веб-разработки — структуры, стиля и поведения — в одно Rust-выражение. В отличие от фреймворков, которые полагаются на внешние движки рендеринга или громоздкие деревья зависимостей, rui является полностью самодостаточной. Она включает собственный парсер TrueType, растризатор глифов, антиалиасинг, компоновку текста и писатель PNG, что гарантирует идентичное отображение интерфейса на macOS, Windows, Linux (X11/Wayland) и WebAssembly, поскольку один и тот же код рисует каждый пиксель.
Библиотека использует функциональный подход, при котором представление является чистой функцией состояния, а обработчики событий — функциями, которые напрямую изменяют состояние, исключая необходимость в паттернах внутренней изменяемости, таких как `Rc` или `RefCell`. Стиль интегрирован непосредственно в цепочку компонентов через вызовы методов (например, `.pad()`, `.center()`, `.hover_fill()`), а цвета определяются семантическими ролями (например, `Tone::Surface`), которые разрешаются относительно активной темы. Это обеспечивает единообразный внешний вид в светлом и тёмном режимах без отдельных таблиц стилей.
rui следует философии «фундамента, а не каталога». Она не поставляется с готовыми сложными виджетами, такими как флажки или ползунки. Вместо этого она предоставляет семь мощных примитивов (например, `draw`, `on_drag` и `ease`), которые позволяют разработчикам самостоятельно составлять эти элементы управления. Такой подход обеспечивает настраиваемость компонентов пользовательского интерфейса и свободу от ограничений жёсткой библиотеки виджетов. Встроенные элементы, такие как `button`, `text` и `row`, сами по себе являются рецептами, построенными на этих примитивах, и служат примерами реализации.
Доступность является ключевым архитектурным столпом. Дерево элементов одновременно служит деревом доступности, автоматически выводя роли, имена и состояния из структуры пользовательского интерфейса. Это гарантирует, что экранные читалки и вспомогательные технологии получают точную информацию без необходимости ручной аннотации. Библиотека навязывает конвенции доступности посредством тщательного тестирования, обеспечивая правильную идентификацию интерактивных элементов и согласованное управление фокусом.
Тестирование поддерживается детерминированной `Harness`, которая управляет реальным конвейером рендеринга в безголовом режиме. Она позволяет выполнять точные утверждения о компоновке, пиксельном выводе и состояниях взаимодействия. Для обеспечения согласованности измерений текста на разных машинах используется синтетический тестовый шрифт, что делает возможным надёжное интеграционное и паритетное тестирование.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.