Function futures_shuttle::shuttle [] [src]

pub fn shuttle<T>(item: T) -> (Shuttle<T>, Shuttle<T>)

Creates a new shuttle synchronization object for sharing values between two asynchronous tasks.

Each half can be separately owned and sent across tasks.

Examples

extern crate futures;
extern crate futures_shuttle;

use futures_shuttle::shuttle;
use futures::*;

fn main() {
    let (mut left, mut right) = shuttle(42);

    assert!(left.is_mine());
    assert!(!right.is_mine());
    assert_eq!(left.data(), 42);
    *left.data() = 84;
    left.send();
    assert!(!left.is_mine());
    assert!(right.is_mine());
    assert_eq!(right.data(), 84);
}