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§

source§

impl ControlFlow

source

pub const Exit: Self = _

Alias for ExitWithCode(0).

source

pub fn set_poll(&mut self)

Sets this to Poll.

source

pub fn set_wait(&mut self)

Sets this to Wait.

source

pub fn set_wait_until(&mut self, instant: Instant)

Sets this to WaitUntil(instant).

source

pub fn set_wait_timeout(&mut self, timeout: Duration)

Sets this to wait until a timeout has expired.

In most cases, this is set to WaitUntil. However, if the timeout overflows, it is instead set to Wait.

source

pub fn set_exit_with_code(&mut self, code: i32)

Sets this to ExitWithCode(code).

source

pub fn set_exit(&mut self)

Sets this to Exit.

Trait Implementations§

source§

impl Clone for ControlFlow

source§

fn clone(&self) -> ControlFlow

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ControlFlow

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ControlFlow

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq<ControlFlow> for ControlFlow

source§

fn eq(&self, other: &ControlFlow) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for ControlFlow

source§

impl Eq for ControlFlow

source§

impl StructuralEq for ControlFlow

source§

impl StructuralPartialEq for ControlFlow

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.