| Crates.io | rocketmq-macros |
| lib.rs | rocketmq-macros |
| version | 0.6.0 |
| created_at | 2024-01-27 17:03:22.006174+00 |
| updated_at | 2025-08-19 13:43:35.712303+00 |
| description | Unofficial Rust implementation of Apache RocketMQ |
| homepage | https://github.com/mxsm/rocketmq-rust |
| repository | https://github.com/mxsm/rocketmq-rust |
| max_upload_size | |
| id | 1116839 |
| size | 30,947 |
Using macros to automate repetitive tasks.
This crate is primarily for the macros used in RocketMQ-Rust. The currently defined macros are as follows:
The RequestHeaderCodec macro implements serialization and deserialization for RocketMQ's RequestHeader. It automatically implements the CommandCustomHeader trait and the FromMap trait. This macro includes an attribute: required, which indicates that a field of the struct must be present during deserialization; otherwise, it will result in an error.
Note: The
requiredattribute corresponds to the@CFNotNullannotation in the Java version and is implemented in this way in Rust.
Example usage is shown below:
#[derive(Debug, Clone, Serialize, Deserialize, Default, RequestHeaderCodec)]
#[serde(rename_all = "camelCase")]
pub struct SendMessageRequestHeader {
#[required] // this field is required
pub producer_group: CheetahString,
pub topic: CheetahString,
pub default_topic: CheetahString,
pub default_topic_queue_nums: i32,
pub queue_id: Option<i32>,
pub sys_flag: i32,
pub born_timestamp: i64,
pub flag: i32,
pub properties: Option<CheetahString>,
pub reconsume_times: Option<i32>,
pub unit_mode: Option<bool>,
pub batch: Option<bool>,
pub max_reconsume_times: Option<i32>,
#[serde(flatten)]
pub topic_request_header: Option<TopicRequestHeader>,
}
In this example, the SendMessageRequestHeader struct is annotated with the RequestHeaderCodec derive macro, along with other standard Rust attributes like Debug, Clone, Serialize, Deserialize, and Default. The #[required] attribute is used on the producer_group field to denote that it is mandatory for successful deserialization.