3个不稳定版本
0.3.0 | 2023年11月15日 |
---|---|
0.2.1 | 2021年3月3日 |
0.2.0 | 2019年5月13日 |
#330 in 过程宏
1,810 每月下载量
用于 18 crates
14KB
214 代码行
Frunk 枚举支持
用法
这些crates增强了frunk crate,允许将enum
以及struct
进行transmogrification。有关transmogrification和基于其的LabelledGeneric
特质更多信息,请参阅https://docs.rs/frunk/latest/frunk/#transmogrifying和https://docs.rs/frunk/latest/frunk/labelled/trait.LabelledGeneric.html。
为了利用此功能,您需要对自有的枚举
-
在
Cargo.toml
中将frunk-enum-derive
添加为[dev-dependency]
-
使用自定义派生标记枚举
#[derive(LabelledGenericEnum)] enum Foo { Bar(String), Baz { name: String, id: Identity }, }
-
将
frunk-enum-core
和frunk-core
crates添加为[dependency]
条目到您的Cargo.toml
-
然后(假设有一个与
Foo
具有相同结构的NewFoo
枚举)您可以编写let foo = Foo::Baz { name: "Andy".into(), id: Identity }; let new_foo: NewFoo = foo.transmogrify();
这是通过为Foo
派生一个LabelledGeneric
实现来实现的,它允许将实例转换为泛型求和类型并从泛型求和类型转换。核心crate提供了在变体体递归可transmogrification之间进行转换的工具。这允许在类型之间进行任意深度的转换,特别是在两个类型都是来自某些公共输入文件自动生成的,但被认为是不同类型的情况下非常有用(例如,因为它们在不同的crate中)。
贡献
感谢您对frunk-enum感兴趣,我们欢迎所有贡献,无论是问题报告、功能请求还是代码贡献。
问题贡献
在提交问题时,请提供问题描述、frunk和frunk-enum的版本以及展示问题的示例代码。
代码贡献
如果您希望向frunk-enum贡献代码,您可以通过github的pull request来这样做,但是您需要签署每个提交,以表明您遵守DCO条款。
lib.rs
:
此crate添加了LabelledGenericEnum
derive,它将枚举与frunk转换函数集成。
依赖项
~2MB
~48K SLoC