summaryrefslogtreecommitdiffstats
path: root/mqtt-tester
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2023-01-05 08:47:57 +0100
committerMatthias Beyer <mail@beyermatthias.de>2023-01-05 11:09:56 +0100
commit50c6e6e959c74096d1c7df595abc94258e740e65 (patch)
tree808b5a6d8df625e1775a9984578c2ea1f993ce8e /mqtt-tester
parente0d3a852cff78c07a7a207b7751304f5936630a1 (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.rs18
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;