[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5356":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":39,"discoverSource":40},5356,"iced","iced-rs\u002Ficed","iced-rs","A cross-platform GUI library for Rust, inspired by Elm","https:\u002F\u002Ficed.rs",null,"Rust",30710,1584,214,351,0,2,67,251,32,44.6,"MIT License",false,"master",[26,27,28,29,30,31,32,33,34,35],"elm","graphics","gui","interface","renderer-agnostic","rust","toolkit","user-interface","widget","widgets","2026-06-12 02:01:09","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"docs\u002Flogo.svg\" width=\"140px\" \u002F>\n\n# Iced\n\n[![Documentation](https:\u002F\u002Fdocs.rs\u002Ficed\u002Fbadge.svg)][documentation]\n[![Crates.io](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Ficed.svg)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Ficed)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fl\u002Ficed.svg)](https:\u002F\u002Fgithub.com\u002Ficed-rs\u002Ficed\u002Fblob\u002Fmaster\u002FLICENSE)\n[![Downloads](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fd\u002Ficed.svg)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Ficed)\n[![Test Status](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Ficed-rs\u002Ficed\u002Ftest.yml?branch=master&event=push&label=test)](https:\u002F\u002Fgithub.com\u002Ficed-rs\u002Ficed\u002Factions)\n[![Zulip Chat](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fchat-on%20Zulip-5e7ce2?logo=zulip&logoColor=white)](https:\u002F\u002Ficed.zulipchat.com\u002F)\n[![Discord Server](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F628993209984614400?label=&labelColor=6A7EC2&logo=discord&logoColor=ffffff&color=7389D8)](https:\u002F\u002Fdiscord.gg\u002F3xZJ65GAhd)\n\nA cross-platform GUI library for Rust focused on simplicity and type-safety.\nInspired by [Elm].\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsquidowl\u002Fhalloy\">\n  \u003Cimg src=\"https:\u002F\u002Ficed.rs\u002Fshowcase\u002Fhalloy.gif\" width=\"460px\">\n\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhecrj\u002Ficebreaker\">\n  \u003Cimg src=\"https:\u002F\u002Ficed.rs\u002Fshowcase\u002Ficebreaker.gif\" width=\"360px\">\n\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n\n## Features\n\n* Simple, easy-to-use, batteries-included API\n* Type-safe, reactive programming model\n* [Cross-platform support] (Windows, macOS, Linux, and the Web)\n* Responsive layout\n* Built-in widgets (including [text inputs], [scrollables], and more!)\n* Custom widget support (create your own!)\n* [Debug tooling with performance metrics and time traveling]\n* First-class support for async actions (use futures!)\n* Modular ecosystem split into reusable parts:\n  * A [renderer-agnostic native runtime] enabling integration with existing systems\n  * Two built-in renderers leveraging [`wgpu`] and [`tiny-skia`]\n    * [`iced_wgpu`] supporting Vulkan, Metal and DX12\n    * [`iced_tiny_skia`] offering a software alternative as a fallback\n  * A [windowing shell]\n\n__Iced is currently experimental software.__ [Take a look at the roadmap] and\n[check out the issues].\n\n[Cross-platform support]: https:\u002F\u002Fraw.githubusercontent.com\u002Ficed-rs\u002Ficed\u002Fmaster\u002Fdocs\u002Fimages\u002Ftodos_desktop.jpg\n[text inputs]: https:\u002F\u002Ficed.rs\u002Fexamples\u002Ftext_input.mp4\n[scrollables]: https:\u002F\u002Ficed.rs\u002Fexamples\u002Fscrollable.mp4\n[Debug tooling with performance metrics and time traveling]: https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F2e49695c-0261-4b43-ac2e-8d7da5454c4b\n[renderer-agnostic native runtime]: runtime\u002F\n[`wgpu`]: https:\u002F\u002Fgithub.com\u002Fgfx-rs\u002Fwgpu\n[`tiny-skia`]: https:\u002F\u002Fgithub.com\u002FRazrFalcon\u002Ftiny-skia\n[`iced_wgpu`]: wgpu\u002F\n[`iced_tiny_skia`]: tiny_skia\u002F\n[windowing shell]: winit\u002F\n[Take a look at the roadmap]: ROADMAP.md\n[check out the issues]: https:\u002F\u002Fgithub.com\u002Ficed-rs\u002Ficed\u002Fissues\n\n## Overview\n\nInspired by [The Elm Architecture], Iced expects you to split user interfaces\ninto four different concepts:\n\n* __State__ — the state of your application\n* __Messages__ — user interactions or meaningful events that you care\n  about\n* __View logic__ — a way to display your __state__ as widgets that\n  may produce __messages__ on user interaction\n* __Update logic__ — a way to react to __messages__ and update your\n  __state__\n\nWe can build something to see how this works! Let's say we want a simple counter\nthat can be incremented and decremented using two buttons.\n\nWe start by modelling the __state__ of our application:\n\n```rust\n#[derive(Default)]\nstruct Counter {\n    value: i32,\n}\n```\n\nNext, we need to define the possible user interactions of our counter:\nthe button presses. These interactions are our __messages__:\n\n```rust\n#[derive(Debug, Clone, Copy)]\npub enum Message {\n    Increment,\n    Decrement,\n}\n```\n\nNow, let's show the actual counter by putting it all together in our\n__view logic__:\n\n```rust\nuse iced::widget::{button, column, text, Column};\n\nimpl Counter {\n    pub fn view(&self) -> Column\u003C'_, Message> {\n        \u002F\u002F We use a column: a simple vertical layout\n        column![\n            \u002F\u002F The increment button. We tell it to produce an\n            \u002F\u002F `Increment` message when pressed\n            button(\"+\").on_press(Message::Increment),\n\n            \u002F\u002F We show the value of the counter here\n            text(self.value).size(50),\n\n            \u002F\u002F The decrement button. We tell it to produce a\n            \u002F\u002F `Decrement` message when pressed\n            button(\"-\").on_press(Message::Decrement),\n        ]\n    }\n}\n```\n\nFinally, we need to be able to react to any produced __messages__ and change our\n__state__ accordingly in our __update logic__:\n\n```rust\nimpl Counter {\n    \u002F\u002F ...\n\n    pub fn update(&mut self, message: Message) {\n        match message {\n            Message::Increment => {\n                self.value += 1;\n            }\n            Message::Decrement => {\n                self.value -= 1;\n            }\n        }\n    }\n}\n```\n\nAnd that's everything! We just wrote a whole user interface. Let's run it:\n\n```rust\nfn main() -> iced::Result {\n    iced::run(Counter::update, Counter::view)\n}\n```\n\nIced will automatically:\n\n  1. Take the result of our __view logic__ and layout its widgets.\n  1. Process events from our system and produce __messages__ for our\n     __update logic__.\n  1. Draw the resulting user interface.\n\nRead the [book], the [documentation], and the [examples] to learn more!\n\n## Implementation details\n\nIced was originally born as an attempt at bringing the simplicity of [Elm] and\n[The Elm Architecture] into [Coffee], a 2D game library I am working on.\n\nThe core of the library was implemented during May 2019 in [this pull request].\n[The first alpha version] was eventually released as\n[a renderer-agnostic GUI library]. The library did not provide a renderer and\nimplemented the current [tour example] on top of [`ggez`], a game library.\n\nSince then, the focus has shifted towards providing a batteries-included,\nend-user-oriented GUI library, while keeping the ecosystem modular.\n\n[this pull request]: https:\u002F\u002Fgithub.com\u002Fhecrj\u002Fcoffee\u002Fpull\u002F35\n[The first alpha version]: https:\u002F\u002Fgithub.com\u002Ficed-rs\u002Ficed\u002Ftree\u002F0.1.0-alpha\n[a renderer-agnostic GUI library]: https:\u002F\u002Fwww.reddit.com\u002Fr\u002Frust\u002Fcomments\u002Fczzjnv\u002Ficed_a_rendereragnostic_gui_library_focused_on\u002F\n[tour example]: examples\u002FREADME.md#tour\n[`ggez`]: https:\u002F\u002Fgithub.com\u002Fggez\u002Fggez\n\n## Contributing \u002F Feedback\n\nIf you want to contribute, please read our [contributing guidelines] for more details.\n\nFeedback is also welcome! You can create a new topic in [our Zulip forum] or\ncome chat to [our Discord server].\n\n## Sponsors\n\nThe development of Iced is sponsored by the [Cryptowatch] team at [Kraken.com]\n\n[book]: https:\u002F\u002Fbook.iced.rs\u002F\n[documentation]: https:\u002F\u002Fdocs.rs\u002Ficed\u002F\n[examples]: https:\u002F\u002Fgithub.com\u002Ficed-rs\u002Ficed\u002Ftree\u002Fmaster\u002Fexamples#examples\n[Coffee]: https:\u002F\u002Fgithub.com\u002Fhecrj\u002Fcoffee\n[Elm]: https:\u002F\u002Felm-lang.org\u002F\n[The Elm Architecture]: https:\u002F\u002Fguide.elm-lang.org\u002Farchitecture\u002F\n[the current issues]: https:\u002F\u002Fgithub.com\u002Ficed-rs\u002Ficed\u002Fissues\n[contributing guidelines]: https:\u002F\u002Fgithub.com\u002Ficed-rs\u002Ficed\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md\n[our Zulip forum]: https:\u002F\u002Ficed.zulipchat.com\u002F\n[our Discord server]: https:\u002F\u002Fdiscord.gg\u002F3xZJ65GAhd\n[Cryptowatch]: https:\u002F\u002Fcryptowat.ch\u002Fcharts\n[Kraken.com]: https:\u002F\u002Fkraken.com\u002F\n","Iced 是一个专注于简单性和类型安全的跨平台 Rust GUI 库。它提供了一个易于使用且功能齐全的 API，支持响应式布局和内置小部件，如文本输入框和滚动条，并允许用户自定义小部件。Iced 采用类型安全、反应式的编程模型，支持异步操作，并具有跨 Windows、macOS、Linux 和 Web 的能力。此外，它还提供了与现有系统集成的渲染器无关原生运行时，以及利用 `wgpu` 和 `tiny-skia` 的两个内置渲染器。Iced 适用于需要构建跨平台图形用户界面的应用场景，尤其是那些重视开发效率和代码安全性的项目。","2026-06-11 03:02:46","top_language"]