1. 29 9月, 2014 15 次提交
  2. 28 9月, 2014 7 次提交
  3. 27 9月, 2014 10 次提交
    • A
      complete btree rewrite · b6edc594
      Alexis Beingessner 提交于
      Replaces BTree with BTreeMap and BTreeSet, which are completely new implementations.
      BTreeMap's internal Node representation is particularly inefficient at the moment to
      make this first implementation easy to reason about and fairly safe. Both collections
      are also currently missing some of the tooling specific to sorted collections, which
      is planned as future work pending reform of these APIs. General implementation issues
      are discussed with TODOs internally
      
      Perf results on x86_64 Linux:
      
      test treemap::bench::find_rand_100                         ... bench:        76 ns/iter (+/- 4)
      test treemap::bench::find_rand_10_000                      ... bench:       163 ns/iter (+/- 6)
      test treemap::bench::find_seq_100                          ... bench:        77 ns/iter (+/- 3)
      test treemap::bench::find_seq_10_000                       ... bench:       115 ns/iter (+/- 1)
      test treemap::bench::insert_rand_100                       ... bench:       111 ns/iter (+/- 1)
      test treemap::bench::insert_rand_10_000                    ... bench:       996 ns/iter (+/- 18)
      test treemap::bench::insert_seq_100                        ... bench:       486 ns/iter (+/- 20)
      test treemap::bench::insert_seq_10_000                     ... bench:       800 ns/iter (+/- 15)
      
      test btree::map::bench::find_rand_100                      ... bench:        74 ns/iter (+/- 4)
      test btree::map::bench::find_rand_10_000                   ... bench:       153 ns/iter (+/- 5)
      test btree::map::bench::find_seq_100                       ... bench:        82 ns/iter (+/- 1)
      test btree::map::bench::find_seq_10_000                    ... bench:       108 ns/iter (+/- 0)
      test btree::map::bench::insert_rand_100                    ... bench:       220 ns/iter (+/- 1)
      test btree::map::bench::insert_rand_10_000                 ... bench:       620 ns/iter (+/- 16)
      test btree::map::bench::insert_seq_100                     ... bench:       411 ns/iter (+/- 12)
      test btree::map::bench::insert_seq_10_000                  ... bench:       534 ns/iter (+/- 14)
      
      BTreeMap still has a lot of room for optimization, but it's already beating out TreeMap on most access patterns.
      
      [breaking-change]
      b6edc594
    • B
      auto merge of #17511 : MatejLach/rust/iter_guide_typo, r=alexcrichton · 34dfa457
      bors 提交于
      The sentence "The new iterator `filter()` produces returns only the elements that that closure returned `true` for:"  can be structured as:
      
      "The new iterator `filter()` produces only the elements that that closure returned `true` for:"
      
      or as:
      
      "The new iterator `filter()` returns only the elements that that closure returned `true` for:"
      
      however, not both. 
      
      I went with "produces", since it then talks about returning true and having "return" so close together doesn't sound nice. 
      r @steveklabnik ?
      34dfa457
    • B
      auto merge of #17515 : mbrubeck/rust/patch-1, r=alexcrichton · e04e081f
      bors 提交于
      r? @steveklabnik 
      e04e081f
    • B
      auto merge of #17512 : nodakai/rust/fix-ptr-guide, r=alexcrichton · 6cde5c34
      bors 提交于
      Fix rust-lang/rust#17255
      
      This is such a trivial change.  Devs: perhaps you might want to omit to run `make check` on Travis.
      6cde5c34
    • B
      auto merge of #17469 : sfackler/rust/into-result, r=aturon · 606bf110
      bors 提交于
      This is the inverse of `Result::ok` and helps to bridge `Option` and
      `Result` based APIs.
      606bf110
    • B
      auto merge of #17506 : sfackler/rust/cfg-attr, r=alexcrichton · 43d7d7c1
      bors 提交于
      cc #17490 
      
      Reopening of #16230
      43d7d7c1
    • B
      auto merge of #17464 : pcwalton/rust/inherent-methods-on-equal-footing, r=nikomatsakis · d64b4103
      bors 提交于
      over inherent methods accessible via more autoderefs.
      
      This simplifies the trait matching algorithm. It breaks code like:
      
          impl Foo {
              fn foo(self) {
                  // before this change, this will be called
              }
          }
      
          impl<'a,'b,'c> Trait for &'a &'b &'c Foo {
              fn foo(self) {
                  // after this change, this will be called
              }
          }
      
          fn main() {
              let x = &(&(&Foo));
              x.foo();
          }
      
      To explicitly indicate that you wish to call the inherent method, perform
      explicit dereferences. For example:
      
          fn main() {
              let x = &(&(&Foo));
              (***x).foo();
          }
      
      Part of #17282.
      
      [breaking-change]
      
      r? @nikomatsakis
      d64b4103
    • P
      librustc: Give trait methods accessible via fewer autoderefs priority · 21df9c80
      Patrick Walton 提交于
      over inherent methods accessible via more autoderefs.
      
      This simplifies the trait matching algorithm. It breaks code like:
      
          impl Foo {
              fn foo(self) {
                  // before this change, this will be called
              }
          }
      
          impl<'a,'b,'c> Trait for &'a &'b &'c Foo {
              fn foo(self) {
                  // after this change, this will be called
              }
          }
      
          fn main() {
              let x = &(&(&Foo));
              x.foo();
          }
      
      To explicitly indicate that you wish to call the inherent method, perform
      explicit dereferences. For example:
      
          fn main() {
              let x = &(&(&Foo));
              (***x).foo();
          }
      
      Part of #17282.
      
      [breaking-change]
      21df9c80
    • S
      Add Option::{ok_or, ok_or_else} · 0c8878d0
      Steven Fackler 提交于
      These are the inverses of `Result::ok` and help to bridge `Option` and
      `Result` based APIs.
      0c8878d0
    • P
      librustc: Eliminate the `ref` syntax for unboxed closure capture clauses · 2257e231
      Patrick Walton 提交于
      in favor of `move`.
      
      This breaks code that used `move` as an identifier, because it is now a
      keyword. Change such identifiers to not use the keyword `move`.
      Additionally, this breaks code that was counting on by-value or
      by-reference capture semantics for unboxed closures (behind the feature
      gate). Change `ref |:|` to `|:|` and `|:|` to `move |:|`.
      
      Part of RFC #63; part of issue #12831.
      
      [breaking-change]
      2257e231
  4. 26 9月, 2014 8 次提交