Authenticator/src/utils.rs
2023-04-11 22:54:14 +02:00

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;
});
}