2 个版本
0.1.1 | 2022年11月19日 |
---|---|
0.1.0 | 2022年11月19日 |
#115 in #macros
6KB
76 代码行
一个简单的枚举变体提取器
可以提取一个(可变的)引用或将字段转换为元组。当变体与预期不同时,返回 None
。
示例
use digenum::DigEnum;
use std::io::Read;
#[derive(DigEnum)]
enum Login<T: Read> {
Local,
Stream(T)
Token([u8; 64]),
UserAndPasswd(String, String),
}
映射到
变体 | 引用 | 可变引用 | 拥有 |
---|---|---|---|
局部 |
None | None | None |
流(T) |
as_Stream-> Option<&T> |
as_mut_Stream-> Option<&mutT> |
into_Stream-> Option<T> |
令牌([u8; 64]) |
as_Token-> Option<&[u8; 64]> |
as_mut_Token-> Option<&mut [u8; 64]> |
into_Token-> Option<[u8; 64]> |
用户和密码(String, String) |
as_UserAndPasswd-> Option<(&String,&String)> |
as_mut_UserAndPasswd-> Option<(&mutString,&mutString)> |
into_UserAndPasswd-> Option<(String, String)> |
"为什么不用蛇形命名法?"
考虑这个示例
use digenum::DigEnum;
#[derive(DigEnum)]
enum Foo {
FOO,
foo,
Foo
}
我应该如何处理它?
支持
- 空枚举
- 空变体
- 单字段变体
- 多字段变体
- 不同大小写的变体(如
Foo::FOO
和Foo::foo
) - 泛型变体
- 单元变体
- 类似于结构的变体
依赖
~1.5MB
~35K SLoC