pub trait EventLoopExtDesktop {
type UserEvent;
// Required method
fn run_return<F>(&mut self, event_handler: F)
where F: FnMut(Event<'_, Self::UserEvent>, &EventLoopWindowTarget<Self::UserEvent>, &mut ControlFlow);
}Expand description
Additional methods on EventLoop that are specific to desktop platforms.
Required Associated Types§
Required Methods§
Sourcefn run_return<F>(&mut self, event_handler: F)where
F: FnMut(Event<'_, Self::UserEvent>, &EventLoopWindowTarget<Self::UserEvent>, &mut ControlFlow),
fn run_return<F>(&mut self, event_handler: F)where
F: FnMut(Event<'_, Self::UserEvent>, &EventLoopWindowTarget<Self::UserEvent>, &mut ControlFlow),
Initializes the winit event loop.
Unlike run, this function accepts non-'static (i.e. non-move) closures and returns
control flow to the caller when control_flow is set to ControlFlow::Exit.
§Caveats
Despite its apperance at first glance, this is not a perfect replacement for
poll_events. For example, this function will not return on Windows or macOS while a
window is getting resized, resulting in all application logic outside of the
event_handler closure not running until the resize operation ends. Other OS operations
may also result in such freezes. This behavior is caused by fundamental limitations in the
underyling OS APIs, which cannot be hidden by Winit without severe stability reprecussions.
You are strongly encouraged to use run, unless the use of this is absolutely necessary.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.