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 next requestAnimationFrame 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 as 214). See std::process::exit.

Implementations

Alias for ExitWithCode(0).

Sets this to Poll.

Sets this to Wait.

Sets this to WaitUntil(instant).

Sets this to ExitWithCode(code).

Sets this to Exit.

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.