43个版本 (22个重大变更)
0.26.4 | 2024年6月5日 |
---|---|
0.26.2 | 2024年3月10日 |
0.25.3 | 2023年10月15日 |
0.25.1 | 2023年7月3日 |
0.5.0 | 2017年2月23日 |
#127 在 过程宏 中
7,129,707 每月下载量
在 6,870 个crate中 使用(直接使用1,226个)
135KB
2.5K SLoC
Strum
Strum 是一组宏和特质,用于在 Rust 中更轻松地处理枚举和字符串。
兼容性
Strum 目前与 rustc >= 1.56.1 版本兼容。欢迎提交改进与旧版本兼容性的 Pull Requests。项目的目标是发布后至少支持 2 年的 Rust 版本,更长时间的支持更为理想,因为此项目变化缓慢。
将 Strum 添加到您的项目
通过在 Cargo.toml 中添加以下行将 strum 和 strum_macros 导入到您的项目中。Strum_macros 包含实现 Strum 中所有特质所需的宏。
[dependencies]
strum = "0.26"
strum_macros = "0.26"
# You can also use the "derive" feature, and import the macros directly from "strum"
# strum = { version = "0.26", features = ["derive"] }
Strum Macros
Strum 实现了以下宏
宏 | 描述 |
---|---|
EnumString | 根据名称将字符串转换为枚举变体。 |
Display | 将枚举变体转换为字符串。 |
FromRepr | 从整数转换为枚举。 |
AsRefStr | 为 MyEnum 实现 AsRef<str> 。 |
IntoStaticStr | 在枚举上实现 From<MyEnum> for &'static str 。 |
EnumIter | 创建一个新的类型,该类型迭代枚举的变体。 |
EnumProperty | 为枚举变体添加自定义属性。 |
EnumMessage | 为枚举变体添加详细消息。 |
EnumDiscriminants | 生成只包含判别符名称的新类型。 |
EnumCount | 添加一个等于变体数量的常量 usize 。 |
VariantArray | 添加一个关联的常量 VARIANTS ,它是一个包含所有枚举区分符的数组。 |
VariantNames | 添加一个关联的常量 VARIANTS ,它是一个包含区分名称的数组。 |
EnumTable | 实验性,为枚举的每个变体创建一个新的类型来存储指定类型的项。 |
贡献
感谢您对贡献的兴趣。欢迎修复错误。如果您有兴趣实现或添加宏,请首先提交一个问题以讨论该功能。我审查新功能的时间有限。
项目分为3部分,特质位于 /strum
文件夹中。过程宏位于 /strum_macros
文件夹中,集成测试位于 /strum_tests
中。如果您要向 strum
或 strum_macros
添加新功能,请确保运行测试,并添加新的集成测试以确保功能按预期工作。
调试
要在编译代码之前查看生成的代码,请在编译代码前设置 STRUM_DEBUG 环境变量。STRUM_DEBUG=1
将为每个类型输出所有生成的代码。STRUM_DEBUG=YourType
将仅输出名为 YourType
的类型的代码。
名称
Strum 的缩写是 STRing enUM,因为它是一个通过字符串为枚举添加额外信息的库。
Strumming 也是一种非常俏皮的动态,很像写 Rust 代码。
依赖项
~270–720KB
~17K SLoC