1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#![doc = include_str!("../README.md")]
mod future;
use crate::future::Future;
pub use crate::future::{Getter, Setter};
use std::sync::{atomic::AtomicBool, Arc};
/// Creates a new future
pub fn new<T>() -> (Setter<T>, Getter<T>) {
// Create the inner cell
let future = Arc::new(Future::new());
let cancelled = Arc::new(AtomicBool::default());
// Create the setter/getter pair
let setter = Setter::new(future.clone(), cancelled.clone());
let getter = Getter::new(future, cancelled);
(setter, getter)
}