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 • Rust 包仓库 1404592/week @ 2024-04-28 • Rust 包仓库 1417816/week @ 2024-05-05 • Rust 包仓库 1527267/week @ 2024-05-12 • Rust 包仓库 1584286/week @ 2024-05-19 • Rust 包仓库 1546949/week @ 2024-05-26 • Rust 包仓库 1769601/week @ 2024-06-02 • Rust 包仓库 1763035/week @ 2024-06-09 • Rust 包仓库 1669149/week @ 2024-06-16 • Rust 包仓库 1743611/week @ 2024-06-23 • Rust 包仓库 1621654/week @ 2024-06-30 • Rust 包仓库 1706884/week @ 2024-07-07 • Rust 包仓库 1670330/week @ 2024-07-14 • Rust 包仓库 1768845/week @ 2024-07-21 • Rust 包仓库 1735907/week @ 2024-07-28 • Rust 包仓库 1724462/week @ 2024-08-04 • Rust 包仓库 1819380/week @ 2024-08-11 • Rust 包仓库

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