#[cfg(not(target_arch = "wasm32"))]
mod native;
#[cfg(target_arch = "wasm32")]
mod wasm;
#[cfg(not(target_arch = "wasm32"))]
pub use native::*;
#[cfg(target_arch = "wasm32")]
pub use wasm::*;
use crate::{Spawnable, SpawnableWithReturn};
pub fn spawn_with_return<F: SpawnableWithReturn<Out>, Out: Spawnable>(
f: F,
) -> futures::channel::oneshot::Receiver<<Out as Future>::Output> {
let (tx, rx) = futures::channel::oneshot::channel();
spawn(async move {
let result = f().await;
let result = tx.send(result);
if let Err(err_msg) = result {
tracing::error!("failed to send result from `spawn_with_return`: {err_msg:?}");
}
});
rx
}