diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-04-22 20:24:18 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-04-22 20:24:18 +0800 |
| commit | 277bc93f84b298c7cb24e136f67eb237fb3a68a2 (patch) | |
| tree | 3a678677882e9884a2a17fa828358d1c9fd3dd9c /_prototype/converter/src/macros.rs | |
| parent | 3e3ffa97985ed588ef46e007edb7507189a65e8e (diff) | |
Diffstat (limited to '_prototype/converter/src/macros.rs')
| -rw-r--r-- | _prototype/converter/src/macros.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/_prototype/converter/src/macros.rs b/_prototype/converter/src/macros.rs new file mode 100644 index 0000000..894b3f4 --- /dev/null +++ b/_prototype/converter/src/macros.rs @@ -0,0 +1,33 @@ +#[macro_export] +macro_rules! special_flag { + ($args:expr, $flag:expr) => {{ + let flag = $flag; + let found = $args.iter().any(|arg| arg == flag); + $args.retain(|arg| arg != flag); + found + }}; +} + +#[macro_export] +macro_rules! special_argument { + ($args:expr, $flag:expr) => {{ + let flag = $flag; + let mut value: Option<String> = None; + let mut i = 0; + while i < $args.len() { + if $args[i] == flag { + if i + 1 < $args.len() { + value = Some($args[i + 1].clone()); + $args.remove(i + 1); + $args.remove(i); + } else { + value = None; + $args.remove(i); + } + break; + } + i += 1; + } + value + }}; +} |
