Skip to content

Commit

Permalink
Merge #209
Browse files Browse the repository at this point in the history
209: add feature guards for unstable features r=yoshuawuyts a=yoshuawuyts

Makes sure unstable features aren't accidentally usable without their corresponding flags. Thanks!

Co-authored-by: Yoshua Wuyts <[email protected]>
Co-authored-by: Yoshua Wuyts <[email protected]>
  • Loading branch information
3 people authored Sep 18, 2019
2 parents bfd7af8 + bd43490 commit 91f002d
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 14 deletions.
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ matrix:
rust: nightly
os: linux
script:
- cargo doc --features docs
- cargo doc --features docs unstable

- name: book
rust: nightly
Expand All @@ -64,4 +64,4 @@ matrix:

script:
- cargo check --features unstable --all --benches --bins --examples --tests
- cargo test --features unstable --all
- cargo test --all --doc --features unstable
2 changes: 2 additions & 0 deletions src/future/timeout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ use crate::task::{Context, Poll};
/// # Ok(()) }) }
/// ```
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(any(feature = "unstable", feature = "docs"))]
pub async fn timeout<F, T>(dur: Duration, f: F) -> Result<T, TimeoutError>
where
F: Future<Output = T>,
Expand Down Expand Up @@ -69,6 +70,7 @@ impl<F: Future> Future for TimeoutFuture<F> {

/// An error returned when a future times out.
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(any(feature = "unstable", feature = "docs"))]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct TimeoutError {
_private: (),
Expand Down
14 changes: 9 additions & 5 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,20 +42,24 @@
#![doc(test(attr(allow(unused_extern_crates, unused_variables))))]
#![doc(html_logo_url = "https://async.rs/images/logo--hero.svg")]

use cfg_if::cfg_if;

pub mod fs;
pub mod future;
pub mod io;
pub mod net;
pub mod os;
pub mod prelude;
mod result;
pub mod stream;
pub mod sync;
pub mod task;
mod vec;

#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(feature = "unstable")]
pub mod pin;
cfg_if! {
if #[cfg(any(feature = "unstable", feature = "docs"))] {
pub mod pin;
mod vec;
mod result;
}
}

pub(crate) mod utils;
1 change: 1 addition & 0 deletions src/stream/double_ended_stream.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ use std::task::{Context, Poll};
///
/// [`Stream`]: trait.Stream.html
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(any(feature = "unstable", feature = "docs"))]
pub trait DoubleEndedStream: Stream {
/// Removes and returns an element from the end of the stream.
///
Expand Down
1 change: 1 addition & 0 deletions src/stream/from_stream.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ use std::pin::Pin;
///
/// [`IntoStream`]: trait.IntoStream.html
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(any(feature = "unstable", feature = "docs"))]
pub trait FromStream<T: Send> {
/// Creates a value from a stream.
///
Expand Down
1 change: 1 addition & 0 deletions src/stream/into_stream.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ use futures_core::stream::Stream;
///
/// [`FromStream`]: trait.FromStream.html
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(any(feature = "unstable", feature = "docs"))]
pub trait IntoStream {
/// The type of the elements being iterated over.
type Item;
Expand Down
20 changes: 14 additions & 6 deletions src/stream/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,26 @@
//! # }) }
//! ```
pub use double_ended_stream::DoubleEndedStream;
use cfg_if::cfg_if;

pub use empty::{empty, Empty};
pub use from_stream::FromStream;
pub use into_stream::IntoStream;
pub use once::{once, Once};
pub use repeat::{repeat, Repeat};
pub use stream::{Fuse, Scan, Stream, Take, Zip};

mod double_ended_stream;
mod empty;
mod from_stream;
mod into_stream;
mod once;
mod repeat;
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;
}
}
10 changes: 9 additions & 1 deletion src/stream/stream/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,19 @@ use min_by::MinByFuture;
use next::NextFuture;
use nth::NthFuture;

use super::from_stream::FromStream;
use std::cmp::Ordering;
use std::marker::PhantomData;
use std::pin::Pin;
use std::task::{Context, Poll};

use cfg_if::cfg_if;

cfg_if! {
if #[cfg(any(feature = "unstable", feature = "docs"))] {
use crate::stream::FromStream;
}
}

cfg_if! {
if #[cfg(feature = "docs")] {
#[doc(hidden)]
Expand Down Expand Up @@ -91,6 +96,7 @@ cfg_if! {
($a:lifetime, $o:ty) => (DynFuture<$a, $o>);
}
} else {
#[allow(unused_macros)]
macro_rules! dyn_ret {
($a:lifetime, $o:ty) => (Pin<Box<dyn core::future::Future<Output = $o> + Send + 'a>>)
}
Expand Down Expand Up @@ -748,6 +754,8 @@ pub trait Stream {
///
/// [`stream`]: trait.Stream.html#tymethod.next
#[must_use = "if you really need to exhaust the iterator, consider `.for_each(drop)` instead (TODO)"]
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
#[cfg(any(feature = "unstable", feature = "docs"))]
fn collect<'a, B>(self) -> dyn_ret!('a, B)
where
Self: futures_core::stream::Stream + Sized + Send + 'a,
Expand Down

0 comments on commit 91f002d

Please sign in to comment.