1. 11 1月, 2014 9 次提交
    • K
      extra::workcache: Remove unused Logger · d578ecc4
      klutzy 提交于
      d578ecc4
    • B
      auto merge of #11416 : bjz/rust/remove-print-fns, r=alexcrichton · a34727f2
      bors 提交于
      The `print!` and `println!` macros are now the preferred method of printing, and so there is no reason to export the `stdio` functions in the prelude. The functions have also been replaced by their macro counterparts in the tutorial and other documentation so that newcomers don't get confused about what they should be using.
      a34727f2
    • B
      auto merge of #11415 : nick29581/rust/visit_trait_option, r=alexcrichton · 5a6ca45c
      bors 提交于
      ...Therefore, we should not iterate over it.
      5a6ca45c
    • B
      Remove re-exports of std::io::stdio::{print, println} in the prelude. · 4fc0452a
      Brendan Zabarauskas 提交于
      The `print!` and `println!` macros are now the preferred method of printing, and so there is no reason to export the `stdio` functions in the prelude. The functions have also been replaced by their macro counterparts in the tutorial and other documentation so that newcomers don't get confused about what they should be using.
      4fc0452a
    • B
      auto merge of #11448 : c-a/rust/u64_from_be_bytes, r=alexcrichton · f411b94c
      bors 提交于
      Instead of reading a byte at a time in a loop we hardcode how to read each size.
      We also try to do as few reads as possible by reading as big primitive types as
      possible. For example if size is eight we do a single read of a u64 value and
      if size is seven we read it as [u32|u16|u8].
      
      Timings on a Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz
      
      -- Before --
      running 7 tests
      test io::extensions::test::test_u64_from_be_bytes ... ok
      test io::extensions::bench::u64_from_be_bytes_4_aligned         ... bench:       386 ns/iter (+/- 5)
      test io::extensions::bench::u64_from_be_bytes_4_unaligned       ... bench:       387 ns/iter (+/- 2)
      test io::extensions::bench::u64_from_be_bytes_7_aligned         ... bench:       628 ns/iter (+/- 1)
      test io::extensions::bench::u64_from_be_bytes_7_unaligned       ... bench:       637 ns/iter (+/- 3)
      test io::extensions::bench::u64_from_be_bytes_8_aligned         ... bench:       727 ns/iter (+/- 18)
      test io::extensions::bench::u64_from_be_bytes_8_unaligned       ... bench:       723 ns/iter (+/- 22)
      
      callgrind rustc -S  rust/src/test/bench/sudoku.rs
          u64_from_be_bytes self: 4.37%
      
      -- After --
      running 7 tests
      test io::extensions::test::test_u64_from_be_bytes ... ok
      test io::extensions::bench::u64_from_be_bytes_4_aligned         ... bench:       162 ns/iter (+/- 7)
      test io::extensions::bench::u64_from_be_bytes_4_unaligned       ... bench:       164 ns/iter (+/- 7)
      test io::extensions::bench::u64_from_be_bytes_7_aligned         ... bench:       201 ns/iter (+/- 7)
      test io::extensions::bench::u64_from_be_bytes_7_unaligned       ... bench:       210 ns/iter (+/- 9)
      test io::extensions::bench::u64_from_be_bytes_8_aligned         ... bench:       163 ns/iter (+/- 7)
      test io::extensions::bench::u64_from_be_bytes_8_unaligned       ... bench:       163 ns/iter (+/- 10)
      
      callgrind rustc -S  rust/src/test/bench/sudoku.rs
          u64_from_be_bytes self: 1.78%
      f411b94c
    • B
      auto merge of #11449 : rcatolino/rust/assign-binop-handling, r=alexcrichton · 33e86633
      bors 提交于
      So far the following code
      ```
      struct Foo;
      
      fn main() {
        let mut t = Foo;
        let ref b = Foo;
        a += *b;
      }
      ```
      errors with 
      ```
      test.rs:15:3: 13:11 error: binary operation + cannot be applied to type `Foo`
      test.rs:15   *a += *b;
      ```
      Since assignment-operators are no longer expanded to ```left = left OP right``` but are independents operators it should be 
      ```
      test.rs:15:3: 13:11 error: binary operation += cannot be applied to type `Foo`
      test.rs:15   *a += *b;
      ```
      to make it clear that implementing Add for Foo is not gonna work. (cf issues #11143, #11344)
      
      Besides that, we also need to typecheck the rhs expression even if the operator has no implementation, or we end up with unknown types for the nodes of the rhs and an ICE later on while resolving types. (once again cf #11143 and #11344).
      
      This probably would get fixed with #5992, but in the meantime it's a confusing error to stumble upon.
      @pcwalton, you wrote the original code, what do you think?
      (closes #11143 and #11344)
      33e86633
    • R
      Improve invalid operator assignment handling. · 02d86216
      Raphael Catolino 提交于
      02d86216
    • C
      std::io: Optimize u64_from_be_bytes() · 0b3311c2
      Carl-Anton Ingmarsson 提交于
      Instead of reading a byte at a time in a loop we copy the relevant bytes into
      a temporary vector of size eight. We can then read the value from the temporary
      vector using a single u64 read. LLVM seems to be able to optimize this
      almost scarily good.
      0b3311c2
    • B
      auto merge of #11452 : derekchiang/rust/fix-11421, r=cmr · ff7ecca2
      bors 提交于
      Closes #11421.  A pretty trivial fix.
      ff7ecca2
  2. 10 1月, 2014 31 次提交