diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 6d6ca59ce01eda067a5d8e5b70c51510543c9a83..f6c5ffd540255468f15d15e876d284134fd59ad0 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -406,7 +406,7 @@ pub trait Int: Primitive /// /// assert_eq!(n.count_ones(), 3); /// ``` - fn count_ones(self) -> Self; + fn count_ones(self) -> uint; /// Returns the number of zeros in the binary representation of the integer. /// @@ -418,7 +418,7 @@ pub trait Int: Primitive /// assert_eq!(n.count_zeros(), 5); /// ``` #[inline] - fn count_zeros(self) -> Self { + fn count_zeros(self) -> uint { (!self).count_ones() } @@ -432,7 +432,7 @@ fn count_zeros(self) -> Self { /// /// assert_eq!(n.leading_zeros(), 10); /// ``` - fn leading_zeros(self) -> Self; + fn leading_zeros(self) -> uint; /// Returns the number of trailing zeros in the binary representation /// of the integer. @@ -444,7 +444,7 @@ fn count_zeros(self) -> Self { /// /// assert_eq!(n.trailing_zeros(), 3); /// ``` - fn trailing_zeros(self) -> Self; + fn trailing_zeros(self) -> uint; /// Shifts the bits to the left by a specified amount amount, `n`, wrapping /// the truncated bits to the end of the resulting integer. @@ -569,13 +569,13 @@ fn to_le(self) -> Self { ($T:ty, $BITS:expr, $ctpop:path, $ctlz:path, $cttz:path, $bswap:path) => { impl Int for $T { #[inline] - fn count_ones(self) -> $T { unsafe { $ctpop(self) } } + fn count_ones(self) -> uint { unsafe { $ctpop(self) as uint } } #[inline] - fn leading_zeros(self) -> $T { unsafe { $ctlz(self) } } + fn leading_zeros(self) -> uint { unsafe { $ctlz(self) as uint } } #[inline] - fn trailing_zeros(self) -> $T { unsafe { $cttz(self) } } + fn trailing_zeros(self) -> uint { unsafe { $cttz(self) as uint } } #[inline] fn rotate_left(self, n: uint) -> $T { @@ -629,13 +629,13 @@ unsafe fn bswap8(x: u8) -> u8 { x } ($T:ty, $U:ty) => { impl Int for $T { #[inline] - fn count_ones(self) -> $T { (self as $U).count_ones() as $T } + fn count_ones(self) -> uint { (self as $U).count_ones() } #[inline] - fn leading_zeros(self) -> $T { (self as $U).leading_zeros() as $T } + fn leading_zeros(self) -> uint { (self as $U).leading_zeros() } #[inline] - fn trailing_zeros(self) -> $T { (self as $U).trailing_zeros() as $T } + fn trailing_zeros(self) -> uint { (self as $U).trailing_zeros() } #[inline] fn rotate_left(self, n: uint) -> $T { (self as $U).rotate_left(n) as $T } diff --git a/src/libcoretest/num/int_macros.rs b/src/libcoretest/num/int_macros.rs index a2a9a05e868abfa21b864648ec6f851b04c0e054..f74f503383b7df8433c560b31606309a30ea448e 100644 --- a/src/libcoretest/num/int_macros.rs +++ b/src/libcoretest/num/int_macros.rs @@ -95,9 +95,9 @@ fn test_count_ones() { #[test] fn test_count_zeros() { - assert!(A.count_zeros() == BITS as $T - 3); - assert!(B.count_zeros() == BITS as $T - 2); - assert!(C.count_zeros() == BITS as $T - 5); + assert!(A.count_zeros() == BITS - 3); + assert!(B.count_zeros() == BITS - 2); + assert!(C.count_zeros() == BITS - 5); } #[test] diff --git a/src/libcoretest/num/uint_macros.rs b/src/libcoretest/num/uint_macros.rs index a823e8d3f5754e3b129a7a3bc50f5944510daa8c..e59e2378ba2425e3495ddd3e871f3088383d3181 100644 --- a/src/libcoretest/num/uint_macros.rs +++ b/src/libcoretest/num/uint_macros.rs @@ -55,9 +55,9 @@ fn test_count_ones() { #[test] fn test_count_zeros() { - assert!(A.count_zeros() == BITS as $T - 3); - assert!(B.count_zeros() == BITS as $T - 2); - assert!(C.count_zeros() == BITS as $T - 5); + assert!(A.count_zeros() == BITS - 3); + assert!(B.count_zeros() == BITS - 2); + assert!(C.count_zeros() == BITS - 5); } #[test] diff --git a/src/libnum/bigint.rs b/src/libnum/bigint.rs index 68cfe061121eab064daec80244deae6ae448f1c8..39e21cfc48664fdcdea445ebc041b960c2e2fefe 100644 --- a/src/libnum/bigint.rs +++ b/src/libnum/bigint.rs @@ -807,7 +807,7 @@ fn shr_bits(&self, n_bits: uint) -> BigUint { pub fn bits(&self) -> uint { if self.is_zero() { return 0; } let zeros = self.data.last().unwrap().leading_zeros(); - return self.data.len()*BigDigit::bits - (zeros as uint); + return self.data.len()*BigDigit::bits - zeros; } }