| #![allow(dead_code)] |
| |
| #[maybe_async::maybe_async] |
| trait Trait { |
| fn sync_fn() {} |
| |
| async fn declare_async(&self); |
| |
| async fn async_fn(&self) { |
| self.declare_async().await |
| } |
| } |
| |
| #[maybe_async::maybe_async] |
| pub trait PubTrait { |
| fn sync_fn() {} |
| |
| async fn declare_async(&self); |
| |
| async fn async_fn(&self) { |
| self.declare_async().await |
| } |
| } |
| |
| #[maybe_async::maybe_async] |
| pub(crate) trait PubCrateTrait { |
| fn sync_fn() {} |
| |
| async fn declare_async(&self); |
| |
| async fn async_fn(&self) { |
| self.declare_async().await |
| } |
| } |
| |
| #[maybe_async::maybe_async] |
| async fn async_fn() {} |
| |
| #[maybe_async::maybe_async] |
| pub async fn pub_async_fn() {} |
| |
| #[maybe_async::maybe_async] |
| pub(crate) async fn pub_crate_async_fn() {} |
| |
| #[maybe_async::maybe_async] |
| unsafe fn unsafe_fn() {} |
| |
| struct Struct; |
| |
| #[cfg(feature = "is_sync")] |
| #[maybe_async::must_be_sync] |
| impl Struct { |
| fn sync_fn_inherent() {} |
| |
| async fn declare_async_inherent(&self) {} |
| |
| async fn async_fn_inherent(&self) { |
| async { self.declare_async_inherent().await }.await |
| } |
| } |
| |
| #[cfg(feature = "is_sync")] |
| #[maybe_async::must_be_sync] |
| impl Trait for Struct { |
| fn sync_fn() {} |
| |
| async fn declare_async(&self) {} |
| |
| async fn async_fn(&self) { |
| async { self.declare_async().await }.await |
| } |
| } |
| |
| #[cfg(feature = "is_sync")] |
| fn main() -> std::result::Result<(), ()> { |
| let s = Struct; |
| s.declare_async_inherent(); |
| s.async_fn_inherent(); |
| s.declare_async(); |
| s.async_fn(); |
| async_fn(); |
| pub_async_fn(); |
| Ok(()) |
| } |
| |
| #[cfg(not(feature = "is_sync"))] |
| #[async_std::main] |
| async fn main() {} |