Prior to this change, the widgets that needed a `Clone` bound on `Message` to implement the `Widget` trait could be created with a non-cloneable `Message`. As a consequence, the compiler complained only when actually trying to use the `Widget` trait. Normally, this happens when trying to `push` the widget in a container or turn it into an `Element`. Furthermore, the compiler error in this case does not mention `Message` nor the `Clone` bound, but instead complains about a missing `From` implementation. Thus, it can easily cause confusion! This change introduces `Clone` bounds in the main implementation of the widgets that need it to properly implement the `Widget` trait. As a result, the compiler complains early when trying to create one of these widgets with a non-cloneable `Message` and explicitly mentions that the `Message` needs to implement `Clone`. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
iced_native
iced_native takes iced_core and builds a native runtime on top of it, featuring:
- A custom layout engine, greatly inspired by
druid - Event handling for all the built-in widgets
- A renderer-agnostic API
To achieve this, it introduces a bunch of reusable interfaces:
- A
Widgettrait, which is used to implement new widgets: from layout requirements to event and drawing logic. - A bunch of
Renderertraits, meant to keep the crate renderer-agnostic. - A
Windowedtrait, leveragingraw-window-handle, which can be implemented by graphical renderers that target windows. Window-based shells (likeiced_winit) can use this trait to stay renderer-agnostic.
Installation
Add iced_native as a dependency in your Cargo.toml:
iced_native = "0.2"
Iced moves fast and the master branch can contain breaking changes! If
you want to learn about a specific release, check out the release list.
