Skip to main content

ohkami/fang/
bound.rs

1use super::FangProcCaller;
2use std::future::Future;
3
4pub use dispatch::*;
5
6#[cfg(feature = "__rt_threaded__")]
7mod dispatch {
8    pub trait SendSyncOnThreaded: Send + Sync {}
9    impl<T: Send + Sync> SendSyncOnThreaded for T {}
10
11    #[allow(unused)]
12    pub trait SendOnThreaded: Send {}
13    impl<T: Send> SendOnThreaded for T {}
14}
15#[cfg(not(feature = "__rt_threaded__"))]
16mod dispatch {
17    pub trait SendSyncOnThreaded {}
18    impl<T> SendSyncOnThreaded for T {}
19
20    pub trait SendOnThreaded {}
21    impl<T> SendOnThreaded for T {}
22}
23
24#[allow(unused)]
25pub trait SendOnThreadedFuture<T>: Future<Output = T> + SendOnThreaded {}
26impl<T, F: Future<Output = T> + SendOnThreaded> SendOnThreadedFuture<T> for F {}
27
28pub(crate) trait FPCBound: FangProcCaller + SendSyncOnThreaded {}
29impl<T: FangProcCaller + SendSyncOnThreaded> FPCBound for T {}