Skip to content

Commit bf092b3

Browse files
committed
Move AtomicWaker to futures-core
... so `AtomicWaker` could be used inside `futures-channel`. `AtomicWaker` is still accessible to users only from `futures-util`.
1 parent cbcf1fe commit bf092b3

File tree

7 files changed

+25
-10
lines changed

7 files changed

+25
-10
lines changed

futures-core/Cargo.toml

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
cargo-features = ["rename-dependency"]
2+
13
[package]
24
name = "futures-core-preview"
35
edition = "2018"
@@ -17,6 +19,10 @@ name = "futures_core"
1719
[features]
1820
default = ["std"]
1921
std = ["either/use_std"]
22+
nightly = []
2023

2124
[dependencies]
2225
either = { version = "1.4", default-features = false, optional = true }
26+
27+
[dev-dependencies]
28+
futures-preview = { path = "../futures", version = "0.3.0-alpha.9" }

futures-core/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
//! Core traits and types for asynchronous operations in Rust.
22
33
#![feature(pin, arbitrary_self_types, futures_api)]
4+
#![cfg_attr(feature = "nightly", feature(cfg_target_has_atomic))]
45

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

futures-util/src/task/atomic_waker.rs renamed to futures-core/src/task/__internal/atomic_waker.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use core::fmt;
22
use core::cell::UnsafeCell;
33
use core::sync::atomic::AtomicUsize;
44
use core::sync::atomic::Ordering::{Acquire, Release, AcqRel};
5-
use futures_core::task::{LocalWaker, Waker};
5+
use crate::task::{LocalWaker, Waker};
66

77
/// A synchronization primitive for task wakeup.
88
///
@@ -170,8 +170,9 @@ impl AtomicWaker {
170170
///
171171
/// ```
172172
/// #![feature(pin, arbitrary_self_types, futures_api)]
173-
/// use futures::future::Future;
174-
/// use futures::task::{LocalWaker, Poll, AtomicWaker};
173+
/// use futures_core::future::Future;
174+
/// use futures_core::task::__internal::AtomicWaker;
175+
/// use futures_core::task::{LocalWaker, Poll};
175176
/// use std::sync::atomic::AtomicBool;
176177
/// use std::sync::atomic::Ordering::SeqCst;
177178
/// use std::pin::Pin;
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#[cfg_attr(
2+
feature = "nightly",
3+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
4+
)]
5+
mod atomic_waker;
6+
#[cfg_attr(
7+
feature = "nightly",
8+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
9+
)]
10+
pub use self::atomic_waker::AtomicWaker;

futures-core/src/task/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//! Task notification.
22
33
mod spawn;
4+
#[doc(hidden)]
5+
pub mod __internal;
46
pub use self::spawn::{Spawn, LocalSpawn, SpawnError};
57

68
pub use core::task::{Poll, Waker, LocalWaker, UnsafeWake};

futures-util/src/task/mod.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,4 @@ pub use self::local_waker_ref::{local_waker_ref, local_waker_ref_from_nonlocal,
1515
feature = "nightly",
1616
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
1717
)]
18-
mod atomic_waker;
19-
#[cfg_attr(
20-
feature = "nightly",
21-
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
22-
)]
23-
pub use self::atomic_waker::AtomicWaker;
18+
pub use futures_core::task::__internal::AtomicWaker;

futures/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ futures-test-preview = { path = "../futures-test", version = "0.3.0-alpha.9", de
3636
tokio = "0.1.11"
3737

3838
[features]
39-
nightly = ["futures-util-preview/nightly"]
39+
nightly = ["futures-util-preview/nightly", "futures-core-preview/nightly"]
4040
std = ["futures-core-preview/std", "futures-executor-preview/std", "futures-io-preview/std", "futures-sink-preview/std", "futures-util-preview/std"]
4141
default = ["std"]
4242
compat = ["std", "futures-util-preview/compat"]

0 commit comments

Comments
 (0)