diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2023-01-05 08:47:57 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2023-01-05 11:09:56 +0100 |
commit | 50c6e6e959c74096d1c7df595abc94258e740e65 (patch) | |
tree | 808b5a6d8df625e1775a9984578c2ea1f993ce8e /mqtt-tester | |
parent | e0d3a852cff78c07a7a207b7751304f5936630a1 (diff) |
Extend macro to allow members
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'mqtt-tester')
-rw-r--r-- | mqtt-tester/src/executable.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/mqtt-tester/src/executable.rs b/mqtt-tester/src/executable.rs index f8367be..bb5caf3 100644 --- a/mqtt-tester/src/executable.rs +++ b/mqtt-tester/src/executable.rs @@ -54,6 +54,24 @@ pub trait ClientExecutableCommand { } macro_rules! define_command { + ($tyname:ident { $($member:ident : $memty:ty ),+ } => $s:literal, args: $($arg:literal),+) => { + pub struct $tyname { + $(pub $member : $memty),* + } + + impl ClientExecutableCommand for $tyname { + fn as_str(&self) -> &'static str { + $s + } + fn args(&self) -> Vec<String> { + $(let $member = &self.$member;)+ + + vec![ + $(format!($arg)),+ + ] + } + } + }; ($tyname:ident => $s:literal, args: $($arg:literal),+) => { pub struct $tyname; |