From f2d288fd5d1054075374f3f7229f8a9332adf61c Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Wed, 24 Jul 2024 19:39:46 -0400 Subject: Be more specific about zero vs. two or more ASGs matching the name. This also lets me remove the clever-but-silly Single trait. --- src/single.rs | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 src/single.rs (limited to 'src/single.rs') 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; -} - -impl Single for I -where - I: IntoIterator, -{ - type Item = T; - - fn single(self) -> Option { - 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()) - } -} -- cgit v1.2.3