summaryrefslogtreecommitdiff
path: root/src/single.rs
diff options
context:
space:
mode:
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())
- }
-}