coalesce 0.1.1

Combine disjoint types that share common traits.

Crate coalesce [] [src]

Coalesce allows you to unify disjoint types on the stack.

It is often useful to return different implementations of a common trait such as Iterator or Read from conditional branches. The coalesce! macro makes it easy to unify them into a common trait object:

#[macro_use]
extern crate coalesce;

use coalesce::Coalesce2;
use std::iter::repeat;

let mut i = if some_condition() {
    Coalesce2::A(repeat(5u32).take(2))
} else {
    Coalesce2::B(0u32..8)
};
let i = coalesce!(2 => |ref mut i| i as &mut Iterator<Item=u32>);

for x in i {
    println!("{}", x);
}

Macros

coalesce!

Coalesces multiple values into one common (often borrowed) type.

Enums

Coalesce0
Coalesce1
Coalesce2
Coalesce3
Coalesce4
Coalesce5
Coalesce6
Coalesce7
Coalesce8
Coalesce9