summaryrefslogtreecommitdiff
path: root/src/util.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2023-02-23 22:35:06 +0100
committerHampusM <hampus@hampusmat.com>2023-02-23 22:41:28 +0100
commit11c39d50411a747eedac4c6a16fedf598ae798f5 (patch)
tree498b9b6752964fcb2a15eb0474e25623e79a27f6 /src/util.rs
parent136f04b2776d5097328345b1a53f50403859b9f0 (diff)
feat: add project & getting function entries
Diffstat (limited to 'src/util.rs')
-rw-r--r--src/util.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/util.rs b/src/util.rs
new file mode 100644
index 0000000..309a471
--- /dev/null
+++ b/src/util.rs
@@ -0,0 +1,34 @@
+macro_rules! enum_with_get_inner {
+ (
+ inner = $inner: ty;
+ $(#[$attr: meta])*
+ $visibility: vis enum $enum_name: ident {
+ $(
+ $(#[$variant_attr: meta])*
+ $variant: ident($variant_inner: ty),
+ )*
+ }
+ ) => {
+ $(#[$attr])*
+ $visibility enum $enum_name {
+ $(
+ $(#[$variant_attr])*
+ $variant($inner)
+ ),*
+ }
+
+ impl $enum_name {
+ /// Returns the inner value.
+ #[must_use]
+ pub fn inner(&self) -> &$inner {
+ match self {
+ $(
+ $enum_name::$variant(inner) => inner
+ ),*
+ }
+ }
+ }
+ };
+}
+
+pub(crate) use enum_with_get_inner;