about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-01-15 20:36:48 -0800
committerbors <bors@rust-lang.org>2014-01-15 20:36:48 -0800
commit6708558c341d0c4fd467636ee2b2695c125ae4d3 (patch)
tree749c0f4101e416ca51e7a454be00d6ed4f180baa /src/libstd
parentbf2ab22cd0eda8e019cb243916e6c127708739cf (diff)
parent1dd6906db2e6749bc3f113068e7493070b276feb (diff)
downloadrust-6708558c341d0c4fd467636ee2b2695c125ae4d3.tar.gz
rust-6708558c341d0c4fd467636ee2b2695c125ae4d3.zip
auto merge of #11548 : bjz/rust/bitwise, r=alexcrichton
One less trait in `std::num` and three less exported in the prelude.

cc. #10387
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/num/f32.rs2
-rw-r--r--src/libstd/num/f64.rs2
-rw-r--r--src/libstd/num/i16.rs4
-rw-r--r--src/libstd/num/i32.rs4
-rw-r--r--src/libstd/num/i64.rs4
-rw-r--r--src/libstd/num/i8.rs4
-rw-r--r--src/libstd/num/int.rs6
-rw-r--r--src/libstd/num/int_macros.rs3
-rw-r--r--src/libstd/num/mod.rs31
-rw-r--r--src/libstd/num/u16.rs2
-rw-r--r--src/libstd/num/u32.rs2
-rw-r--r--src/libstd/num/u64.rs2
-rw-r--r--src/libstd/num/u8.rs2
-rw-r--r--src/libstd/num/uint.rs2
-rw-r--r--src/libstd/num/uint_macros.rs5
-rw-r--r--src/libstd/prelude.rs3
16 files changed, 39 insertions, 39 deletions
diff --git a/src/libstd/num/f32.rs b/src/libstd/num/f32.rs
index beecf8a44f6..a8eaa895650 100644
--- a/src/libstd/num/f32.rs
+++ b/src/libstd/num/f32.rs
@@ -17,7 +17,7 @@ use cmath;
 use default::Default;
 use libc::{c_float, c_int};
 use num::{FPCategory, FPNaN, FPInfinite , FPZero, FPSubnormal, FPNormal};
-use num::{Zero, One, strconv};
+use num::{Zero, One, Bounded, strconv};
 use num;
 use to_str;
 use unstable::intrinsics;
diff --git a/src/libstd/num/f64.rs b/src/libstd/num/f64.rs
index 6a266c6c59f..fe51cb07646 100644
--- a/src/libstd/num/f64.rs
+++ b/src/libstd/num/f64.rs
@@ -18,7 +18,7 @@ use cmath;
 use default::Default;
 use libc::{c_double, c_int};
 use num::{FPCategory, FPNaN, FPInfinite , FPZero, FPSubnormal, FPNormal};
-use num::{Zero, One, strconv};
+use num::{Zero, One, Bounded, strconv};
 use num;
 use to_str;
 use unstable::intrinsics;
diff --git a/src/libstd/num/i16.rs b/src/libstd/num/i16.rs
index 5f431dfdf04..e19e7c6c3b8 100644
--- a/src/libstd/num/i16.rs
+++ b/src/libstd/num/i16.rs
@@ -15,7 +15,7 @@
 use prelude::*;
 
 use default::Default;
-use num::{BitCount, CheckedAdd, CheckedSub, CheckedMul};
+use num::{Bitwise, Bounded, CheckedAdd, CheckedSub, CheckedMul};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
 use option::{Option, Some, None};
@@ -24,7 +24,7 @@ use unstable::intrinsics;
 
 int_module!(i16, 16)
 
-impl BitCount for i16 {
+impl Bitwise for i16 {
     /// Counts the number of bits set. Wraps LLVM's `ctpop` intrinsic.
     #[inline]
     fn population_count(&self) -> i16 { unsafe { intrinsics::ctpop16(*self) } }
diff --git a/src/libstd/num/i32.rs b/src/libstd/num/i32.rs
index 8bb03344923..372d9f680d7 100644
--- a/src/libstd/num/i32.rs
+++ b/src/libstd/num/i32.rs
@@ -15,7 +15,7 @@
 use prelude::*;
 
 use default::Default;
-use num::{BitCount, CheckedAdd, CheckedSub, CheckedMul};
+use num::{Bitwise, Bounded, CheckedAdd, CheckedSub, CheckedMul};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
 use option::{Option, Some, None};
@@ -24,7 +24,7 @@ use unstable::intrinsics;
 
 int_module!(i32, 32)
 
-impl BitCount for i32 {
+impl Bitwise for i32 {
     /// Counts the number of bits set. Wraps LLVM's `ctpop` intrinsic.
     #[inline]
     fn population_count(&self) -> i32 { unsafe { intrinsics::ctpop32(*self) } }
diff --git a/src/libstd/num/i64.rs b/src/libstd/num/i64.rs
index 891043ad5f8..2a91ee4dd71 100644
--- a/src/libstd/num/i64.rs
+++ b/src/libstd/num/i64.rs
@@ -17,7 +17,7 @@ use prelude::*;
 use default::Default;
 #[cfg(target_word_size = "64")]
 use num::CheckedMul;
-use num::{BitCount, CheckedAdd, CheckedSub};
+use num::{Bitwise, Bounded, CheckedAdd, CheckedSub};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
 use option::{Option, Some, None};
@@ -26,7 +26,7 @@ use unstable::intrinsics;
 
 int_module!(i64, 64)
 
-impl BitCount for i64 {
+impl Bitwise for i64 {
     /// Counts the number of bits set. Wraps LLVM's `ctpop` intrinsic.
     #[inline]
     fn population_count(&self) -> i64 { unsafe { intrinsics::ctpop64(*self) } }
diff --git a/src/libstd/num/i8.rs b/src/libstd/num/i8.rs
index fd123ec57cc..66162ce3502 100644
--- a/src/libstd/num/i8.rs
+++ b/src/libstd/num/i8.rs
@@ -15,7 +15,7 @@
 use prelude::*;
 
 use default::Default;
-use num::{BitCount, CheckedAdd, CheckedSub, CheckedMul};
+use num::{Bitwise, Bounded, CheckedAdd, CheckedSub, CheckedMul};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
 use option::{Option, Some, None};
@@ -24,7 +24,7 @@ use unstable::intrinsics;
 
 int_module!(i8, 8)
 
-impl BitCount for i8 {
+impl Bitwise for i8 {
     /// Counts the number of bits set. Wraps LLVM's `ctpop` intrinsic.
     #[inline]
     fn population_count(&self) -> i8 { unsafe { intrinsics::ctpop8(*self) } }
diff --git a/src/libstd/num/int.rs b/src/libstd/num/int.rs
index 123555e4a63..8068d4a74cb 100644
--- a/src/libstd/num/int.rs
+++ b/src/libstd/num/int.rs
@@ -15,7 +15,7 @@
 use prelude::*;
 
 use default::Default;
-use num::{BitCount, CheckedAdd, CheckedSub, CheckedMul};
+use num::{Bitwise, Bounded, CheckedAdd, CheckedSub, CheckedMul};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
 use option::{Option, Some, None};
@@ -26,7 +26,7 @@ use unstable::intrinsics;
 #[cfg(target_word_size = "64")] int_module!(int, 64)
 
 #[cfg(target_word_size = "32")]
-impl BitCount for int {
+impl Bitwise for int {
     /// Counts the number of bits set. Wraps LLVM's `ctpop` intrinsic.
     #[inline]
     fn population_count(&self) -> int { (*self as i32).population_count() as int }
@@ -41,7 +41,7 @@ impl BitCount for int {
 }
 
 #[cfg(target_word_size = "64")]
-impl BitCount for int {
+impl Bitwise for int {
     /// Counts the number of bits set. Wraps LLVM's `ctpop` intrinsic.
     #[inline]
     fn population_count(&self) -> int { (*self as i64).population_count() as int }
diff --git a/src/libstd/num/int_macros.rs b/src/libstd/num/int_macros.rs
index 8e48fcf5872..add0991f7af 100644
--- a/src/libstd/num/int_macros.rs
+++ b/src/libstd/num/int_macros.rs
@@ -315,8 +315,6 @@ impl Integer for $T {
     fn is_odd(&self) -> bool { !self.is_even() }
 }
 
-impl Bitwise for $T {}
-
 #[cfg(not(test))]
 impl BitOr<$T,$T> for $T {
     #[inline]
@@ -446,6 +444,7 @@ mod tests {
     use i32;
     use num;
     use num::CheckedDiv;
+    use num::Bitwise;
     use mem;
 
     #[test]
diff --git a/src/libstd/num/mod.rs b/src/libstd/num/mod.rs
index 2bf3158e6b4..05f21c7d448 100644
--- a/src/libstd/num/mod.rs
+++ b/src/libstd/num/mod.rs
@@ -324,21 +324,27 @@ pub trait Real: Signed
 /// Inverse hyperbolic tangent function.
 #[inline(always)] pub fn atanh<T: Real>(value: T) -> T { value.atanh() }
 
-/// Collects the bitwise operators under one trait.
-pub trait Bitwise: Not<Self>
+pub trait Bounded {
+    // FIXME (#5527): These should be associated constants
+    fn min_value() -> Self;
+    fn max_value() -> Self;
+}
+
+/// Numbers with a fixed binary representation.
+pub trait Bitwise: Bounded
+                 + Not<Self>
                  + BitAnd<Self,Self>
                  + BitOr<Self,Self>
                  + BitXor<Self,Self>
                  + Shl<Self,Self>
-                 + Shr<Self,Self> {}
-
-/// A trait for common counting operations on bits.
-pub trait BitCount {
+                 + Shr<Self,Self> {
     /// Returns the number of bits set in the number.
     ///
     /// # Example
     ///
     /// ```rust
+    /// use std::num::Bitwise;
+    ///
     /// let n = 0b0101000u16;
     /// assert_eq!(n.population_count(), 2);
     /// ```
@@ -348,6 +354,8 @@ pub trait BitCount {
     /// # Example
     ///
     /// ```rust
+    /// use std::num::Bitwise;
+    ///
     /// let n = 0b0101000u16;
     /// assert_eq!(n.leading_zeros(), 10);
     /// ```
@@ -357,18 +365,14 @@ pub trait BitCount {
     /// # Example
     ///
     /// ```rust
+    /// use std::num::Bitwise;
+    ///
     /// let n = 0b0101000u16;
     /// assert_eq!(n.trailing_zeros(), 3);
     /// ```
     fn trailing_zeros(&self) -> Self;
 }
 
-pub trait Bounded {
-    // FIXME (#5527): These should be associated constants
-    fn min_value() -> Self;
-    fn max_value() -> Self;
-}
-
 /// Specifies the available operations common to all of Rust's core numeric primitives.
 /// These may not always make sense from a purely mathematical point of view, but
 /// may be useful for systems programming.
@@ -394,8 +398,7 @@ pub trait Primitive: Clone
 /// A collection of traits relevant to primitive signed and unsigned integers
 pub trait Int: Integer
              + Primitive
-             + Bitwise
-             + BitCount {}
+             + Bitwise {}
 
 /// Used for representing the classification of floating point numbers
 #[deriving(Eq)]
diff --git a/src/libstd/num/u16.rs b/src/libstd/num/u16.rs
index 7e4145fc723..770db889af5 100644
--- a/src/libstd/num/u16.rs
+++ b/src/libstd/num/u16.rs
@@ -15,7 +15,7 @@
 use prelude::*;
 
 use default::Default;
-use num::BitCount;
+use num::{Bitwise, Bounded};
 use num::{CheckedAdd, CheckedSub, CheckedMul};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
diff --git a/src/libstd/num/u32.rs b/src/libstd/num/u32.rs
index 34c2a892d56..9e08ffed3b7 100644
--- a/src/libstd/num/u32.rs
+++ b/src/libstd/num/u32.rs
@@ -15,7 +15,7 @@
 use prelude::*;
 
 use default::Default;
-use num::BitCount;
+use num::{Bitwise, Bounded};
 use num::{CheckedAdd, CheckedSub, CheckedMul};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
diff --git a/src/libstd/num/u64.rs b/src/libstd/num/u64.rs
index c307b038627..a579e7ebbbe 100644
--- a/src/libstd/num/u64.rs
+++ b/src/libstd/num/u64.rs
@@ -15,7 +15,7 @@
 use prelude::*;
 
 use default::Default;
-use num::BitCount;
+use num::{Bitwise, Bounded};
 #[cfg(target_word_size = "64")]
 use num::CheckedMul;
 use num::{CheckedAdd, CheckedSub};
diff --git a/src/libstd/num/u8.rs b/src/libstd/num/u8.rs
index 06bda72c5fe..4aa34b6d880 100644
--- a/src/libstd/num/u8.rs
+++ b/src/libstd/num/u8.rs
@@ -15,7 +15,7 @@
 use prelude::*;
 
 use default::Default;
-use num::BitCount;
+use num::{Bitwise, Bounded};
 use num::{CheckedAdd, CheckedSub, CheckedMul};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
diff --git a/src/libstd/num/uint.rs b/src/libstd/num/uint.rs
index a752cd938ba..d304f947542 100644
--- a/src/libstd/num/uint.rs
+++ b/src/libstd/num/uint.rs
@@ -16,7 +16,7 @@ use prelude::*;
 
 use default::Default;
 use mem;
-use num::BitCount;
+use num::{Bitwise, Bounded};
 use num::{CheckedAdd, CheckedSub, CheckedMul};
 use num::{CheckedDiv, Zero, One, strconv};
 use num::{ToStrRadix, FromStrRadix};
diff --git a/src/libstd/num/uint_macros.rs b/src/libstd/num/uint_macros.rs
index 852fc5016b0..97e547a2d42 100644
--- a/src/libstd/num/uint_macros.rs
+++ b/src/libstd/num/uint_macros.rs
@@ -176,8 +176,6 @@ impl Integer for $T {
     fn is_odd(&self) -> bool { !self.is_even() }
 }
 
-impl Bitwise for $T {}
-
 #[cfg(not(test))]
 impl BitOr<$T,$T> for $T {
     #[inline]
@@ -298,7 +296,7 @@ impl Primitive for $T {
     fn is_signed(_: Option<$T>) -> bool { false }
 }
 
-impl BitCount for $T {
+impl Bitwise for $T {
     /// Counts the number of bits set. Wraps LLVM's `ctpop` intrinsic.
     #[inline]
     fn population_count(&self) -> $T {
@@ -325,6 +323,7 @@ mod tests {
 
     use num;
     use num::CheckedDiv;
+    use num::Bitwise;
     use mem;
     use u16;
 
diff --git a/src/libstd/prelude.rs b/src/libstd/prelude.rs
index 9045bafbe45..2f5f3e8f456 100644
--- a/src/libstd/prelude.rs
+++ b/src/libstd/prelude.rs
@@ -58,8 +58,7 @@ pub use iter::{FromIterator, Extendable};
 pub use iter::{Iterator, DoubleEndedIterator, RandomAccessIterator, CloneableIterator};
 pub use iter::{OrdIterator, MutableDoubleEndedIterator, ExactSize};
 pub use num::Times;
-pub use num::{Bitwise, BitCount, Bounded, Integer, Real};
-pub use num::{Num, NumCast, CheckedAdd, CheckedSub, CheckedMul};
+pub use num::{Integer, Real, Num, NumCast, CheckedAdd, CheckedSub, CheckedMul};
 pub use num::{Orderable, Signed, Unsigned, Round};
 pub use num::{Primitive, Int, Float, ToStrRadix, ToPrimitive, FromPrimitive};
 pub use path::{GenericPath, Path, PosixPath, WindowsPath};