Expand description
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.