diff options
| author | Joseph Crail <jbcrail@gmail.com> | 2014-11-07 12:13:45 -0500 |
|---|---|---|
| committer | Joseph Crail <jbcrail@gmail.com> | 2014-11-07 16:08:43 -0500 |
| commit | a79d4be39cf99ed4dba1c757400a3ea708956653 (patch) | |
| tree | 0add644d7f3a10b9af2da1943a79329d33f46838 /src/libcollections | |
| parent | 0a3cbf8cf44e41072c11277363a5100cf3a8a161 (diff) | |
| download | rust-a79d4be39cf99ed4dba1c757400a3ea708956653.tar.gz rust-a79d4be39cf99ed4dba1c757400a3ea708956653.zip | |
Implement len() for EnumSet.
Diffstat (limited to 'src/libcollections')
| -rw-r--r-- | src/libcollections/enum_set.rs | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/libcollections/enum_set.rs b/src/libcollections/enum_set.rs index 1acdaef9c91..68991628b22 100644 --- a/src/libcollections/enum_set.rs +++ b/src/libcollections/enum_set.rs @@ -18,7 +18,6 @@ use core::fmt; // FIXME(conventions): implement BitXor // FIXME(contentions): implement union family of methods? (general design may be wrong here) -// FIXME(conventions): implement len #[deriving(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] /// A specialized `Set` implementation to use enum types. @@ -92,6 +91,12 @@ impl<E:CLike> EnumSet<E> { EnumSet {bits: 0} } + /// Returns the number of elements in the given `EnumSet`. + #[unstable = "matches collection reform specification, waiting for dust to settle"] + pub fn len(&self) -> uint { + self.bits.count_ones() + } + /// Returns true if the `EnumSet` is empty. #[unstable = "matches collection reform specification, waiting for dust to settle"] pub fn is_empty(&self) -> bool { @@ -269,6 +274,20 @@ mod test { assert_eq!("{A, C}", e.to_string().as_slice()); } + #[test] + fn test_len() { + let mut e = EnumSet::new(); + assert_eq!(e.len(), 0); + e.insert(A); + e.insert(B); + e.insert(C); + assert_eq!(e.len(), 3); + e.remove(&A); + assert_eq!(e.len(), 2); + e.clear(); + assert_eq!(e.len(), 0); + } + /////////////////////////////////////////////////////////////////////////// // intersect |
