blob: 33b8248e59a19a2269e9f3e30dadffc9aad2eb25 [file] [log] [blame]
James Farrell917a5f32023-08-16 18:19:42 +00001#![allow(dead_code)]
2
3use maybe_async::maybe_async;
4
5#[maybe_async(Send)]
6trait Trait {
7 fn sync_fn() {}
8
9 async fn declare_async(&self);
10
11 async fn async_fn(&self) {
12 self.declare_async().await
13 }
14}
15
16#[maybe_async(?Send)]
17pub trait PubTrait {
18 fn sync_fn() {}
19
20 async fn declare_async(&self);
21
22 async fn async_fn(&self) {
23 self.declare_async().await
24 }
25}
26
27#[maybe_async]
28pub(crate) trait PubCrateTrait {
29 fn sync_fn() {}
30
31 async fn declare_async(&self);
32
33 async fn async_fn(&self) {
34 self.declare_async().await
35 }
36}
37
38#[maybe_async]
39async fn async_fn() {}
40
41#[maybe_async]
42pub async fn pub_async_fn() {}
43
44#[maybe_async]
45pub(crate) async fn pub_crate_async_fn() {}
46
47#[maybe_async]
48unsafe fn unsafe_fn() {}
49
50struct Struct;
51
52#[maybe_async]
53impl Trait for Struct {
54 fn sync_fn() {}
55
56 async fn declare_async(&self) {}
57
58 async fn async_fn(&self) {
59 async { self.declare_async().await }.await
60 }
61}
62
63#[cfg(feature = "is_sync")]
64fn main() -> std::result::Result<(), ()> {
65 let s = Struct;
66 s.declare_async();
67 s.async_fn();
68 async_fn();
69 pub_async_fn();
70 Ok(())
71}
72
73#[cfg(not(feature = "is_sync"))]
74#[async_std::main]
75async fn main() {
76 let s = Struct;
77 s.declare_async().await;
78 s.async_fn().await;
79 async_fn().await;
80 pub_async_fn().await;
81}