[][src]Crate futures_enum

#[derive(Future, Stream, Sink, AsyncRead, AsyncWrite)] for enums.

Examples

use futures::future::{self, Future};
use futures_enum::*;

#[derive(Future, Stream, Sink, AsyncRead, AsyncWrite)]
enum Either<A, B> {
    A(A),
    B(B),
}

fn foo(x: i32) -> impl Future<Output = i32> {
    if x < 0 {
        Either::A(future::lazy(|_| 1))
    } else {
        Either::B(future::ready(x))
    }
}

See auto_enums for how to automate patterns like this.

Supported traits

See auto_enums#11 for other traits.

Derive Macros

AsyncRead
AsyncWrite
Future
Sink
Stream