Have you ever found yourself in a situation where you'd like to have two enums where only a few variants differ? Usually that involves a lot of duplication and boilerplate. Not any more! Coproducts allow you to describe them and convert between them effortlessly!
```Rust use coproduct::{Coproduct, MkUnion, Union};
struct A;
struct B;
struct C;
struct D;
type ABC = MkUnion!(A, B, C);
fn main() {
let abc: Coproduct
Find out more in the documentation.