Run system::information in a different thread
... since it seems it can block for a couple of seconds.
This commit is contained in:
parent
e24f26c28f
commit
f1ec0af507
3 changed files with 17 additions and 9 deletions
|
|
@ -1,15 +1,18 @@
|
|||
use crate::system;
|
||||
|
||||
use iced_futures::MaybeSend;
|
||||
|
||||
use std::fmt;
|
||||
|
||||
/// An operation to be performed on the system.
|
||||
pub enum Action<T> {
|
||||
/// Query system information and produce `T` with the result.
|
||||
QueryInformation(Box<dyn Fn(system::Information) -> T>),
|
||||
QueryInformation(Box<dyn Closure<T>>),
|
||||
}
|
||||
|
||||
pub trait Closure<T>: Fn(system::Information) -> T + MaybeSend {}
|
||||
|
||||
impl<T, O> Closure<O> for T where T: Fn(system::Information) -> O + MaybeSend {}
|
||||
|
||||
impl<T> Action<T> {
|
||||
/// Maps the output of a system [`Action`] using the provided closure.
|
||||
pub fn map<A>(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue