Rust Pattern Macros
rust-pattern-macros 是 rust-patterns 库的过程宏扩展,提供了属性宏来简化 Rust 中设计模式的实现。
特性
- 零成本抽象:生成的代码经过优化,几乎没有运行时开销
- 线程安全:所有生成的代码都是线程安全的
- 易于使用:简洁的 API 设计,提供丰富的文档和示例
- 生产就绪:经过充分测试,包含单元测试和文档测试
安装
在 Cargo.toml 中添加:
[]
= "0.1.1"
= "0.1.2"
包含的宏
1. #[simple_factory] - 简单工厂模式
为 trait 生成简单工厂实现,自动创建工厂结构体和创建方法。
基本用法
use simple_factory;
// 宏会生成 ProductFactory 结构体
// 可以使用 ProductFactory::create() 方法创建产品
带 trait bound 的用法
// 生成的工厂会确保创建的对象满足 Send + Sync 约束
生成的代码
宏会生成以下内容:
- 原始的 trait 定义
- 工厂结构体
{TraitName}Factory create方法实现,使用全局静态工厂实例
create 方法签名:
2. #[observable] - 观察者模式
为结构体自动实现 Observable trait,添加观察者管理功能。
基本用法
use observable;
// 手动初始化(需要提供 registry 字段)
let mut counter = Counter ;
// 现在可以使用 attach、detach、notify 等方法
自定义错误类型
生成的代码
宏会为结构体生成:
- 添加
registry: ObserverRegistry<Self>字段 - 实现
Observabletrait,设置State和Error关联类型 - 实现
attach和detach方法 - 提供两个通知方法:
notify(&self, state: &State)- 使用 StopOnError 策略notify_ignore_error(&self, state: &State)- 使用 IgnoreError 策略
设计特点
registry字段使用结构体的可见性- 不提供
Default实现,结构体初始化由用户负责 - 只支持具名字段的结构体
示例
查看 examples/ 目录获取完整的使用示例:
# 运行 observable 示例
# 运行 simple_factory 示例
API 文档
完整的 API 文档可在 docs.rs 查看。
运行测试
# 运行所有测试
# 运行文档测试
# 运行特定宏的测试
系统要求
- Rust 1.70 或更高版本(需要
std::sync::LazyLock) rust-patternscrate 必须在你的项目中可用
贡献指南
欢迎贡献!请遵循以下步骤:
- Fork 项目
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开 Pull Request
许可证
本项目基于 MIT 许可证 - 查看 LICENSE 文件了解详情。
作者
- Linshan Yang - yanglsh@yeah.net
致谢
- 感谢所有贡献者和用户
- 灵感来源于经典的设计模式书籍和 Rust 社区的最佳实践
版本信息
查看 crates.io 获取最新版本,或访问 GitHub Releases 查看版本历史。
相关项目
- rust-patterns - 统一的设计模式库
- inventory - 编译时注册系统
- thiserror - 错误处理库
提示: 本项目正在积极开发中,API 可能会发生变化。建议在生产环境中使用时锁定特定版本。