explaingit

iced-rs/iced

📈 Trending30,517RustAudience · developerComplexity · 3/5ActiveLicenseSetup · moderate

TLDR

A Rust library for building graphical desktop applications with a functional, predictable architecture inspired by Elm. Write once, run on Windows, macOS, Linux, and the web.

Mindmap

mindmap
  root((Iced))
    What it does
      Build desktop GUIs
      Cross-platform apps
      Web support
    Architecture
      State management
      Event handling
      View rendering
      Update logic
    Graphics
      wgpu backend
      Software fallback
      Hardware acceleration
    Use cases
      Config tools
      File managers
      Chat clients
    Tech stack
      Rust language
      Elm-inspired design

Things people build with this

USE CASE 1

Build a configuration tool with a native graphical interface for your Rust application.

USE CASE 2

Create a file manager or document editor that runs identically on Windows, macOS, and Linux.

USE CASE 3

Develop an IRC chat client or messaging app with a responsive, event-driven UI.

USE CASE 4

Write a web-based dashboard that compiles to WebAssembly from the same Rust codebase.

Tech stack

RustwgpuVulkanMetalDirectX 12

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Rust toolchain installation and native graphics drivers (wgpu backends); compilation time can be slow on first build.

Use freely for any purpose including commercial, as long as you keep the copyright notice.

In plain English

Iced is a library for building graphical desktop applications in Rust. It solves the problem of creating native user interfaces, windows, buttons, text fields, layouts, in a language that historically lacked good options for this. Iced targets Windows, macOS, Linux, and the web from a single codebase. The design is inspired by Elm, a functional programming language with an architecture that keeps application logic predictable. In practice this means a developer defines their application around four concepts: the data the app holds (called State), the events the user can trigger (Messages), how to display the data as visual elements (View logic), and how to update the data when an event occurs (Update logic). The library handles the loop of drawing the interface, listening for input, calling the update function, and redrawing, the developer only writes the data and the responses to events. Under the hood, Iced can render using two different graphics backends: one that uses wgpu (which runs on Vulkan, Metal, and DX12, the low-level graphics APIs for Windows, Mac, and Linux respectively), and a software-based fallback for environments where hardware acceleration is unavailable. A Rust developer would use Iced when building a desktop application that needs a real graphical interface, a configuration tool, a file manager, an IRC client (the README shows one as an example), and wants to stay entirely within the Rust ecosystem. The README notes it is currently experimental software. It is written in Rust and available as a package on crates.io, the standard Rust package registry.

Copy-paste prompts

Prompt 1
Show me how to set up a basic Iced app with a button that increments a counter when clicked.
Prompt 2
How do I structure an Iced application using the State, Message, View, and Update pattern?
Prompt 3
Can you help me build a simple text input form in Iced that validates and displays user input?
Prompt 4
What's the difference between the wgpu and software rendering backends in Iced, and when should I use each?
Prompt 5
How do I deploy an Iced application to the web using WebAssembly?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.