pub struct HeadlessApp { /* private fields */ }Expand description
A headless app controller.
Headless apps don’t cause external side-effects like visible windows and don’t listen to system events. They can be used for creating apps like a command line app that renders widgets, or for creating integration tests.
You can start a headless app using AppBuilder::run_headless.
Implementations§
Source§impl HeadlessApp
impl HeadlessApp
Sourcepub fn renderer_enabled(&mut self) -> bool
pub fn renderer_enabled(&mut self) -> bool
If headless rendering is enabled.
When enabled windows are still not visible but frames will be rendered and the frame image can be requested.
Note that UiNode::render is still called when a renderer is disabled and you can still
query the latest frame from WINDOWS.widget_tree. The only thing that
is disabled is the actual renderer that converts display lists to pixels.
Sourcepub fn update(&mut self, wait_app_event: bool) -> AppControlFlow
pub fn update(&mut self, wait_app_event: bool) -> AppControlFlow
Does updates.
If wait_app_event is true the thread sleeps until at least one app event is received or a timer elapses,
if it is false only responds to app events already in the buffer.
Sourcepub fn update_observe(
&mut self,
on_pre_update: impl FnOnce() + Send + 'static,
) -> bool
pub fn update_observe( &mut self, on_pre_update: impl FnOnce() + Send + 'static, ) -> bool
Does updates and calls on_pre_update on the first update.
Sourcepub fn run_task<R, T>(
&mut self,
task: impl IntoFuture<IntoFuture = T>,
) -> Option<R>
pub fn run_task<R, T>( &mut self, task: impl IntoFuture<IntoFuture = T>, ) -> Option<R>
Execute the async task in the UI thread, updating the app until it finishes or the app shuts-down.
Returns the task result if the app has not shutdown.
Sourcepub fn run_task_deadline<R, T>(
&mut self,
task: impl IntoFuture<IntoFuture = T>,
deadline: impl Into<Deadline>,
) -> Option<R>
pub fn run_task_deadline<R, T>( &mut self, task: impl IntoFuture<IntoFuture = T>, deadline: impl Into<Deadline>, ) -> Option<R>
Does run_task with a deadline.
Returns the task result if the app has not shutdown and the deadline is not reached.
If the deadline is reached an error is logged. Note that you can use with_deadline to create
a future with timeout and handle the timeout error.
Sourcepub fn run_test<R, T>(
&mut self,
task: impl IntoFuture<IntoFuture = T>,
) -> Option<R>
pub fn run_test<R, T>( &mut self, task: impl IntoFuture<IntoFuture = T>, ) -> Option<R>
Does run_task with a deadline, panics on timeout.
Sourcepub fn has_exited(&self) -> bool
pub fn has_exited(&self) -> bool
If the app has exited.
Exited apps cannot update anymore. The app should be dropped to unload the app scope.
Auto Trait Implementations§
impl Freeze for HeadlessApp
impl RefUnwindSafe for HeadlessApp
impl !Send for HeadlessApp
impl !Sync for HeadlessApp
impl Unpin for HeadlessApp
impl UnwindSafe for HeadlessApp
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more