chiark / gitweb /
if_let: Provide a cardboard cutout version for basic struct variants
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 2 May 2021 21:11:42 +0000 (22:11 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 2 May 2021 21:11:42 +0000 (22:11 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
base/misc.rs

index 7ee1c6f58da340e3b088ff073b9eff9c24ae1e52..c6bbe0615695b7da051aba6ff427a23d176526e7 100644 (file)
@@ -75,4 +75,12 @@ macro_rules! if_let {
       _ => { $($otherwise)* },
     };
   };
+  { $($variant:ident)::+ {$binding:ident} = $input:expr;
+    else $($otherwise:tt)*
+  } => {
+    let $binding = match $input {
+      $($variant)::+ { $binding } => $binding,
+      _ => { $($otherwise)* },
+    };
+  };
 }