     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

    //! Core traits and types for asynchronous operations in Rust.

    #![cfg_attr(feature = "cfg-target-has-atomic", feature(cfg_target_has_atomic))]

    #![cfg_attr(not(feature = "std"), no_std)]

    #![warn(missing_docs, missing_debug_implementations, rust_2018_idioms, unreachable_pub)]
    // It cannot be included in the published code because this lints have false positives in the minimum required version.
    #![cfg_attr(test, warn(single_use_lifetimes))]
    #![warn(clippy::all)]
    #![doc(test(attr(deny(warnings), allow(dead_code, unused_assignments, unused_variables))))]

    #[cfg(all(feature = "cfg-target-has-atomic", not(feature = "unstable")))]
    compile_error!("The `cfg-target-has-atomic` feature requires the `unstable` feature as an explicit opt-in to unstable features");

    #[cfg(feature = "alloc")]
    extern crate alloc;

    pub mod future;
    #[doc(hidden)] pub use self::future::{Future, FusedFuture, TryFuture};

    pub mod stream;
    #[doc(hidden)] pub use self::stream::{Stream, FusedStream, TryStream};

    #[macro_use]
    pub mod task;

    // Not public API.
    #[doc(hidden)]
    pub mod __private {
        pub use core::task::Poll;
    }