Implement len() for EnumSet.
This commit is contained in:
parent
0a3cbf8cf4
commit
a79d4be39c
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue