#[allow(unused_imports)]
use core::{any::Any, pin::Pin};
pub trait Async: WasmSend + WasmSync + 'static {}
impl<T> Async for T where T: WasmSend + WasmSync + 'static {}
pub trait AnyAsync: Any + WasmSendSync + 'static
{
fn as_any(&self) -> &dyn Any;
fn as_any_mut(&mut self) -> &mut dyn Any;
}
impl<T> AnyAsync for T
where
T: Any + WasmSendSync + 'static,
{
fn as_any(&self) -> &dyn Any { self }
fn as_any_mut(&mut self) -> &mut dyn Any { self }
}
pub type DynAnyAsync = dyn AnyAsync + 'static;
#[cfg(any(not(target_arch = "wasm32"), all(target_arch = "wasm32", target_feature = "atomics")))]
mod sync_trait
{
pub trait WasmSend: Send {}
pub trait WasmSync: Sync {}
pub trait WasmSendSync: WasmSend + WasmSync {}
impl<T: Send> WasmSend for T {}
impl<T: Sync> WasmSync for T {}
impl<T: Send + Sync> WasmSendSync for T {}
}
#[cfg(all(target_arch = "wasm32", not(target_feature = "atomics")))]
mod sync_trait
{
pub trait WasmSend {}
pub trait WasmSync {}
pub trait WasmSendSync: WasmSend + WasmSync {}
impl<T> WasmSend for T {}
impl<T> WasmSync for T {}
impl<T> WasmSendSync for T {}
}
pub use sync_trait::*;