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;