15 个版本 (5 个重大更改)
0.6.0 | 2024年7月26日 |
---|---|
0.5.3 | 2024年5月28日 |
0.5.1 | 2024年4月7日 |
0.5.0 | 2024年2月20日 |
0.1.0 | 2023年11月24日 |
#1875 在 过程宏 中
每月 282 次下载
在 3 crates 中使用
19KB
272 行
来,以及 Fro
为 Enum 提供自动实现 Display、FromStr 以及其他功能的实现
通过 cargo 可用
cargo add to_and_fro
实现
#[derive(ToAndFro)]
pub enum TestEnum {
ValueOne,
ValueTwo,
ValueThree
}
TestEnum::ValueOne.to_string() // "ValueOne"
TestEnum::from_str("ValueTwo") // TestEnum::ValueTwo
TestEnum::from_str("ValueFour") // anyhow::Error("Invalid variant ValueFour for enum TestEnum")
大小写
#[derive(ToAndFro)]
pub enum TestEnum {
#[input_case("snake")] // FromStr will parse only snake_case input
ValueOne,
#[output_case("kebab")] // Display methods will produce a kebab-case output
ValueTwo,
ValueThree // Defaults to as written input, and as-written output
}
FromStr 的回退
#[derive(ToAndFro)]
#[default("Fallback")]
pub enum TestEnum {
Fallback,
ValueOne,
ValueTwo,
ValueThree
}
TestEnum::from_str("ValueFour") // TestEnum::Fallback
不允许字段解析为 FromStr
#[derive(ToAndFro)]
pub enum TestEnum {
#[reject]
ValueOne,
ValueTwo
}
TestEnum::from_str("ValueOne") // anyhow::Error("Invalid variant ValueOne for enum TestEnum")
从 serde
实现 Serialize
和 Deserialize
#[derive(ToAndFro)]
#[serde]
pub enum TestEnum {
ValueOne,
ValueTwo,
ValueThree
}
支持的案例列表
kebab
(heck)pascal
(heck)snake
(heck)title
(heck)train
(heck)lower_camel
(heck)upper_camel
(heck)shouty_kebab
(heck)shouty_snake
(heck)upper
(大写)lower
(小写)百分比
反馈
我非常感谢所有形式的反馈。
如果您想特别提交一个 错误报告 或 功能建议,请通过 issues 部分的模板进行。
相关
- Synstructure,一个crate,提供用于匹配枚举变体的辅助类型,以及以泛型方式提取派生自Struct或Enum的每个字段的绑定。
- Heck,一个crate,旨在提供常见情况(如驼峰式和蛇形命名)之间的案例转换。它旨在具有Unicode意识、内部一致性和合理的性能。
依赖项
~0.9–1.8MB
~39K SLoC