Struct UiRunner

Source
pub struct UiRunner<T> { /* private fields */ }
Expand description

Run code on the UI thread from another thread.

Allows you to mix non-blocking threaded code, with code that reads and updates your widget in the UI thread.

This can be copied and passed around.

Implementations§

Source§

impl<T: 'static> UiRunner<T>

Source

pub fn new(key: usize) -> Self

Create a new UiRunner that dispatches functions as global actions but differentiates them by the provided key.

If used in a widget, prefer using your_widget.ui_runner(). If used in your app main, prefer using your_app_main.ui_runner().

Source

pub fn handle( self, cx: &mut Cx, event: &Event, scope: &mut Scope<'_, '_>, target: &mut T, )

Handle all functions scheduled with the key of this UiRunner.

You should call this once from your handle_event method, like:

fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
   // ... handle other stuff ...
   self.ui_runner().handle(cx, event, scope, self);
}

Once a function has been handled, it will never run again.

Source

pub fn defer(self, f: impl DeferCallback<T>)

Schedule the provided closure to run on the UI thread.

Source

pub fn block_on<R: Send + 'static>( self, f: impl FnOnce(&mut T, &mut Cx, &mut Scope<'_, '_>) -> R + Send + 'static, ) -> R

Like defer, but blocks the current thread until the UI awakes, processes the closure, and returns the result.

Generally, you should prefer to use defer if you don’t need to communicate a value back. This method may wait a long time if the UI thread is busy so you should not use it in tight loops.

Trait Implementations§

Source§

impl<T> Clone for UiRunner<T>

Source§

fn clone(&self) -> Self

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<T> Debug for UiRunner<T>

Source§

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

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

impl<T> PartialEq for UiRunner<T>

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T> Copy for UiRunner<T>

Auto Trait Implementations§

§

impl<T> Freeze for UiRunner<T>

§

impl<T> RefUnwindSafe for UiRunner<T>

§

impl<T> Send for UiRunner<T>

§

impl<T> Sync for UiRunner<T>

§

impl<T> Unpin for UiRunner<T>

§

impl<T> UnwindSafe for UiRunner<T>

Blanket Implementations§

Source§

impl<T> ActionTrait for T
where T: 'static + Debug + ?Sized,

Source§

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

Source§

fn ref_cast_type_id(&self) -> TypeId
where Self: 'static,

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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 T
where 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 T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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.