6个版本
0.3.0 | 2024年3月1日 |
---|---|
0.2.3 | 2023年4月11日 |
0.2.2 | 2023年3月7日 |
0.2.1 | 2023年1月25日 |
0.1.0 | 2021年12月22日 |
#900 在 Rust模式
每月196次下载
用于 10 个crate(7个直接使用)
5KB
Enum Variants Strings
根据变种标识符生成枚举到字符串和字符串到枚举的转换
use enum_variants_strings::EnumVariantsStrings;
#[derive(Debug, PartialEq, EnumVariantsStrings)]
enum Variants {
X,
Y(i32),
#[enum_variants_strings_mappings("z", "zee")]
Z {
x: String,
y: String,
},
}
fn main() {
assert_eq!(Variants::from_str("x"), Ok(Variants::X));
assert_eq!(Variants::from_str("y"), Ok(Variants::Y(0)));
assert_eq!(
Variants::from_str("z"),
Ok(Variants::Z {
x: String::default(),
y: String::default(),
})
);
assert_eq!(Variants::X.to_str(), "x");
assert_eq!(
Variants::Z {
x: "abc".into(),
y: "xyz".into()
}
.to_str(),
"zee"
);
}
标识符映射
默认情况下,变种标识符/名称被转换为蛇形命名版本
这可以通过以下方式更改:#[enum_variants_strings_transform(transform = ...)]
use enum_variants_strings::EnumVariantsStrings;
#[derive(Debug, PartialEq, EnumVariantsStrings)]
#[enum_variants_strings_transform(transform = "none")]
enum EnumA {
Foo,
Bar,
}
有几个转换
"snake_case"
,用_
分隔大小写和数字边界(默认)"kebab_case"
,用-
代替下划线进行蛇形命名"upper_case"
,源标识符的大写"lower_case"
,源标识符的小写"none"
,从源标识符不进行映射
依赖项
~315–770KB
~18K SLoC