summaryrefslogtreecommitdiffstats
path: root/tokio/src/sync/mod.rs
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2019-11-18 07:00:55 -0800
committerGitHub <noreply@github.com>2019-11-18 07:00:55 -0800
commit0d38936b35779b604770120da2e98560bbb6241f (patch)
tree843d46e999becdb580cb02655b4290acadd64474 /tokio/src/sync/mod.rs
parent13b6e9939e062dc01bcf34abe3d75de4b66e20e1 (diff)
chore: refine feature flags (#1785)
Removes dependencies between Tokio feature flags. For example, `process` should not depend on `sync` simply because it uses the `mpsc` channel. Instead, feature flags represent **public** APIs that become available with the feature enabled. When the feature is not enabled, the functionality is removed. If another Tokio component requires the functionality, it is stays as `pub(crate)`. The threaded scheduler is now exposed under `rt-threaded`. This feature flag only enables the threaded scheduler and does not include I/O, networking, or time. Those features must be explictly enabled. A `full` feature flag is added that enables all features. `stdin`, `stdout`, `stderr` are exposed under `io-std`. Macros are used to scope code by feature flag.
Diffstat (limited to 'tokio/src/sync/mod.rs')
-rw-r--r--tokio/src/sync/mod.rs55
1 files changed, 26 insertions, 29 deletions
diff --git a/tokio/src/sync/mod.rs b/tokio/src/sync/mod.rs
index cf003816..40566c0c 100644
--- a/tokio/src/sync/mod.rs
+++ b/tokio/src/sync/mod.rs
@@ -13,43 +13,40 @@
//! - [watch](watch/index.html), a single-producer, multi-consumer channel that
//! only stores the **most recently** sent value.
-macro_rules! debug {
- ($($t:tt)*) => {
- if false {
- println!($($t)*);
- }
- }
-}
+cfg_sync! {
+ mod barrier;
+ pub use barrier::{Barrier, BarrierWaitResult};
-macro_rules! if_loom {
- ($($t:tt)*) => {{
- #[cfg(loom)]
- const LOOM: bool = true;
- #[cfg(not(loom))]
- const LOOM: bool = false;
-
- if LOOM {
- $($t)*
- }
- }}
-}
+ pub mod mpsc;
-mod barrier;
-pub use barrier::{Barrier, BarrierWaitResult};
+ mod mutex;
+ pub use mutex::{Mutex, MutexGuard};
-pub mod mpsc;
+ pub mod oneshot;
-mod mutex;
-pub use mutex::{Mutex, MutexGuard};
+ pub(crate) mod semaphore;
-pub mod oneshot;
+ mod task;
+ pub(crate) use task::AtomicWaker;
-pub mod semaphore;
+ pub mod watch;
+}
-mod task;
-pub(crate) use task::AtomicWaker;
+cfg_not_sync! {
+ cfg_atomic_waker! {
+ mod task;
+ pub(crate) use task::AtomicWaker;
+ }
-pub mod watch;
+ cfg_rt_threaded! {
+ pub(crate) mod oneshot;
+ }
+
+ cfg_signal! {
+ pub(crate) mod mpsc;
+ pub(crate) mod semaphore;
+ }
+}
/// Unit tests
#[cfg(test)]