From d27f07ce7579e21dec108b3239cd0a29615b54e0 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Sun, 21 Jun 2026 15:11:59 +0900 Subject: [PATCH] WIP: commands: add `req`/`res` constructors --- src/commands.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/commands.rs b/src/commands.rs index 2251b73..983c83f 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -195,6 +195,12 @@ macro_rules! empty_command_request { } } + impl $name { + pub fn req() -> ::Request { + paste::paste! { [<$name Request>] } + } + } + impl crate::commands::CommandRequest for paste::paste! { [<$name Request>] } { const COMMAND: &'static str = $command_name; const MIN_ARGS: u32 = 0; @@ -228,6 +234,12 @@ macro_rules! empty_command_response { } } + impl $name { + pub fn res() -> ::Response { + paste::paste! { [<$name Response>] } + } + } + impl crate::commands::CommandResponse for paste::paste! { [<$name Response>] } { fn parse( _parts: crate::commands::ResponseAttributes<'_>, @@ -254,6 +266,12 @@ macro_rules! single_item_command_request { } } + impl $name { + pub fn req(item: $item_type) -> ::Request { + ::Request::new(item) + } + } + impl crate::commands::CommandRequest for paste::paste! { [<$name Request>] } { const COMMAND: &'static str = $command_name; const MIN_ARGS: u32 = 1; @@ -299,6 +317,12 @@ macro_rules! single_optional_item_command_request { } } + impl $name { + pub fn req(item: Option<$item_type>) -> ::Request { + ::Request::new(item) + } + } + impl crate::commands::CommandRequest for paste::paste! { [<$name Request>] } { const COMMAND: &'static str = $command_name; const MIN_ARGS: u32 = 0; @@ -350,6 +374,12 @@ macro_rules! single_item_command_response { } } + impl $name { + pub fn res(item: $item_type) -> ::Response { + ::Response::new(item) + } + } + impl crate::commands::CommandResponse for paste::paste! { [<$name Response>] } { fn parse( parts: crate::commands::ResponseAttributes<'_>, @@ -394,6 +424,12 @@ macro_rules! multi_item_command_response { } } + impl $name { + pub fn res(items: Vec<$item_type>) -> ::Response { + ::Response::new(items) + } + } + impl crate::commands::CommandResponse for paste::paste! { [<$name Response>] } { fn parse( parts: crate::commands::ResponseAttributes<'_>,