Coproduct

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};

[derive(Debug)]

struct A;

[derive(Debug)]

struct B;

[derive(Debug)]

struct C;

[derive(Debug)]

struct D;

type ABC = MkUnion!(A, B, C);

fn main() { let abc: Coproduct = Coproduct::inject(A); let abcd: Coproduct> = abc.embed(); println!("{:?}", abcd); } ```

Find out more in the documentation.