Enum winit::event_loop::ControlFlow
source · pub enum ControlFlow {
Poll,
Wait,
WaitUntil(Instant),
ExitWithCode(i32),
}
Expand description
Set by the user callback given to the EventLoop::run
method.
Indicates the desired behavior of the event loop after Event::RedrawEventsCleared
is emitted.
Defaults to Poll
.
Persistency
Almost every change is persistent between multiple calls to the event loop closure within a
given run loop. The only exception to this is ExitWithCode
which, once set, cannot be unset.
Changes are not persistent between multiple calls to run_return
- issuing a new call will
reset the control flow to Poll
.
Variants§
Poll
When the current loop iteration finishes, immediately begin a new iteration regardless of whether or not new events are available to process.
Platform-specific
- Web: Events are queued and usually sent when
requestAnimationFrame
fires but sometimes the events in the queue may be sent before the nextrequestAnimationFrame
callback, for example when the scaling of the page has changed. This should be treated as an implementation detail which should not be relied on.
Wait
When the current loop iteration finishes, suspend the thread until another event arrives.
WaitUntil(Instant)
When the current loop iteration finishes, suspend the thread until either another event arrives or the given time is reached.
Useful for implementing efficient timers. Applications which want to render at the display’s
native refresh rate should instead use Poll
and the VSync functionality of a graphics API
to reduce odds of missed frames.
ExitWithCode(i32)
Send a LoopDestroyed
event and stop the event loop. This variant is sticky - once set,
control_flow
cannot be changed from ExitWithCode
, and any future attempts to do so will
result in the control_flow
parameter being reset to ExitWithCode
.
The contained number will be used as exit code. The Exit
constant is a shortcut for this
with exit code 0.
Platform-specific
- Android / iOS / WASM: The supplied exit code is unused.
- Unix: On most Unix-like platforms, only the 8 least significant bits will be used,
which can cause surprises with negative exit values (
-42
would end up as214
). Seestd::process::exit
.
Implementations§
source§impl ControlFlow
impl ControlFlow
sourcepub const Exit: Self = _
pub const Exit: Self = _
Alias for ExitWithCode
(0)
.
sourcepub fn set_wait_until(&mut self, instant: Instant)
pub fn set_wait_until(&mut self, instant: Instant)
Sets this to WaitUntil
(instant)
.
sourcepub fn set_wait_timeout(&mut self, timeout: Duration)
pub fn set_wait_timeout(&mut self, timeout: Duration)
sourcepub fn set_exit_with_code(&mut self, code: i32)
pub fn set_exit_with_code(&mut self, code: i32)
Sets this to ExitWithCode
(code)
.
Trait Implementations§
source§impl Clone for ControlFlow
impl Clone for ControlFlow
source§fn clone(&self) -> ControlFlow
fn clone(&self) -> ControlFlow
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ControlFlow
impl Debug for ControlFlow
source§impl Default for ControlFlow
impl Default for ControlFlow
source§impl PartialEq<ControlFlow> for ControlFlow
impl PartialEq<ControlFlow> for ControlFlow
source§fn eq(&self, other: &ControlFlow) -> bool
fn eq(&self, other: &ControlFlow) -> bool
self
and other
values to be equal, and is used
by ==
.