1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#[cfg(not(madsim))]
pub use tokio::*;

#[cfg(madsim)]
pub use self::sim::*;
#[cfg(madsim)]
mod sim {
    // no mod `runtime`

    // simulated API
    pub use madsim::net;
    #[cfg(feature = "rt")]
    pub use madsim::task::spawn;
    #[cfg(feature = "time")]
    pub use madsim::time;
    #[cfg(all(feature = "rt", feature = "macros"))]
    pub use madsim::{main, test};

    pub mod task {
        #[cfg(tokio_unstable)]
        pub use madsim::task::yield_now as consume_budget;

        pub use madsim::task::*;
        #[cfg(feature = "rt")]
        pub use tokio::task::LocalKey;
    }

    #[cfg(feature = "signal")]
    pub mod signal {
        /// Completes when a "ctrl-c" notification is sent to the process.
        pub async fn ctrl_c() -> std::io::Result<()> {
            futures_lite::future::pending().await
        }
    }

    // not simulated API
    // TODO: simulate `fs`
    #[cfg(feature = "fs")]
    pub use tokio::fs;
    #[cfg(feature = "process")]
    pub use tokio::process;
    #[cfg(feature = "sync")]
    pub use tokio::sync;
    #[cfg(feature = "rt")]
    pub use tokio::task_local;
    pub use tokio::{io, pin};
    #[cfg(feature = "macros")]
    pub use tokio::{join, select, try_join};
}