aboutsummaryrefslogtreecommitdiff
path: root/macros/src/util
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2022-07-31 13:26:41 +0200
committerHampusM <hampus@hampusmat.com>2022-08-01 15:52:23 +0200
commit3383faeaf8342cf4637b6d9a9dfba30b1684edca (patch)
tree3a4e23d299d077eaf82cb09a093eaaae384e4ec2 /macros/src/util
parent8d2c6412fec2f35581a48433421db4b03a8d6657 (diff)
feat: add hide impl of Injectable from documentation
This will make it so that by default the impl of Injectable is hidden from user code documentation. This commit also includes a flag for the injectable macro to disable the aforementioned feature
Diffstat (limited to 'macros/src/util')
-rw-r--r--macros/src/util/iterator_ext.rs28
-rw-r--r--macros/src/util/mod.rs1
2 files changed, 29 insertions, 0 deletions
diff --git a/macros/src/util/iterator_ext.rs b/macros/src/util/iterator_ext.rs
new file mode 100644
index 0000000..86db6cb
--- /dev/null
+++ b/macros/src/util/iterator_ext.rs
@@ -0,0 +1,28 @@
+use std::collections::HashMap;
+use std::hash::Hash;
+
+pub trait IteratorExt<Item>
+{
+ fn find_duplicate(&mut self) -> Option<Item>;
+}
+
+impl<Iter> IteratorExt<Iter::Item> for Iter
+where
+ Iter: Iterator,
+ Iter::Item: Eq + Hash + Copy,
+{
+ fn find_duplicate(&mut self) -> Option<Iter::Item>
+ {
+ let mut iterated_item_map = HashMap::<Iter::Item, ()>::new();
+
+ for item in self {
+ if iterated_item_map.contains_key(&item) {
+ return Some(item);
+ }
+
+ iterated_item_map.insert(item, ());
+ }
+
+ None
+ }
+}
diff --git a/macros/src/util/mod.rs b/macros/src/util/mod.rs
new file mode 100644
index 0000000..fe2fbbc
--- /dev/null
+++ b/macros/src/util/mod.rs
@@ -0,0 +1 @@
+pub mod iterator_ext;