summaryrefslogtreecommitdiff
path: root/_prototype/converter/src/macros.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-04-22 20:24:18 +0800
committer魏曹先生 <1992414357@qq.com>2026-04-22 20:24:18 +0800
commit277bc93f84b298c7cb24e136f67eb237fb3a68a2 (patch)
tree3a678677882e9884a2a17fa828358d1c9fd3dd9c /_prototype/converter/src/macros.rs
parent3e3ffa97985ed588ef46e007edb7507189a65e8e (diff)
Move prototype files to _prototype directoryHEADmaster
Diffstat (limited to '_prototype/converter/src/macros.rs')
-rw-r--r--_prototype/converter/src/macros.rs33
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
+ }};
+}