Skip to main content

main_loop_async/traits/
native.rs

1/// spawned on WASM because of the return type)
2pub trait Spawnable: 'static + Send + std::future::Future<Output: Send + 'static> {}
3impl<T: 'static + Send + std::future::Future<Output: Send + 'static>> Spawnable for T {}
4
5/// An async func that accepts a generic argument
6/// and returns a generic value
7pub trait SpawnableWithReturn<Out: Spawnable>: 'static + Send + FnOnce() -> Out {}
8impl<Out: Spawnable, T: 'static + Send + FnOnce() -> Out> SpawnableWithReturn<Out> for T {}
9
10/// An async function that is able to be spawned, lowest common denominator as
11/// we cannot have a return type on WASM
12pub trait SpawnableNoReturn: 'static + Send + std::future::Future<Output = ()> {}
13impl<T: 'static + Send + std::future::Future<Output = ()> + ?Sized> SpawnableNoReturn for T {}