#枚举 #过程宏 #字符串 #

strum_macros

用于处理枚举和字符串的有用宏

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过程宏

Download history 1404592/week @ 2024-04-28 1417816/week @ 2024-05-05 1527267/week @ 2024-05-12 1584286/week @ 2024-05-19 1546949/week @ 2024-05-26 1769601/week @ 2024-06-02 1763035/week @ 2024-06-09 1669149/week @ 2024-06-16 1743611/week @ 2024-06-23 1621654/week @ 2024-06-30 1706884/week @ 2024-07-07 1670330/week @ 2024-07-14 1768845/week @ 2024-07-21 1735907/week @ 2024-07-28 1724462/week @ 2024-08-04 1819380/week @ 2024-08-11

7,129,707 每月下载量
6,870 个crate中 使用(直接使用1,226个)

MIT 协议

135KB
2.5K SLoC

Strum

Build Status Build status Latest Version Rust Documentation Crates.io Crates.io

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 中。如果您要向 strumstrum_macros 添加新功能,请确保运行测试,并添加新的集成测试以确保功能按预期工作。

调试

要在编译代码之前查看生成的代码,请在编译代码前设置 STRUM_DEBUG 环境变量。STRUM_DEBUG=1 将为每个类型输出所有生成的代码。STRUM_DEBUG=YourType 将仅输出名为 YourType 的类型的代码。

名称

Strum 的缩写是 STRing enUM,因为它是一个通过字符串为枚举添加额外信息的库。

Strumming 也是一种非常俏皮的动态,很像写 Rust 代码。

依赖项

~270–720KB
~17K SLoC