From 31fcaccf7de0c2b6e531c2589bb9b5e03658119a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Sun, 7 Dec 2025 01:42:42 +0100 Subject: [PATCH] Fix `Message` type to `Never` in `UpdateFn` for `()` --- core/src/lib.rs | 3 ++- examples/geometry/src/main.rs | 4 ++-- src/application.rs | 8 ++++---- src/lib.rs | 5 +++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/core/src/lib.rs b/core/src/lib.rs index 06d5d19e..04ba7e44 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -85,13 +85,14 @@ pub use widget::Widget; pub use bytes::Bytes; pub use smol_str::SmolStr; +pub use std::convert::Infallible as Never; /// A function that can _never_ be called. /// /// This is useful to turn generic types into anything /// you want by coercing them into a type with no possible /// values. -pub fn never(never: std::convert::Infallible) -> T { +pub fn never(never: Never) -> T { match never {} } diff --git a/examples/geometry/src/main.rs b/examples/geometry/src/main.rs index feffd2df..8c2351ac 100644 --- a/examples/geometry/src/main.rs +++ b/examples/geometry/src/main.rs @@ -169,15 +169,15 @@ mod rainbow { } } -use iced::Element; use iced::widget::{center_x, center_y, column, scrollable}; +use iced::{Element, Never}; use rainbow::rainbow; pub fn main() -> iced::Result { iced::run((), view) } -fn view(_state: &()) -> Element<'_, ()> { +fn view(_state: &()) -> Element<'_, Never> { let content = column![ rainbow(), "In this example we draw a custom widget Rainbow, using \ diff --git a/src/application.rs b/src/application.rs index f007e9dc..da5a7d2e 100644 --- a/src/application.rs +++ b/src/application.rs @@ -36,8 +36,8 @@ use crate::shell; use crate::theme; use crate::window; use crate::{ - Element, Executor, Font, Preset, Result, Settings, Size, Subscription, - Task, Theme, + Element, Executor, Font, Never, Preset, Result, Settings, Size, + Subscription, Task, Theme, }; use iced_debug as debug; @@ -600,8 +600,8 @@ pub trait UpdateFn { fn update(&self, state: &mut State, message: Message) -> Task; } -impl UpdateFn for () { - fn update(&self, _state: &mut State, _message: Message) -> Task { +impl UpdateFn for () { + fn update(&self, _state: &mut State, _message: Never) -> Task { Task::none() } } diff --git a/src/lib.rs b/src/lib.rs index 27561f2a..b70e4333 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -533,8 +533,9 @@ pub use crate::core::padding; pub use crate::core::theme; pub use crate::core::{ Alignment, Animation, Background, Border, Color, ContentFit, Degrees, - Function, Gradient, Length, Padding, Pixels, Point, Radians, Rectangle, - Rotation, Settings, Shadow, Size, Theme, Transformation, Vector, never, + Function, Gradient, Length, Never, Padding, Pixels, Point, Radians, + Rectangle, Rotation, Settings, Shadow, Size, Theme, Transformation, Vector, + never, }; pub use crate::program::Preset; pub use crate::program::message;