#future #async #either #generate

one-of-futures

Future-aware Either-like type with multiple variants

5 releases

0.1.4 May 28, 2020
0.1.3 Nov 24, 2019
0.1.2 Nov 22, 2019
0.1.1 Nov 15, 2019
0.1.0 Nov 15, 2019

#16 in #either


Used in linked-futures

MIT license

20KB
290 lines

one-of-futures

Crates.io MIT licensed Build Status

Overview

This crate implements several custom future-aware OneOf types, which behaves similarly to Either type, but suitable for more than two variants.

It also exposes impl_one_of! macro, which allows generating custom OneOf type, with the desired number and names of variants

Features

futures_03 enables support for futures 0.3 (core/std), enabled by default

sink enables support for futures 0.3 (core/std)'s Sink, enabled by default

tokio-io enabled support for tokio 0.2's AsyncRead and AsyncWrite

futures_01 enables support for futures 0.1 under the futures_01 module

Usage

Add this to your Cargo.toml:

[dependencies]
one-of-futures = "0.1"

Example

use one_of_futures::impl_one_of;

impl_one_of!(MyEither;
  Left,
  Right
);

fn main() {
  let either = match 1 {
      0 => MyEither::Left(async { 1 }),
      _ => MyEither::Right(async { 2 }),
  };
}

Dependencies

~0–0.8MB
~12K SLoC