3个版本

0.1.2 2023年6月7日
0.1.1 2023年6月7日
0.1.0 2023年6月7日

2383 in Rust模式

MIT许可证

8KB
133

easy-conv

通过impl From<A> for B减少样板代码。

crates.io

快速开始

是否厌倦了这样的代码?

enum Choices {
    Alpha(TypeA),
    Bravo(TypeB),
    Charlie(TypeC),
}
impl From<TypeA> for Choices {
    fn from(val: TypeA) -> Self {
        Choices::Alpha(val)
    }
}
impl From<TypeB> for Choices {
    fn from(val: TypeB) -> Self {
        Choices::Bravo(val)
    }
}
impl From<TypeC> for Choices {
    fn from(val: TypeC) -> Self {
        Choices::Charlie(val)
    }
}

这个怎么样?

enum Choices {
    Alpha(TypeA),
    Bravo(TypeB),
    Charlie(TypeC),
}
newtype_wrap!(Choices, Alpha, TypeA);
newtype_wrap!(Choices, Bravo, TypeB);
newtype_wrap!(Choices, Charlie, TypeC);

更好吗?我确实是这么认为的。

还有newtype_wrap_from_anychained_into宏,它们各自做着自己独特的小事情。请参见文档

贡献

如果您有任何其他涉及大量样板代码的类型转换需求,请随时提出问题(或者更好的是,提出一个PR)。也许我们可以添加一个宏来使您和其他人的生活更轻松。

无运行时依赖