diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-07-24 19:39:46 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-07-24 19:40:30 -0400 |
| commit | f2d288fd5d1054075374f3f7229f8a9332adf61c (patch) | |
| tree | 2884fe74bbd15ed5951619ee3438068e9101d4bc /src/single.rs | |
| parent | a556388635b1f7543a361985d1ef3e2c58ddd386 (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.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()) - } -} |
