| Crates.io | genies_derive |
| lib.rs | genies_derive |
| version | 1.4.5 |
| created_at | 2024-03-16 15:42:54.588938+00 |
| updated_at | 2025-08-24 08:51:02.78756+00 |
| description | A powerful derive macro for configuration management in Rust |
| homepage | |
| repository | https://github.com/tdcare/genies_derive |
| max_upload_size | |
| id | 1175705 |
| size | 193,371 |
genies_derive 模块提供自定义派生宏,用于简化代码生成。该模块帮助开发者在应用程序中快速生成常用代码结构,如配置类型、聚合类型、事件类型、主题类型和包装类型等。
feighthttp 请求进行包装,解决 HTTP 访问凭证的问题。config_type.rs 中定义了配置类型派生宏 Config,用于自动生成配置类型的代码。
use genies_derive::Config;
#[derive(Config)]
struct MyConfig {
field: String,
}
aggregate_type.rs 中定义了聚合类型派生宏 AggregateType,用于自动生成聚合类型的代码。
use genies_derive::AggregateType;
#[derive(AggregateType)]
struct MyAggregate {
field: String,
}
event_type.rs 中定义了事件类型派生宏 EventType,用于自动生成事件类型的代码。
use genies_derive::EventType;
#[derive(EventType)]
struct MyEvent {
field: String,
}
topic.rs 中定义了主题类型派生宏 Topic,用于从消息队列中取回消息,并使用 Redis 实现接口的幂等操作。
use genies_derive::topic;
use crate::domain::event::SignsMonitorSyncResultEvent::SignsMonitorSyncResultEvent;
use crate::domain::service::VitalSignSycDocService;
/// 文书回写结果
#[topic(name = "signsMonitorSyncNursingDoc", pubsub = "messagebus")]
pub async fn signsMonitorSyncNursingDoc(
tx: &mut dyn Executor,
event: SignsMonitorSyncResultEvent,
) -> anyhow::Result<u64> {
return VitalSignSycDocService::onExcutedEvent(tx, event).await;
}
wrapper.rs 中定义了包装类型派生宏 Wrapper,用于对 feighthttp 请求进行包装,解决 HTTP 访问凭证的问题。
use genies_derive::Wrapper;
#[derive(Wrapper)]
struct MyWrapper {
field: String,
}
config_type.rsnew 方法。get 和 set 方法。aggregate_type.rsnew 方法。apply_event 方法。event_type.rsnew 方法。event_type 和 event_data 方法。topic.rsnew 方法。topic_name 方法。wrapper.rsnew 方法,用于初始化包装器。wrap_request 方法,用于包装 feighthttp 请求,解决 HTTP 访问凭证的问题。unwrap_response 方法,用于解包 feighthttp 响应。欢迎提交 Pull Request 或 Issue 来改进本项目。
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。