summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-04 14:25:04 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-04 15:21:07 +0200
commitf1ec0af5070fe2752967cdc38ed66b8b70882366 (patch)
tree7bf1d4ce9c761b94a5dc7c40b265f62afb24fedf /native
parente24f26c28f09916f04f536a52368dcd1a4f34ed4 (diff)
downloadiced-f1ec0af5070fe2752967cdc38ed66b8b70882366.tar.gz
iced-f1ec0af5070fe2752967cdc38ed66b8b70882366.tar.bz2
iced-f1ec0af5070fe2752967cdc38ed66b8b70882366.zip
Run `system::information` in a different thread
... since it seems it can block for a couple of seconds.
Diffstat (limited to 'native')
-rw-r--r--native/src/system/action.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/native/src/system/action.rs b/native/src/system/action.rs
index 6dab20a6..dea9536f 100644
--- a/native/src/system/action.rs
+++ b/native/src/system/action.rs
@@ -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>(