diff --git a/Cargo.toml b/Cargo.toml
index abe1449..33f88a2 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
 [package]
 
 name = "rand"
-version = "0.3.4"
+version = "0.3.5"
 authors = ["The Rust Project Developers"]
 license = "MIT/Apache-2.0"
 readme = "README.md"
diff --git a/src/distributions/range.rs b/src/distributions/range.rs
index a3a3c46..4eee786 100644
--- a/src/distributions/range.rs
+++ b/src/distributions/range.rs
@@ -88,7 +88,7 @@
 }
 
 macro_rules! integer_impl {
-    ($ty:ty, $unsigned:ty) => {
+    ($ty:ty, $unsigned:ident) => {
         impl SampleRange for $ty {
             // we play free and fast with unsigned vs signed here
             // (when $ty is signed), but that's fine, since the
@@ -98,7 +98,7 @@
 
             fn construct_range(low: $ty, high: $ty) -> Range<$ty> {
                 let range = (w(high as $unsigned) - w(low as $unsigned)).0;
-                let unsigned_max: $unsigned = -1 as $unsigned;
+                let unsigned_max: $unsigned = ::std::$unsigned::MAX;
 
                 // this is the largest number that fits into $unsigned
                 // that `range` divides evenly, so, if we've sampled
@@ -163,7 +163,6 @@
 
 #[cfg(test)]
 mod tests {
-    use std::num::Int;
     use distributions::{Sample, IndependentSample};
     use super::Range as Range;
 
@@ -182,11 +181,11 @@
     fn test_integers() {
         let mut rng = ::test::rng();
         macro_rules! t {
-            ($($ty:ty),*) => {{
+            ($($ty:ident),*) => {{
                 $(
                    let v: &[($ty, $ty)] = &[(0, 10),
                                             (10, 127),
-                                            (Int::min_value(), Int::max_value())];
+                                            (::std::$ty::MIN, ::std::$ty::MAX)];
                    for &(low, high) in v.iter() {
                         let mut sampler: Range<$ty> = Range::new(low, high);
                         for _ in 0..1000 {
diff --git a/src/rand_impls.rs b/src/rand_impls.rs
index d594ee2..0303a9c 100644
--- a/src/rand_impls.rs
+++ b/src/rand_impls.rs
@@ -11,15 +11,14 @@
 //! The implementations of `Rand` for the built-in types.
 
 use std::char;
-use std::isize;
-use std::usize;
+use std::mem;
 
 use {Rand,Rng};
 
 impl Rand for isize {
     #[inline]
     fn rand<R: Rng>(rng: &mut R) -> isize {
-        if isize::BITS == 32 {
+        if mem::size_of::<isize>() == 4 {
             rng.gen::<i32>() as isize
         } else {
             rng.gen::<i64>() as isize
@@ -58,7 +57,7 @@
 impl Rand for usize {
     #[inline]
     fn rand<R: Rng>(rng: &mut R) -> usize {
-        if usize::BITS == 32 {
+        if mem::size_of::<usize>() == 4 {
             rng.gen::<u32>() as usize
         } else {
             rng.gen::<u64>() as usize
diff --git a/src/read.rs b/src/read.rs
index f8547fb..efa9d60 100644
--- a/src/read.rs
+++ b/src/read.rs
@@ -78,7 +78,6 @@
 #[cfg(test)]
 mod test {
     use super::ReadRng;
-    use std::num::Int;
     use Rng;
 
     #[test]
