mirror of
https://gitlab.gnome.org/World/Authenticator.git
synced 2025-03-04 08:44:40 +01:00
39 lines
873 B
Rust
39 lines
873 B
Rust
use crate::models::RUNTIME;
|
|
|
|
pub fn spawn_tokio_blocking<F>(fut: F) -> F::Output
|
|
where
|
|
F: std::future::Future + Send + 'static,
|
|
F::Output: Send + 'static,
|
|
{
|
|
let (sender, receiver) = tokio::sync::oneshot::channel();
|
|
|
|
RUNTIME.spawn(async {
|
|
let response = fut.await;
|
|
sender.send(response)
|
|
});
|
|
receiver.blocking_recv().unwrap()
|
|
}
|
|
|
|
pub async fn spawn_tokio<F>(fut: F) -> F::Output
|
|
where
|
|
F: std::future::Future + Send + 'static,
|
|
F::Output: Send + 'static,
|
|
{
|
|
let (sender, receiver) = tokio::sync::oneshot::channel();
|
|
|
|
RUNTIME.spawn(async {
|
|
let response = fut.await;
|
|
sender.send(response)
|
|
});
|
|
receiver.await.unwrap()
|
|
}
|
|
|
|
pub fn spawn<F>(fut: F)
|
|
where
|
|
F: std::future::Future + 'static,
|
|
{
|
|
let ctx = gtk::glib::MainContext::default();
|
|
ctx.spawn_local(async move {
|
|
fut.await;
|
|
});
|
|
}
|