2
0
Fork 1
mirror of https://github.com/async-rs/async-std.git synced 2025-01-21 04:53:50 +00:00

add feature guards for unstable features

Signed-off-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
This commit is contained in:
Yoshua Wuyts 2019-09-18 01:26:04 +02:00
parent c8475ca95e
commit 488c90c0c4
No known key found for this signature in database
GPG key ID: 24EA8164F96777ED
7 changed files with 36 additions and 9 deletions

View file

@ -29,6 +29,7 @@ use crate::task::{Context, Poll};
/// # Ok(()) }) } /// # Ok(()) }) }
/// ``` /// ```
#[cfg_attr(feature = "docs", doc(cfg(unstable)))] #[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(feature = "unstable")]
pub async fn timeout<F, T>(dur: Duration, f: F) -> Result<T, TimeoutError> pub async fn timeout<F, T>(dur: Duration, f: F) -> Result<T, TimeoutError>
where where
F: Future<Output = T>, F: Future<Output = T>,
@ -69,6 +70,7 @@ impl<F: Future> Future for TimeoutFuture<F> {
/// An error returned when a future times out. /// An error returned when a future times out.
#[cfg_attr(feature = "docs", doc(cfg(unstable)))] #[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(feature = "unstable")]
#[derive(Clone, Copy, Debug, Eq, PartialEq)] #[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct TimeoutError { pub struct TimeoutError {
_private: (), _private: (),

View file

@ -42,17 +42,24 @@
#![doc(test(attr(allow(unused_extern_crates, unused_variables))))] #![doc(test(attr(allow(unused_extern_crates, unused_variables))))]
#![doc(html_logo_url = "https://async.rs/images/logo--hero.svg")] #![doc(html_logo_url = "https://async.rs/images/logo--hero.svg")]
use cfg_if::cfg_if;
pub mod fs; pub mod fs;
pub mod future; pub mod future;
pub mod io; pub mod io;
pub mod net; pub mod net;
pub mod os; pub mod os;
pub mod prelude; pub mod prelude;
mod result;
pub mod stream; pub mod stream;
pub mod sync; pub mod sync;
pub mod task; pub mod task;
mod vec;
cfg_if! {
if #[cfg(any(feature = "unstable", feature = "docs"))] {
mod vec;
mod result;
}
}
#[cfg_attr(feature = "docs", doc(cfg(unstable)))] #[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(feature = "unstable")] #[cfg(feature = "unstable")]

View file

@ -11,6 +11,7 @@ use std::task::{Context, Poll};
/// ///
/// [`Stream`]: trait.Stream.html /// [`Stream`]: trait.Stream.html
#[cfg_attr(feature = "docs", doc(cfg(unstable)))] #[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(feature = "unstable")]
pub trait DoubleEndedStream: Stream { pub trait DoubleEndedStream: Stream {
/// Removes and returns an element from the end of the stream. /// Removes and returns an element from the end of the stream.
/// ///

View file

@ -11,6 +11,7 @@ use std::pin::Pin;
/// ///
/// [`IntoStream`]: trait.IntoStream.html /// [`IntoStream`]: trait.IntoStream.html
#[cfg_attr(feature = "docs", doc(cfg(unstable)))] #[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(feature = "unstable")]
pub trait FromStream<T: Send> { pub trait FromStream<T: Send> {
/// Creates a value from a stream. /// Creates a value from a stream.
/// ///

View file

@ -14,6 +14,7 @@ use futures_core::stream::Stream;
/// ///
/// [`FromStream`]: trait.FromStream.html /// [`FromStream`]: trait.FromStream.html
#[cfg_attr(feature = "docs", doc(cfg(unstable)))] #[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(feature = "unstable")]
pub trait IntoStream { pub trait IntoStream {
/// The type of the elements being iterated over. /// The type of the elements being iterated over.
type Item; type Item;

View file

@ -21,18 +21,26 @@
//! # }) } //! # }) }
//! ``` //! ```
pub use double_ended_stream::DoubleEndedStream; use cfg_if::cfg_if;
pub use empty::{empty, Empty}; pub use empty::{empty, Empty};
pub use from_stream::FromStream;
pub use into_stream::IntoStream;
pub use once::{once, Once}; pub use once::{once, Once};
pub use repeat::{repeat, Repeat}; pub use repeat::{repeat, Repeat};
pub use stream::{Fuse, Scan, Stream, Take, Zip}; pub use stream::{Fuse, Scan, Stream, Take, Zip};
mod double_ended_stream;
mod empty; mod empty;
mod from_stream;
mod into_stream;
mod once; mod once;
mod repeat; mod repeat;
mod stream; mod stream;
cfg_if! {
if #[cfg(any(feature = "unstable", feature = "docs"))] {
mod double_ended_stream;
mod from_stream;
mod into_stream;
pub use double_ended_stream::DoubleEndedStream;
pub use from_stream::FromStream;
pub use into_stream::IntoStream;
}
}

View file

@ -52,7 +52,6 @@ use min_by::MinByFuture;
use next::NextFuture; use next::NextFuture;
use nth::NthFuture; use nth::NthFuture;
use super::from_stream::FromStream;
use std::cmp::Ordering; use std::cmp::Ordering;
use std::marker::PhantomData; use std::marker::PhantomData;
use std::pin::Pin; use std::pin::Pin;
@ -60,6 +59,12 @@ use std::task::{Context, Poll};
use cfg_if::cfg_if; use cfg_if::cfg_if;
cfg_if! {
if #[cfg(any(feature = "unstable", feature = "docs"))] {
use crate::stream::FromStream;
}
}
cfg_if! { cfg_if! {
if #[cfg(feature = "docs")] { if #[cfg(feature = "docs")] {
#[doc(hidden)] #[doc(hidden)]
@ -748,6 +753,8 @@ pub trait Stream {
/// ///
/// [`stream`]: trait.Stream.html#tymethod.next /// [`stream`]: trait.Stream.html#tymethod.next
#[must_use = "if you really need to exhaust the iterator, consider `.for_each(drop)` instead (TODO)"] #[must_use = "if you really need to exhaust the iterator, consider `.for_each(drop)` instead (TODO)"]
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(feature = "unstable")]
fn collect<'a, B>(self) -> dyn_ret!('a, B) fn collect<'a, B>(self) -> dyn_ret!('a, B)
where where
Self: futures_core::stream::Stream + Sized + Send + 'a, Self: futures_core::stream::Stream + Sized + Send + 'a,