cosmic/executor/
single.rs1use std::future::Future;
7
8#[cfg(feature = "tokio")]
9pub struct Executor(tokio::runtime::Runtime);
10
11#[cfg(feature = "tokio")]
12impl iced::Executor for Executor {
13 fn new() -> Result<Self, iced::futures::io::Error> {
14 Ok(Self(
18 tokio::runtime::Builder::new_multi_thread()
19 .worker_threads(1)
20 .enable_all()
21 .build()?,
22 ))
23 }
24
25 fn spawn(&self, future: impl Future<Output = ()> + Send + 'static) {
26 let _res = self.0.spawn(future);
27 }
28
29 fn enter<R>(&self, f: impl FnOnce() -> R) -> R {
30 let _guard = self.0.enter();
31 f()
32 }
33
34 fn block_on<T>(&self, future: impl Future<Output = T>) -> T {
35 self.0.block_on(future)
36 }
37}