#![feature(futures_api)]
#![cfg_attr(not(feature = "std"), no_std)]
#![warn(missing_docs, missing_debug_implementations)]
#![deny(bare_trait_objects)]
#![doc(html_root_url = "https://rust-lang-nursery.github.io/futures-api-docs/0.3.0-alpha.11/futures")]
#![cfg_attr(feature = "nightly", feature(cfg_target_has_atomic))]
#[doc(hidden)] pub use futures_util::core_reexport;
#[doc(hidden)] pub use futures_core::future::Future;
#[doc(hidden)] pub use futures_core::future::TryFuture;
#[doc(hidden)] pub use futures_util::future::FutureExt;
#[doc(hidden)] pub use futures_util::try_future::TryFutureExt;
#[doc(hidden)] pub use futures_core::stream::Stream;
#[doc(hidden)] pub use futures_core::stream::TryStream;
#[doc(hidden)] pub use futures_util::stream::StreamExt;
#[doc(hidden)] pub use futures_util::try_stream::TryStreamExt;
#[doc(hidden)] pub use futures_sink::Sink;
#[doc(hidden)] pub use futures_util::sink::SinkExt;
#[doc(hidden)] pub use futures_core::task::Poll;
pub use futures_util::{
try_ready, try_poll, ready,
};
#[cfg(feature = "std")]
pub use futures_util::{
join, try_join, pending, poll,
};
#[cfg(feature = "std")]
pub mod channel {
pub use futures_channel::{oneshot, mpsc};
}
#[cfg(feature = "compat")]
pub mod compat {
pub use futures_util::compat::{
Compat,
Compat01As03,
Executor01Future,
Executor01As03,
Executor01CompatExt,
Future01CompatExt,
Stream01CompatExt,
};
#[cfg(feature = "tokio-compat")]
pub use futures_util::compat::TokioDefaultSpawner;
}
#[cfg(feature = "std")]
pub mod executor {
pub use futures_executor::{
BlockingStream,
Enter, EnterError,
LocalSpawner, LocalPool,
ThreadPool, ThreadPoolBuilder,
block_on, block_on_stream, enter,
};
}
pub mod future {
pub use futures_core::future::{
Future, TryFuture, FusedFuture,
FutureObj, LocalFutureObj, UnsafeFutureObj,
};
pub use futures_util::future::{
empty, Empty,
lazy, Lazy,
maybe_done, MaybeDone,
poll_fn, PollFn,
ready, ok, err, Ready,
OptionFuture,
FutureExt,
FlattenStream, Flatten, Fuse, Inspect, IntoStream, Join, Join3, Join4,
Join5, Map, Then,
};
#[cfg(feature = "std")]
pub use futures_util::future::{
abortable, Abortable, AbortHandle, AbortRegistration, Aborted,
Remote, RemoteHandle,
CatchUnwind, Shared,
join_all, JoinAll,
};
pub use futures_util::try_future::{
TryFutureExt,
AndThen, ErrInto, FlattenSink, IntoFuture, MapErr, MapOk, OrElse,
UnwrapOrElse,
TryJoin, TryJoin3, TryJoin4, TryJoin5,
};
}
#[cfg(feature = "std")]
pub mod io {
pub use futures_io::{
Error, Initializer, IoVec, ErrorKind, AsyncRead, AsyncWrite, Result
};
pub use futures_util::io::{
AsyncReadExt, AsyncWriteExt, AllowStdIo, Close, CopyInto, Flush,
Read, ReadExact, ReadHalf, ReadToEnd, Window, WriteAll, WriteHalf,
};
}
#[cfg(feature = "std")]
pub mod lock {
pub use futures_util::lock::{Mutex, MutexLockFuture, MutexGuard};
}
pub mod prelude {
pub use crate::future::{self, Future, TryFuture, FutureExt, TryFutureExt};
pub use crate::stream::{self, Stream, TryStream, StreamExt, TryStreamExt};
pub use crate::sink::{self, Sink, SinkExt};
#[cfg(feature = "std")]
pub use crate::io::{ AsyncRead, AsyncWrite, AsyncReadExt, AsyncWriteExt };
}
pub mod sink {
pub use futures_sink::Sink;
pub use futures_util::sink::{
Close, Flush, Send, SendAll, SinkErrInto, SinkMapErr, With,
SinkExt, Fanout, Drain, DrainError, drain,
};
#[cfg(feature = "std")]
pub use futures_util::sink::Buffer;
}
pub mod stream {
pub use futures_core::stream::{
Stream, TryStream, FusedStream,
StreamObj, LocalStreamObj, UnsafeStreamObj,
};
pub use futures_util::stream::{
iter, Iter,
repeat, Repeat,
empty, Empty,
once, Once,
poll_fn, PollFn,
unfold, Unfold,
StreamExt,
Chain, Concat, Filter, FilterMap, Flatten, Fold, Forward, ForEach, Fuse,
StreamFuture, Inspect, Map, Next, Peekable, Select, Skip, SkipWhile,
Take, TakeWhile, Then, Zip
};
#[cfg(feature = "std")]
pub use futures_util::stream::{
futures_ordered, FuturesOrdered,
futures_unordered, FuturesUnordered,
BufferUnordered, Buffered, CatchUnwind, Chunks, Collect, SplitStream,
SplitSink, ReuniteError,
select_all, SelectAll,
};
pub use futures_util::try_stream::{
TryStreamExt,
TryNext, TryForEach, ErrInto,
TryFold, TrySkipWhile,
IntoStream,
};
#[cfg(feature = "std")]
pub use futures_util::try_stream::{
TryCollect, TryBufferUnordered,
};
}
pub mod task {
pub use futures_core::task::{
Poll, Spawn, LocalSpawn, SpawnError,
Waker, LocalWaker, UnsafeWake,
};
#[cfg(feature = "std")]
pub use futures_core::task::{
Wake, local_waker, local_waker_from_nonlocal
};
#[cfg(feature = "std")]
pub use futures_util::task::{
LocalWakerRef, local_waker_ref, local_waker_ref_from_nonlocal,
SpawnExt, LocalSpawnExt,
};
pub use futures_util::task::{
noop_local_waker, noop_local_waker_ref,
};
#[cfg_attr(
feature = "nightly",
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
)]
pub use futures_util::task::AtomicWaker;
}
#[cfg(feature = "std")]
#[doc(hidden)]
pub use futures_util::rand_reexport;
#[cfg(feature = "std")]
#[doc(hidden)]
pub mod inner_select {
pub use futures_util::select;
}
#[cfg(feature = "std")]
futures_util::document_select_macro! {
#[macro_export]
macro_rules! select { ($($tokens:tt)*) => {
$crate::inner_select::select! {
futures_crate_path ( ::futures )
$( $tokens )*
}
}
}
}