#coproduct #proc #macro #derive-debug #debugging #duplicates #variant

coproduct-idtype-macro

为coproduct crate编写的过程宏

1 个不稳定版本

0.1.0 2022年10月4日

5#coproduct

MIT 协议

3KB

Coproduct

你是否曾经遇到过这样的情况,想拥有两个仅少数变体不同的枚举?通常这会涉及到大量的重复和样板代码。不再是这样了!Coproduct允许你轻松地描述它们并在它们之间进行转换!

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<ABC> = Coproduct::inject(A);
    let abcd: Coproduct<Union<D, ABC>> = abc.embed();
    println!("{:?}", abcd);
}

更多详情请查看文档

依赖关系

~1.5MB
~36K SLoC