diff options
Diffstat (limited to 'src/single.rs')
| -rw-r--r-- | src/single.rs | 24 |
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()) - } -} |
