summaryrefslogtreecommitdiff
path: root/src/single.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-07-24 19:39:46 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-07-24 19:40:30 -0400
commitf2d288fd5d1054075374f3f7229f8a9332adf61c (patch)
tree2884fe74bbd15ed5951619ee3438068e9101d4bc /src/single.rs
parenta556388635b1f7543a361985d1ef3e2c58ddd386 (diff)
Be more specific about zero vs. two or more ASGs matching the name.
This also lets me remove the clever-but-silly Single trait.
Diffstat (limited to 'src/single.rs')
-rw-r--r--src/single.rs24
1 files changed, 0 insertions, 24 deletions
diff --git a/src/single.rs b/src/single.rs
deleted file mode 100644
index b3f0b18..0000000
--- a/src/single.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-pub trait Single {
- type Item;
-
- fn single(self) -> Option<Self::Item>;
-}
-
-impl<T, I> Single for I
-where
- I: IntoIterator<Item = T>,
-{
- type Item = T;
-
- fn single(self) -> Option<Self::Item> {
- let mut iter = self.into_iter();
-
- // There are three cases of interest:
- //
- // 1. `self` has zero items -> return None.
- // 2. `self` has two or more items -> return None.
- // 3. `self` has exactly one item -> return `iter.next()` unchanged, as
- // it holds that item.
- iter.next().filter(|_| iter.next().is_none())
- }
-}