diff options
| author | Jorge Aparicio <japaricious@gmail.com> | 2014-12-01 14:10:04 -0500 |
|---|---|---|
| committer | Jorge Aparicio <japaricious@gmail.com> | 2014-12-13 20:15:39 -0500 |
| commit | baf79d4a118c42f9ac0a7df3ff9b566d1450140d (patch) | |
| tree | 7f15978024fd1f5eaa57e6f01264db1ee75afd71 /src/libcollections/enum_set.rs | |
| parent | 076e932fd5c6deb1a71e73f46f700743e0b9746c (diff) | |
| download | rust-baf79d4a118c42f9ac0a7df3ff9b566d1450140d.tar.gz rust-baf79d4a118c42f9ac0a7df3ff9b566d1450140d.zip | |
libcollections: make `EnumSet` binops by value
Diffstat (limited to 'src/libcollections/enum_set.rs')
| -rw-r--r-- | src/libcollections/enum_set.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/libcollections/enum_set.rs b/src/libcollections/enum_set.rs index d8dc1f36e05..4df1be1bb35 100644 --- a/src/libcollections/enum_set.rs +++ b/src/libcollections/enum_set.rs @@ -183,30 +183,66 @@ impl<E:CLike> EnumSet<E> { } } +// NOTE(stage0): Remove impl after a snapshot +#[cfg(stage0)] impl<E:CLike> Sub<EnumSet<E>, EnumSet<E>> for EnumSet<E> { fn sub(&self, e: &EnumSet<E>) -> EnumSet<E> { EnumSet {bits: self.bits & !e.bits} } } +#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot +impl<E:CLike> Sub<EnumSet<E>, EnumSet<E>> for EnumSet<E> { + fn sub(self, e: EnumSet<E>) -> EnumSet<E> { + EnumSet {bits: self.bits & !e.bits} + } +} + +// NOTE(stage0): Remove impl after a snapshot +#[cfg(stage0)] impl<E:CLike> BitOr<EnumSet<E>, EnumSet<E>> for EnumSet<E> { fn bitor(&self, e: &EnumSet<E>) -> EnumSet<E> { EnumSet {bits: self.bits | e.bits} } } +#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot +impl<E:CLike> BitOr<EnumSet<E>, EnumSet<E>> for EnumSet<E> { + fn bitor(self, e: EnumSet<E>) -> EnumSet<E> { + EnumSet {bits: self.bits | e.bits} + } +} + +// NOTE(stage0): Remove impl after a snapshot +#[cfg(stage0)] impl<E:CLike> BitAnd<EnumSet<E>, EnumSet<E>> for EnumSet<E> { fn bitand(&self, e: &EnumSet<E>) -> EnumSet<E> { EnumSet {bits: self.bits & e.bits} } } +#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot +impl<E:CLike> BitAnd<EnumSet<E>, EnumSet<E>> for EnumSet<E> { + fn bitand(self, e: EnumSet<E>) -> EnumSet<E> { + EnumSet {bits: self.bits & e.bits} + } +} + +// NOTE(stage0): Remove impl after a snapshot +#[cfg(stage0)] impl<E:CLike> BitXor<EnumSet<E>, EnumSet<E>> for EnumSet<E> { fn bitxor(&self, e: &EnumSet<E>) -> EnumSet<E> { EnumSet {bits: self.bits ^ e.bits} } } +#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot +impl<E:CLike> BitXor<EnumSet<E>, EnumSet<E>> for EnumSet<E> { + fn bitxor(self, e: EnumSet<E>) -> EnumSet<E> { + EnumSet {bits: self.bits ^ e.bits} + } +} + /// An iterator over an EnumSet pub struct Items<E> { index: uint, |
