Permalink
Comparing changes
Open a pull request
- 5 commits
- 176 files changed
- 0 commit comments
- 1 contributor
Unified
Split
Showing
with
743 additions
and 584 deletions.
- +4 −4 src/doc/trpl/ffi.md
- +1 −1 src/doc/trpl/lang-items.md
- +2 −2 src/doc/trpl/no-stdlib.md
- +2 −1 src/etc/unicode.py
- +3 −3 src/grammar/verify.rs
- +5 −3 src/liballoc/heap.rs
- +5 −4 src/libcollections/bit.rs
- +4 −3 src/libcollections/enum_set.rs
- +3 −2 src/libcollections/slice.rs
- +3 −3 src/libcollectionstest/bit/set.rs
- +5 −5 src/libcollectionstest/bit/vec.rs
- +1 −1 src/libcore/atomic.rs
- +2 −1 src/libcore/hash/mod.rs
- +7 −6 src/libcore/iter.rs
- +9 −6 src/libcore/num/flt2dec/mod.rs
- +15 −14 src/libcore/num/flt2dec/strategy/dragon.rs
- +10 −9 src/libcore/num/flt2dec/strategy/grisu.rs
- +119 −2 src/libcore/num/mod.rs
- +17 −16 src/libcore/num/wrapping.rs
- +7 −6 src/libcore/str/mod.rs
- +1 −1 src/libcoretest/iter.rs
- +2 −2 src/libflate/lib.rs
- +1 −1 src/libfmt_macros/lib.rs
- +1 −1 src/libgraphviz/lib.rs
- +1 −1 src/liblog/lib.rs
- +3 −2 src/librand/distributions/mod.rs
- +5 −4 src/librand/isaac.rs
- +3 −2 src/librand/rand_impls.rs
- +27 −27 src/librbml/lib.rs
- +1 −1 src/librustc/diagnostics.rs
- +4 −4 src/librustc/metadata/cstore.rs
- +9 −9 src/librustc/metadata/decoder.rs
- +4 −4 src/librustc/metadata/encoder.rs
- +5 −5 src/librustc/metadata/loader.rs
- +1 −1 src/librustc/metadata/tydecode.rs
- +1 −1 src/librustc/middle/dataflow.rs
- +1 −1 src/librustc/middle/dependency_format.rs
- +31 −31 src/librustc/middle/infer/region_inference/mod.rs
- +7 −7 src/librustc/middle/infer/type_variable.rs
- +3 −3 src/librustc/middle/subst.rs
- +3 −3 src/librustc/middle/traits/select.rs
- +3 −3 src/librustc/middle/ty.rs
- +7 −7 src/librustc_data_structures/unify/mod.rs
- +2 −2 src/librustc_llvm/archive_ro.rs
- +1 −1 src/librustc_llvm/lib.rs
- +3 −3 src/librustc_trans/back/link.rs
- +2 −1 src/librustc_trans/back/lto.rs
- +13 −12 src/librustc_trans/trans/adt.rs
- +1 −1 src/librustc_trans/trans/base.rs
- +3 −3 src/librustc_trans/trans/cabi_aarch64.rs
- +3 −3 src/librustc_trans/trans/cabi_arm.rs
- +2 −2 src/librustc_trans/trans/cabi_mips.rs
- +2 −2 src/librustc_trans/trans/cabi_powerpc.rs
- +2 −2 src/librustc_trans/trans/cabi_x86_64.rs
- +1 −1 src/librustc_trans/trans/context.rs
- +10 −8 src/librustc_trans/trans/debuginfo/metadata.rs
- +4 −4 src/librustc_trans/trans/intrinsic.rs
- +1 −1 src/librustc_trans/trans/tvec.rs
- +8 −6 src/librustc_trans/trans/type_.rs
- +2 −2 src/librustc_typeck/astconv.rs
- +1 −1 src/librustc_typeck/check/mod.rs
- +1 −1 src/librustc_typeck/collect.rs
- +5 −5 src/librustc_typeck/variance.rs
- +2 −1 src/librustc_unicode/tables.rs
- +2 −1 src/librustc_unicode/u_str.rs
- +1 −1 src/librustdoc/html/markdown.rs
- +2 −2 src/librustdoc/html/render.rs
- +5 −5 src/libserialize/hex.rs
- +6 −6 src/libserialize/json.rs
- +2 −2 src/libstd/ascii.rs
- +3 −2 src/libstd/collections/hash/map.rs
- +3 −2 src/libstd/collections/hash/table.rs
- +2 −1 src/libstd/ffi/c_str.rs
- +2 −2 src/libstd/fs.rs
- +5 −5 src/libstd/io/cursor.rs
- +4 −3 src/libstd/io/mod.rs
- +1 −0 src/libstd/num/mod.rs
- +2 −0 src/libstd/prelude/v1.rs
- +1 −1 src/libstd/rand/os.rs
- +10 −9 src/libstd/sys/common/net.rs
- +1 −1 src/libstd/sys/common/stack.rs
- +2 −2 src/libstd/sys/common/thread_local.rs
- +1 −1 src/libstd/sys/unix/backtrace.rs
- +3 −2 src/libstd/sys/unix/c.rs
- +3 −2 src/libstd/sys/unix/fd.rs
- +4 −3 src/libstd/sys/unix/fs.rs
- +8 −8 src/libstd/sys/unix/os.rs
- +2 −2 src/libstd/sys/unix/stack_overflow.rs
- +9 −8 src/libstd/sys/unix/thread.rs
- +2 −1 src/libstd/sys/windows/c.rs
- +1 −1 src/libstd/sys/windows/condvar.rs
- +2 −1 src/libstd/sys/windows/fs.rs
- +2 −2 src/libstd/sys/windows/handle.rs
- +1 −1 src/libstd/sys/windows/mod.rs
- +1 −1 src/libstd/sys/windows/net.rs
- +3 −3 src/libstd/sys/windows/os.rs
- +2 −1 src/libstd/sys/windows/stack_overflow.rs
- +3 −3 src/libstd/sys/windows/stdio.rs
- +1 −1 src/libsyntax/ast.rs
- +5 −5 src/libsyntax/ast_map/mod.rs
- +4 −4 src/libsyntax/codemap.rs
- +4 −4 src/libsyntax/ext/mtwt.rs
- +5 −5 src/libsyntax/parse/parser.rs
- +1 −1 src/libsyntax/print/pp.rs
- +5 −5 src/libterm/terminfo/parm.rs
- +17 −17 src/libterm/terminfo/parser/compiled.rs
- +6 −6 src/libtest/lib.rs
- +3 −3 src/libtest/stats.rs
- +4 −4 src/test/auxiliary/xcrate_static_addresses.rs
- +4 −4 src/test/bench/noise.rs
- +6 −6 src/test/bench/shootout-fannkuch-redux.rs
- +4 −4 src/test/bench/shootout-k-nucleotide.rs
- +2 −2 src/test/bench/shootout-meteor.rs
- +3 −3 src/test/bench/shootout-reverse-complement.rs
- +1 −1 src/test/bench/shootout-threadring.rs
- +12 −12 src/test/bench/sudoku.rs
- +2 −2 src/test/compile-fail/cast-rfc0401.rs
- +2 −2 src/test/compile-fail/const-eval-overflow-3.rs
- +2 −2 src/test/compile-fail/const-eval-overflow-3b.rs
- +2 −2 src/test/compile-fail/const-eval-overflow-4.rs
- +2 −2 src/test/compile-fail/const-eval-overflow-4b.rs
- +3 −3 src/test/compile-fail/fat-ptr-cast.rs
- +1 −1 src/test/compile-fail/huge-array-simple.rs
- +1 −1 src/test/compile-fail/issue-10991.rs
- +1 −1 src/test/compile-fail/issue-13359.rs
- +1 −1 src/test/compile-fail/issue-17458.rs
- +1 −1 src/test/compile-fail/issue-18294.rs
- +1 −1 src/test/compile-fail/non-constant-enum-for-vec-repeat.rs
- +1 −1 src/test/debuginfo/lexical-scopes-in-block-expression.rs
- +1 −1 src/test/pretty/block-disambig.rs
- +10 −10 src/test/pretty/issue-4264.pp
- +2 −2 src/test/run-fail/bug-2470-bounds-check-overflow-3.rs
- +1 −1 src/test/run-fail/bug-2470-bounds-check-overflow.rs
- +1 −1 src/test/run-make/extern-flag-disambiguates/d.rs
- +1 −1 src/test/run-make/issue-25581/test.rs
- +1 −1 src/test/run-pass/arith-1.rs
- +2 −2 src/test/run-pass/as-precedence.rs
- +1 −1 src/test/run-pass/assignability-trait.rs
- +1 −1 src/test/run-pass/associated-types-constant-type.rs
- +2 −2 src/test/run-pass/bitwise.rs
- +1 −1 src/test/run-pass/borrowck-borrow-from-expr-block.rs
- +1 −1 src/test/run-pass/box-of-array-of-drop-1.rs
- +1 −1 src/test/run-pass/box-of-array-of-drop-2.rs
- +1 −1 src/test/run-pass/cast-in-array-size.rs
- +1 −1 src/test/run-pass/cast-rfc0401.rs
- +2 −2 src/test/run-pass/class-impl-very-parameterized-trait.rs
- +2 −2 src/test/run-pass/const-block.rs
- +1 −1 src/test/run-pass/empty-tag.rs
- +1 −1 src/test/run-pass/expr-if-struct.rs
- +1 −1 src/test/run-pass/expr-match-struct.rs
- +2 −2 src/test/run-pass/fat-ptr-cast.rs
- +2 −2 src/test/run-pass/foreach-nested.rs
- +1 −1 src/test/run-pass/intrinsic-return-address.rs
- +2 −2 src/test/run-pass/issue-2074.rs
- +1 −1 src/test/run-pass/issue-21486.rs
- +4 −4 src/test/run-pass/issue-2895.rs
- +4 −4 src/test/run-pass/issue-3563-3.rs
- +3 −3 src/test/run-pass/issue-4241.rs
- +1 −1 src/test/run-pass/issue-9942.rs
- +1 −1 src/test/run-pass/mutable-alias-vec.rs
- +1 −1 src/test/run-pass/nested-vec-3.rs
- +1 −1 src/test/run-pass/running-with-no-runtime.rs
- +1 −0 src/test/run-pass/sepcomp-lib-lto.rs
- +18 −18 src/test/run-pass/shift.rs
- +1 −1 src/test/run-pass/static-impl.rs
- +1 −1 src/test/run-pass/struct-order-of-eval-3.rs
- +1 −1 src/test/run-pass/struct-order-of-eval-4.rs
- +5 −5 src/test/run-pass/struct-return.rs
- +1 −1 src/test/run-pass/structured-compare.rs
- +15 −15 src/test/run-pass/supported-cast.rs
- +1 −1 src/test/run-pass/tag-variant-disr-val.rs
- +11 −11 src/test/run-pass/type-sizes.rs
- +1 −1 src/test/run-pass/typeck_type_placeholder_1.rs
- +1 −1 src/test/run-pass/uint.rs
- +2 −2 src/test/run-pass/utf8.rs
- +1 −1 src/test/run-pass/vec-repeat-with-cast.rs
| @@ -120,11 +120,11 @@ pub fn compress(src: &[u8]) -> Vec<u8> { | |||
| let psrc = src.as_ptr(); | |||
| let mut dstlen = snappy_max_compressed_length(srclen); | |||
| let mut dst = Vec::with_capacity(dstlen as usize); | |||
| let mut dst = Vec::with_capacity(dstlen); | |||
| let pdst = dst.as_mut_ptr(); | |||
| snappy_compress(psrc, srclen, pdst, &mut dstlen); | |||
| dst.set_len(dstlen as usize); | |||
| dst.set_len(dstlen); | |||
| dst | |||
| } | |||
| } | |||
| @@ -153,11 +153,11 @@ pub fn uncompress(src: &[u8]) -> Option<Vec<u8>> { | |||
| let mut dstlen: size_t = 0; | |||
| snappy_uncompressed_length(psrc, srclen, &mut dstlen); | |||
| let mut dst = Vec::with_capacity(dstlen as usize); | |||
| let mut dst = Vec::with_capacity(dstlen); | |||
| let pdst = dst.as_mut_ptr(); | |||
| if snappy_uncompress(psrc, srclen, pdst, &mut dstlen) == 0 { | |||
| dst.set_len(dstlen as usize); | |||
| dst.set_len(dstlen); | |||
| Some(dst) | |||
| } else { | |||
| None // SNAPPY_INVALID_INPUT | |||
| @@ -33,7 +33,7 @@ unsafe fn allocate(size: usize, _align: usize) -> *mut u8 { | |||
| let p = libc::malloc(size as libc::size_t) as *mut u8; | |||
| // malloc failed | |||
| if p as usize == 0 { | |||
| if p == 0 { | |||
| abort(); | |||
| } | |||
| @@ -128,8 +128,8 @@ pub extern fn dot_product(a: *const u32, a_len: u32, | |||
| // cannot tell the pointers are valid. | |||
| let (a_slice, b_slice): (&[u32], &[u32]) = unsafe { | |||
| mem::transmute(( | |||
| Slice { data: a, len: a_len as usize }, | |||
| Slice { data: b, len: b_len as usize }, | |||
| Slice { data: a, len: a_len }, | |||
| Slice { data: b, len: b_len }, | |||
| )) | |||
| }; | |||
| @@ -406,6 +406,7 @@ def emit_charwidth_module(f, width_table): | |||
| f.write(" use core::option::Option::{Some, None};\n") | |||
| f.write(" use core::slice::SliceExt;\n") | |||
| f.write(" use core::result::Result::{Ok, Err};\n") | |||
| f.write(" use core::num::Widen;\n") | |||
| f.write(""" | |||
| fn bsearch_range_value_table(c: char, is_cjk: bool, r: &'static [(char, char, u8, u8)]) -> u8 { | |||
| use core::cmp::Ordering::{Equal, Less, Greater}; | |||
| @@ -430,7 +431,7 @@ def emit_charwidth_module(f, width_table): | |||
| cu if cu < 0x20 => None, // control sequences have no width | |||
| cu if cu < 0x7F => Some(1), // ASCII | |||
| cu if cu < 0xA0 => None, // more control sequences | |||
| _ => Some(bsearch_range_value_table(c, is_cjk, charwidth_table) as usize) | |||
| _ => Some(bsearch_range_value_table(c, is_cjk, charwidth_table).widen()) | |||
| } | |||
| } | |||
| @@ -226,8 +226,8 @@ fn parse_antlr_token(s: &str, tokens: &HashMap<String, token::Token>, surrogate_ | |||
| let mut hi = end.parse::<u32>().unwrap() + 1 - offset; | |||
|
|
|||
| // Adjust the span: For each surrogate pair already encountered, subtract one position. | |||
| lo -= surrogate_pairs_pos.binary_search(&(lo as usize)).unwrap_or_else(|x| x) as u32; | |||
| hi -= surrogate_pairs_pos.binary_search(&(hi as usize)).unwrap_or_else(|x| x) as u32; | |||
| lo -= surrogate_pairs_pos.binary_search(&(lo)).unwrap_or_else(|x| x) as u32; | |||
| hi -= surrogate_pairs_pos.binary_search(&(hi)).unwrap_or_else(|x| x) as u32; | |||
|
|
|||
| let sp = codemap::Span { | |||
| lo: codemap::BytePos(lo), | |||
| @@ -274,7 +274,7 @@ fn main() { | |||
| File::open(&Path::new(&filename)).unwrap().read_to_string(&mut code).unwrap(); | |||
|
|
|||
| let surrogate_pairs_pos: Vec<usize> = code.chars().enumerate() | |||
| .filter(|&(_, c)| c as usize > 0xFFFF) | |||
| .filter(|&(_, c)| c > 0xFFFF) | |||
| .map(|(n, _)| n) | |||
| .enumerate() | |||
| .map(|(x, n)| x + n) | |||
| @@ -9,11 +9,12 @@ | |||
| // except according to those terms. | |||
|
|
|||
| use core::{isize, usize}; | |||
| use core::num::ConvertSign; | |||
|
|
|||
| #[inline(always)] | |||
| fn check_size_and_alignment(size: usize, align: usize) { | |||
| debug_assert!(size != 0); | |||
| debug_assert!(size <= isize::MAX as usize, "Tried to allocate too much: {} bytes", size); | |||
| debug_assert!(size <= isize::MAX.as_unsigned(), "Tried to allocate too much: {} bytes", size); | |||
| debug_assert!(usize::is_power_of_two(align), "Invalid alignment of allocation: {}", align); | |||
| } | |||
|
|
|||
| @@ -204,6 +205,7 @@ mod imp { | |||
| use core::ptr::{null_mut, null}; | |||
| use libc::{c_char, c_int, c_void, size_t}; | |||
| use super::MIN_ALIGN; | |||
| use core::num::Widen; | |||
|
|
|||
| #[link(name = "jemalloc", kind = "static")] | |||
| #[cfg(not(test))] | |||
| @@ -254,7 +256,7 @@ mod imp { | |||
| pub unsafe fn reallocate_inplace(ptr: *mut u8, _old_size: usize, size: usize, | |||
| align: usize) -> usize { | |||
| let flags = align_to_flags(align); | |||
| je_xallocx(ptr as *mut c_void, size as size_t, 0, flags) as usize | |||
| je_xallocx(ptr as *mut c_void, size as size_t, 0, flags).widen() | |||
| } | |||
|
|
|||
| #[inline] | |||
| @@ -266,7 +268,7 @@ mod imp { | |||
| #[inline] | |||
| pub fn usable_size(size: usize, align: usize) -> usize { | |||
| let flags = align_to_flags(align); | |||
| unsafe { je_nallocx(size as size_t, flags) as usize } | |||
| unsafe { je_nallocx(size as size_t, flags).widen() } | |||
| } | |||
|
|
|||
| pub fn stats_print() { | |||
| @@ -54,7 +54,7 @@ | |||
| //! bv.set(0, false); | |||
| //! bv.set(1, false); | |||
| //! | |||
| //! for i in iter::range_inclusive(2, (max_prime as f64).sqrt() as usize) { | |||
| //! for i in iter::range_inclusive(2, (max_prime as f64).sqrt()) { | |||
| //! // if i is a prime | |||
| //! if bv[i] { | |||
| //! // Mark all multiples of i as non-prime (any multiples below i * i | |||
| @@ -90,6 +90,7 @@ use core::iter::RandomAccessIterator; | |||
| use core::iter::{Chain, Enumerate, Repeat, Skip, Take, repeat, Cloned}; | |||
| use core::iter::{self, FromIterator}; | |||
| use core::mem::swap; | |||
| use core::num::Widen; | |||
| use core::ops::Index; | |||
| use core::slice; | |||
| use core::{u8, u32, usize}; | |||
| @@ -1876,7 +1877,7 @@ impl BitSet { | |||
| #[inline] | |||
| #[stable(feature = "rust1", since = "1.0.0")] | |||
| pub fn len(&self) -> usize { | |||
| self.bit_vec.blocks().fold(0, |acc, n| acc + n.count_ones() as usize) | |||
| self.bit_vec.blocks().fold(0, |acc, n| acc + n.count_ones().widen_(0usize)) | |||
| } | |||
|
|
|||
| /// Returns whether there are no bits set in this set | |||
| @@ -2048,13 +2049,13 @@ impl<'a, T> Iterator for BlockIter<T> where T: Iterator<Item=u32> { | |||
| // update block, removing the LSB | |||
| self.head &= self.head - 1; | |||
| // return offset + (index of LSB) | |||
| Some(self.head_offset + (u32::count_ones(k) as usize)) | |||
| Some(self.head_offset + u32::count_ones(k).widen_(0usize)) | |||
| } | |||
|
|
|||
| #[inline] | |||
| fn size_hint(&self) -> (usize, Option<usize>) { | |||
| match self.tail.size_hint() { | |||
| (_, Some(h)) => (0, Some(1 + h * (u32::BITS as usize))), | |||
| (_, Some(h)) => (0, Some(1 + h * (u32::BITS))), | |||
| _ => (0, None) | |||
| } | |||
| } | |||
| @@ -18,6 +18,7 @@ use core::marker; | |||
| use core::fmt; | |||
| use core::iter::{FromIterator}; | |||
| use core::ops::{Sub, BitOr, BitAnd, BitXor}; | |||
| use core::num::Widen; | |||
|
|
|||
| // FIXME(contentions): implement union family of methods? (general design may be wrong here) | |||
|
|
|||
| @@ -68,7 +69,7 @@ impl<E:CLike + fmt::Debug> fmt::Debug for EnumSet<E> { | |||
| /// | |||
| /// impl CLike for Foo { | |||
| /// fn to_usize(&self) -> usize { | |||
| /// *self as usize | |||
| /// *self | |||
| /// } | |||
| /// | |||
| /// fn from_usize(v: usize) -> Foo { | |||
| @@ -103,7 +104,7 @@ impl<E:CLike> EnumSet<E> { | |||
| #[unstable(feature = "collections", | |||
| reason = "matches collection reform specification, waiting for dust to settle")] | |||
| pub fn len(&self) -> usize { | |||
| self.bits.count_ones() as usize | |||
| self.bits.count_ones().widen() | |||
| } | |||
|
|
|||
| /// Returns true if the `EnumSet` is empty. | |||
| @@ -258,7 +259,7 @@ impl<E:CLike> Iterator for Iter<E> { | |||
| } | |||
|
|
|||
| fn size_hint(&self) -> (usize, Option<usize>) { | |||
| let exact = self.bits.count_ones() as usize; | |||
| let exact = self.bits.count_ones().widen(); | |||
| (exact, Some(exact)) | |||
| } | |||
| } | |||
| @@ -91,6 +91,7 @@ use core::iter::Iterator; | |||
| use core::marker::Sized; | |||
| use core::mem::size_of; | |||
| use core::mem; | |||
| use core::num::ConvertSign; | |||
| use core::ops::FnMut; | |||
| use core::option::Option::{self, Some, None}; | |||
| use core::ptr; | |||
| @@ -1259,7 +1260,7 @@ fn insertion_sort<T, F>(v: &mut [T], mut compare: F) where F: FnMut(&T, &T) -> O | |||
| let tmp = ptr::read(read_ptr); | |||
| ptr::copy(&*buf_v.offset(j), | |||
| buf_v.offset(j + 1), | |||
| (i - j) as usize); | |||
| (i - j).as_unsigned()); | |||
| ptr::copy_nonoverlapping(&tmp, buf_v.offset(j), 1); | |||
| mem::forget(tmp); | |||
| } | |||
| @@ -1335,7 +1336,7 @@ fn merge_sort<T, F>(v: &mut [T], mut compare: F) where F: FnMut(&T, &T) -> Order | |||
| // `.offset(j)` is always in bounds. | |||
| ptr::copy(&*buf_dat.offset(j), | |||
| buf_dat.offset(j + 1), | |||
| i - j as usize); | |||
| i - j.as_unsigned()); | |||
| ptr::copy_nonoverlapping(read_ptr, buf_dat.offset(j), 1); | |||
| } | |||
| } | |||
| @@ -467,7 +467,7 @@ mod bench { | |||
| let mut bit_vec = BitSet::new(); | |||
| b.iter(|| { | |||
| for _ in 0..100 { | |||
| bit_vec.insert((r.next_u32() as usize) % u32::BITS); | |||
| bit_vec.insert((r.next_u32().widen_(0usize)) % u32::BITS); | |||
| } | |||
| black_box(&bit_vec); | |||
| }); | |||
| @@ -479,7 +479,7 @@ mod bench { | |||
| let mut bit_vec = BitSet::new(); | |||
| b.iter(|| { | |||
| for _ in 0..100 { | |||
| bit_vec.insert((r.next_u32() as usize) % BENCH_BITS); | |||
| bit_vec.insert((r.next_u32().widen_(0usize)) % BENCH_BITS); | |||
| } | |||
| black_box(&bit_vec); | |||
| }); | |||
| @@ -492,7 +492,7 @@ mod bench { | |||
| b.iter(|| { | |||
| let mut sum = 0; | |||
| for idx in &bit_vec { | |||
| sum += idx as usize; | |||
| sum += idx; | |||
| } | |||
| sum | |||
| }) | |||
| @@ -781,10 +781,10 @@ mod bench { | |||
| #[bench] | |||
| fn bench_usize_small(b: &mut Bencher) { | |||
| let mut r = rng(); | |||
| let mut bit_vec = 0 as usize; | |||
| let mut bit_vec = 0; | |||
| b.iter(|| { | |||
| for _ in 0..100 { | |||
| bit_vec |= 1 << ((r.next_u32() as usize) % u32::BITS); | |||
| bit_vec |= 1 << ((r.next_u32().widen_(0usize)) % u32::BITS); | |||
| } | |||
| black_box(&bit_vec); | |||
| }); | |||
| @@ -796,7 +796,7 @@ mod bench { | |||
| let mut bit_vec = BitVec::from_elem(BENCH_BITS, false); | |||
| b.iter(|| { | |||
| for _ in 0..100 { | |||
| bit_vec.set((r.next_u32() as usize) % BENCH_BITS, true); | |||
| bit_vec.set((r.next_u32().widen_(0usize)) % BENCH_BITS, true); | |||
| } | |||
| black_box(&bit_vec); | |||
| }); | |||
| @@ -808,7 +808,7 @@ mod bench { | |||
| let mut bit_vec = BitVec::from_elem(BENCH_BITS, false); | |||
| b.iter(|| { | |||
| for _ in 0..100 { | |||
| bit_vec.set((r.next_u32() as usize) % BENCH_BITS, r.gen()); | |||
| bit_vec.set((r.next_u32().widen_(0usize)) % BENCH_BITS, r.gen()); | |||
| } | |||
| black_box(&bit_vec); | |||
| }); | |||
| @@ -820,7 +820,7 @@ mod bench { | |||
| let mut bit_vec = BitVec::from_elem(u32::BITS, false); | |||
| b.iter(|| { | |||
| for _ in 0..100 { | |||
| bit_vec.set((r.next_u32() as usize) % u32::BITS, true); | |||
| bit_vec.set((r.next_u32().widen_(0usize)) % u32::BITS, true); | |||
| } | |||
| black_box(&bit_vec); | |||
| }); | |||
| @@ -346,7 +346,7 @@ impl AtomicBool { | |||
| /// | |||
| /// let foo = AtomicBool::new(true); | |||
| /// assert_eq!(true, foo.fetch_nand(true, Ordering::SeqCst)); | |||
| /// assert_eq!(0, foo.load(Ordering::SeqCst) as usize); | |||
| /// assert_eq!(0, foo.load(Ordering::SeqCst)); | |||
| /// assert_eq!(false, foo.load(Ordering::SeqCst)); | |||
| /// | |||
| /// let foo = AtomicBool::new(false); | |||
| @@ -63,6 +63,7 @@ | |||
| use prelude::*; | |||
|
|
|||
| use mem; | |||
| use num::ConvertSign; | |||
|
|
|||
| pub use self::sip::SipHasher; | |||
|
|
|||
| @@ -160,7 +161,7 @@ pub trait Hasher { | |||
| /// Write a single `isize` into this hasher. | |||
| #[inline] | |||
| #[unstable(feature = "hash", reason = "module was recently redesigned")] | |||
| fn write_isize(&mut self, i: isize) { self.write_usize(i as usize) } | |||
| fn write_isize(&mut self, i: isize) { self.write_usize(i.as_unsigned()) } | |||
| } | |||
|
|
|||
| /// Hash a value with the default SipHasher algorithm (two initial keys of 0). | |||
| @@ -65,6 +65,7 @@ use default::Default; | |||
| use marker; | |||
| use mem; | |||
| use num::{Zero, One}; | |||
| use num::{ConvertSign, Widen}; | |||
| use ops::{self, Add, Sub, FnMut, Mul, RangeFrom}; | |||
| use option::Option::{self, Some, None}; | |||
| use marker::Sized; | |||
| @@ -2609,8 +2610,8 @@ macro_rules! step_impl_unsigned { | |||
| if *by == 0 { return None; } | |||
| if *start < *end { | |||
| // Note: We assume $t <= usize here | |||
| let diff = (*end - *start) as usize; | |||
| let by = *by as usize; | |||
| let diff = (*end - *start).widen_(0usize); | |||
| let by = by.widen_(0usize); | |||
| if diff % by > 0 { | |||
| Some(diff / by + 1) | |||
| } else { | |||
| @@ -2643,14 +2644,14 @@ macro_rules! step_impl_signed { | |||
| // Note: We assume $t <= isize here | |||
| // Use .wrapping_sub and cast to usize to compute the | |||
| // difference that may not fit inside the range of isize. | |||
| diff = (*end as isize).wrapping_sub(*start as isize) as usize; | |||
| by_u = *by as usize; | |||
| diff = (*end as isize).wrapping_sub(*start as isize).as_unsigned(); | |||
| by_u = by.as_unsigned().widen(); | |||
| } else { | |||
| if *start <= *end { | |||
| return Some(0); | |||
| } | |||
| diff = (*start as isize).wrapping_sub(*end as isize) as usize; | |||
| by_u = (*by as isize).wrapping_mul(-1) as usize; | |||
| diff = (*start as isize).wrapping_sub(*end as isize).as_unsigned(); | |||
| by_u = (*by as isize).wrapping_mul(-1).as_unsigned(); | |||
| } | |||
| if diff % by_u > 0 { | |||
| Some(diff / by_u + 1) | |||
Oops, something went wrong.