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