auto merge of #18740 : jbcrail/rust/implement-enum-set-len, r=alexcrichton
This commit adds the missing EnumSet method mentioned by @Gankro. cc #18424
This commit is contained in:
commit
b80edf1d12
|
@ -18,7 +18,6 @@ use core::fmt;
|
||||||
|
|
||||||
// FIXME(conventions): implement BitXor
|
// FIXME(conventions): implement BitXor
|
||||||
// FIXME(contentions): implement union family of methods? (general design may be wrong here)
|
// FIXME(contentions): implement union family of methods? (general design may be wrong here)
|
||||||
// FIXME(conventions): implement len
|
|
||||||
|
|
||||||
#[deriving(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
#[deriving(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
/// A specialized `Set` implementation to use enum types.
|
/// A specialized `Set` implementation to use enum types.
|
||||||
|
@ -92,6 +91,12 @@ impl<E:CLike> EnumSet<E> {
|
||||||
EnumSet {bits: 0}
|
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.
|
/// Returns true if the `EnumSet` is empty.
|
||||||
#[unstable = "matches collection reform specification, waiting for dust to settle"]
|
#[unstable = "matches collection reform specification, waiting for dust to settle"]
|
||||||
pub fn is_empty(&self) -> bool {
|
pub fn is_empty(&self) -> bool {
|
||||||
|
@ -269,6 +274,20 @@ mod test {
|
||||||
assert_eq!("{A, C}", e.to_string().as_slice());
|
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
|
// intersect
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue