1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
// vim: tw=80
//! A library of [`Futures`]-aware locking primitives. These locks can safely be
//! used in asynchronous environments like [`Tokio`]. When they block, they'll
//! only block a single task, not the entire reactor.
//!
//! [`Futures`]: https://github.com/rust-lang-nursery/futures-rs
//! [`Tokio`]: https:/tokio.rs
extern crate futures;
#[cfg(feature = "tokio")] extern crate tokio_current_thread;
#[cfg(feature = "tokio")] extern crate tokio_executor;
mod mutex;
mod rwlock;
pub use mutex::{Mutex, MutexFut, MutexGuard};
pub use rwlock::{RwLock, RwLockReadFut, RwLockWriteFut,
RwLockReadGuard, RwLockWriteGuard};
use futures::sync::oneshot;
/// Poll state of all Futures in this crate.
enum FutState {
New,
Pending(oneshot::Receiver<()>),
Acquired
}