diff options
| author | bors <bors@rust-lang.org> | 2014-01-15 20:36:48 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-01-15 20:36:48 -0800 |
| commit | 6708558c341d0c4fd467636ee2b2695c125ae4d3 (patch) | |
| tree | 749c0f4101e416ca51e7a454be00d6ed4f180baa /src/libstd | |
| parent | bf2ab22cd0eda8e019cb243916e6c127708739cf (diff) | |
| parent | 1dd6906db2e6749bc3f113068e7493070b276feb (diff) | |
| download | rust-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.rs | 2 | ||||
| -rw-r--r-- | src/libstd/num/f64.rs | 2 | ||||
| -rw-r--r-- | src/libstd/num/i16.rs | 4 | ||||
| -rw-r--r-- | src/libstd/num/i32.rs | 4 | ||||
| -rw-r--r-- | src/libstd/num/i64.rs | 4 | ||||
| -rw-r--r-- | src/libstd/num/i8.rs | 4 | ||||
| -rw-r--r-- | src/libstd/num/int.rs | 6 | ||||
| -rw-r--r-- | src/libstd/num/int_macros.rs | 3 | ||||
| -rw-r--r-- | src/libstd/num/mod.rs | 31 | ||||
| -rw-r--r-- | src/libstd/num/u16.rs | 2 | ||||
| -rw-r--r-- | src/libstd/num/u32.rs | 2 | ||||
| -rw-r--r-- | src/libstd/num/u64.rs | 2 | ||||
| -rw-r--r-- | src/libstd/num/u8.rs | 2 | ||||
| -rw-r--r-- | src/libstd/num/uint.rs | 2 | ||||
| -rw-r--r-- | src/libstd/num/uint_macros.rs | 5 | ||||
| -rw-r--r-- | src/libstd/prelude.rs | 3 |
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}; |
