3 个不稳定版本
0.23.0 | 2021年12月25日 |
---|---|
0.21.2 | 2021年8月7日 |
0.21.1 | 2021年8月7日 |
#6 in #过程宏
47,351 个月下载量
用于 71 个crate(通过 sea-strum)
87KB
1.5K SLoC
Strum
Strum 是一组用于在Rust中更轻松地处理枚举和字符串的宏和特质。
兼容性
Strum 目前支持 rustc >= 1.32.0 的版本。欢迎提交改善与旧版本兼容性的Pull Requests。项目目标是发布后至少支持2年的Rust版本,并且更喜欢支持更长时间,因为该项目变化缓慢。
将Strum包含到您的项目中
通过在您的Cargo.toml中添加以下行将strum和strum_macros导入到您的项目中。strum_macros包含Strum中所有特质的必要宏。
[dependencies]
strum = "0.23"
strum_macros = "0.23"
# You can also use the "derive" feature, and import the macros directly from "strum"
# strum = { version = "0.23", features = ["derive"] }
Strum宏
Strum实现了以下宏
宏 | 描述 |
---|---|
EnumString | 根据其名称将字符串转换为枚举变体。 |
Display | 将枚举变体转换为字符串 |
FromRepr | 从整数转换为枚举。 |
AsRefStr | 为MyEnum 实现AsRef<str> |
IntoStaticStr | 在枚举上实现 From<MyEnum> for &'static str |
EnumVariantNames | 添加一个关联的VARIANTS 常量,它是一个包含判别符名称的数组 |
EnumIter | 创建一个新的类型,该类型迭代枚举的变体。 |
EnumProperty | 为枚举变体添加自定义属性。 |
EnumMessage | 向枚举变体添加详尽的消息。 |
EnumDiscriminants | 生成一个只包含判别符名称的新类型。 |
EnumCount | 添加一个等于变体数量的usize 常量。 |
贡献
感谢您对贡献的兴趣。项目分为3部分,特性文件位于/strum
文件夹中。过程宏位于/strum_macros
文件夹中,集成测试位于/strum_tests
。如果您正在向strum
或strum_macros
添加新功能,请确保运行测试并添加新的集成测试以确保功能按预期工作。
调试
要查看生成的代码,请在编译代码之前设置STRUM_DEBUG环境变量。STRUM_DEBUG=1
将输出所有类型的生成代码。 STRUM_DEBUG=YourType
将仅输出名为YourType
的类型生成的代码。
名称
Strum代表STRing enUM,因为它是一个通过字符串添加额外信息的枚举库。
拨弦也是一种非常随意的动作,就像编写Rust代码一样。
依赖
~2MB
~43K SLoC