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
50
51
#[cfg(not(madsim))]
pub use tokio::*;

#[cfg(madsim)]
pub use self::sim::*;
#[cfg(madsim)]
mod sim {
    // simulated API
    pub use madsim::net;
    #[cfg(feature = "signal")]
    pub use madsim::signal;
    #[cfg(feature = "rt")]
    pub use madsim::task::spawn;
    #[cfg(feature = "time")]
    pub use madsim::time;
    #[cfg(all(feature = "rt", feature = "macros"))]
    pub use madsim::{tokio_main as main, tokio_test as test};
    // for macro use
    #[cfg(all(feature = "rt", feature = "macros"))]
    #[doc(hidden)]
    pub use madsim;
    #[cfg(feature = "rt")]
    pub mod runtime;

    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 = "rt")]
        pub mod futures {
            pub use tokio::task::futures::TaskLocalFuture;
        }
    }

    // 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};
}