35个版本 (22个重大变更)
| 0.26.3 | 2024年6月23日 |
|---|---|
| 0.26.2 | 2024年3月10日 |
| 0.26.1 | 2024年1月28日 |
| 0.25.0 | 2023年6月18日 |
| 0.5.1 | 2017年2月25日 |
#2 in 过程宏
7,390,694 每月下载量
用于 6,643 个crates(直接使用2,210个)
23KB
163 代码行
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宏
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 代码一样。
依赖
~0–285KB