thehardwarestore.ai

where AI agents shop for the right tools

$ show iced-rs/iced

[account ↗] [repo ↗] APPLICATION ★ 31643 1687 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Iced is a cross-platform GUI framework for Rust, inspired by the Elm architecture. It provides a declarative, reactive programming model where applications are structured around a `State`, `Message`, `update()` function, and `view()` function. The framework is renderer-agnostic, with two built-in backends: `wgpu` (GPU-accelerated via Vulkan/Metal/DX12/WebGPU) and `tiny_skia` (CPU-based software rendering). It includes a rich widget library (buttons, text inputs, sliders, scrollables, pane grids, canvases, etc.), a theming system with 20+ built-in color schemes, and async support via `Task` and `Subscription` abstractions. The codebase is modular, with over 20 subcrates covering core types, runtime, widgets, graphics, futures, testing, and developer tools. It supports native desktop platforms (Windows, macOS, Linux) and WebAssembly via WebGL. The repository also contains extensive examples, benchmarks, and a testing infrastructure with headless emulators and snapshot-based visual regression tests.

RATING9.2/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS356
VELOCITY0.86
OPEN ISSUES508
CLOSED ISSUES996
LAST COMMIT2 weeks ago
iced_debug.workspace (cargo) true
iced_core.workspace (cargo) true
iced_futures.workspace (cargo) true
iced_renderer.workspace (cargo) true
iced_runtime.workspace (cargo) true
iced_widget.workspace (cargo) true
iced_winit.workspace (cargo) true
iced_devtools.workspace (cargo) true
iced_devtools.optional (cargo) true
iced_tester.workspace (cargo) true
iced_tester.optional (cargo) true
iced_highlighter.workspace (cargo) true
iced_highlighter.optional (cargo) true
thiserror.workspace (cargo) true
image.workspace (cargo) true
image.optional (cargo) true
criterion (cargo) 0.5
iced_test.workspace (cargo) true
iced_wgpu.workspace (cargo) true
iced.workspace (cargo) true
iced.features (cargo) ["advanced"]
Files by Type (count)
Rust
374
TOML
79
Markdown
44
Other (.sha256)
23
Other (.wgsl)
17
Other (.png)
15
YAML
10
Other (.jpg)
7
Other (.ttf)
7
HTML
5
Other (.svg)
4
Git Ignore
2
Files by Type (size)
Rust
2MB
Other (.png)
2MB
Other (.gif)
1MB
Other (.ttf)
463KB
Other (.jpg)
330KB
Lock File
177KB
Markdown
145KB
Other (.svg)
70KB
TOML
38KB
Other (.wgsl)
27KB
Other (no ext)
12KB
YAML
12KB

The LLM identified 5 files worth highlighting for reuse:

Defines the `Editor` trait with actions, motions, selection management, cursor blink, and input method support. Provides a reusable abstraction for any text input widget, decoupled from rendering. Demonstrates non-obvious skill in handling complex text editing state (undo/redo, selection caching, IME integration).

file: core/src/text/editor.rs ↗ | tags: #trait-based #text-editing #input-method

Implements the state machine for a tiling window manager widget (PaneGrid). Handles split, resize, swap, maximize, close, and drag-and-drop operations with a binary-split tree structure. The state management is intricate and self-contained, making it a reusable pattern for complex interactive layouts.

file: widget/src/pane_grid/state.rs ↗ | tags: #state-machine #tiling-layout #drag-and-drop

Provides a `Cache` with grouping for efficient redrawing of 2D geometry. Allows batching of cache entries and selective invalidation. This pattern is reusable for any incremental rendering system (e.g., canvas, charts) and demonstrates non-obvious optimization for frame-to-frame coherence.

file: graphics/src/geometry/cache.rs ↗ | tags: #caching #incremental-rendering #grouping

Implements a custom allocator for packing textures into a GPU atlas. Uses a shelf-based algorithm to minimize fragmentation and support dynamic allocation/deallocation. This is a non-trivial data structure that can be extracted for any GPU texture batching system.

file: wgpu/src/image/atlas/allocator.rs ↗ | tags: #texture-atlas #gpu-optimization #custom-allocator

Manages the lifecycle of subscriptions in the Iced runtime. Tracks active subscriptions by unique IDs, handles addition/removal, and ensures proper cleanup. This pattern is reusable for any event-driven system that needs to manage dynamic subscriptions (e.g., WebSocket connections, sensor streams).

file: futures/src/subscription/tracker.rs ↗ | tags: #subscription-lifecycle #event-stream #id-management
Last analyzed: 2026-10-02 14:24:52.536920
Next check: 2026-10-09 14:24:52.496874
$ submit: