Skip to content

Commit cc84b0e

Browse files
committed
---
yaml --- r: 211443 b: refs/heads/tmp c: 2a63cc7 h: refs/heads/master i: 211441: 3a73577 211439: 258d965 v: v3
1 parent e4347bb commit cc84b0e

File tree

21 files changed

+328
-793
lines changed

21 files changed

+328
-793
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
3232
refs/heads/beta: 2d00dc3b85aaf81caa3a4e5764c5e185a4dd0a7c
3333
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3434
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
35-
refs/heads/tmp: 2de64ef30577971dc80dfa38145d807aad72a264
35+
refs/heads/tmp: 2a63cc771565836c6c468fd6e20b84cbcb1abc44
3636
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
3737
refs/tags/homu-tmp: 704c2ee730d2e948d11a2edd77e3f35de8329a6e
3838
refs/heads/gate: 97c84447b65164731087ea82685580cc81424412

branches/tmp/CONTRIBUTING.md

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,7 @@ feature. We use the 'fork and pull' model described there.
8484
Please make pull requests against the `master` branch.
8585

8686
All pull requests are reviewed by another person. We have a bot,
87-
@rust-highfive, that will automatically assign a random person to review your
88-
request.
87+
@rust-highfive, that will automatically assign a random person to review your request.
8988

9089
If you want to request that a specific person reviews your pull request,
9190
you can add an `r?` to the message. For example, Steve usually reviews
@@ -125,10 +124,6 @@ To save @bors some work, and to get small changes through more quickly, when
125124
the other rollup-eligible patches too, and they'll get tested and merged at
126125
the same time.
127126

128-
To find documentation-related issues, sort by the [A-docs label][adocs].
129-
130-
[adocs]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AA-docs
131-
132127
## Issue Triage
133128

134129
Sometimes, an issue will stay open, even though the bug has been fixed. And
@@ -137,40 +132,8 @@ meantime.
137132

138133
It can be helpful to go through older bug reports and make sure that they are
139134
still valid. Load up an older issue, double check that it's still true, and
140-
leave a comment letting us know if it is or is not. The [least recently
141-
updated sort][lru] is good for finding issues like this.
142-
143-
Contributors with sufficient permissions on the Rust repo can help by adding
144-
labels to triage issues:
145-
146-
* Yellow, **A**-prefixed labels state which **area** of the project an issue
147-
relates to.
148-
149-
* Magenta, **B**-prefixed labels identify bugs which **belong** elsewhere.
150-
151-
* Green, **E**-prefixed labels explain the level of **experience** necessary
152-
to fix the issue.
153-
154-
* Red, **I**-prefixed labels indicate the **importance** of the issue. The
155-
[I-nominated][inom] label indicates that an issue has been nominated for
156-
prioritizing at the next triage meeting.
157-
158-
* Orange, **P**-prefixed labels indicate a bug's **priority**. These labels
159-
are only assigned during triage meetings, and replace the [I-nominated][inom]
160-
label.
161-
162-
* Blue, **T**-prefixed bugs denote which **team** the issue belongs to.
163-
164-
* Dark blue, **beta-** labels track changes which need to be backported into
165-
the beta branches.
166-
167-
* The purple **metabug** label marks lists of bugs collected by other
168-
categories.
169-
170-
If you're looking for somewhere to start, check out the [E-easy][eeasy] tag.
135+
leave a comment letting us know if it is or is not. The [least recently updated sort][lru] is good for finding issues like this.
171136

172-
[inom]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AI-nominated
173-
[eeasy]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AE-easy
174137
[lru]: https://github.com/rust-lang/rust/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-asc
175138

176139
## Out-of-tree Contributions

branches/tmp/src/doc/reference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3255,8 +3255,8 @@ User-defined types have limited capabilities.
32553255
The primitive types are the following:
32563256

32573257
* The boolean type `bool` with values `true` and `false`.
3258-
* The machine types (integer and floating-point).
3259-
* The machine-dependent integer types.
3258+
* The machine types.
3259+
* The machine-dependent integer and floating-point types.
32603260

32613261
#### Machine types
32623262

branches/tmp/src/doc/style/errors/ergonomics.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,4 @@ for more details.
6363
### The `Result`-`impl` pattern [FIXME]
6464

6565
> **[FIXME]** Document the way that the `io` module uses trait impls
66-
> on `std::io::Result` to painlessly propagate errors.
66+
> on `IoResult` to painlessly propagate errors.

branches/tmp/src/doc/style/features/functions-and-methods/input.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ The primary exception: sometimes a function is meant to modify data
121121
that the caller already owns, for example to re-use a buffer:
122122

123123
```rust
124-
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize>
124+
fn read(&mut self, buf: &mut [u8]) -> IoResult<usize>
125125
```
126126

127127
(From the [Reader trait](http://static.rust-lang.org/doc/master/std/io/trait.Reader.html#tymethod.read).)

branches/tmp/src/doc/style/ownership/builders.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ impl Command {
7575
}
7676

7777
/// Executes the command as a child process, which is returned.
78-
pub fn spawn(&self) -> std::io::Result<Process> {
78+
pub fn spawn(&self) -> IoResult<Process> {
7979
...
8080
}
8181
}

branches/tmp/src/doc/trpl/conditional-compilation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ These can nest arbitrarily:
3434
As for how to enable or disable these switches, if you’re using Cargo,
3535
they get set in the [`[features]` section][features] of your `Cargo.toml`:
3636

37-
[features]: http://doc.crates.io/manifest.html#the-[features]-section
37+
[features]: http://doc.crates.io/manifest.html#the-%5Bfeatures%5D-section
3838

3939
```toml
4040
[features]

branches/tmp/src/doc/trpl/lifetimes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ x: &'a i32,
134134
# }
135135
```
136136

137-
uses it. So why do we need a lifetime here? We need to ensure that any
138-
reference to the contained `i32` does not outlive the containing `Foo`.
137+
uses it. So why do we need a lifetime here? We need to ensure that any reference
138+
to a `Foo` cannot outlive the reference to an `i32` it contains.
139139

140140
## Thinking in scopes
141141

branches/tmp/src/libcollections/binary_heap.rs

Lines changed: 25 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@
153153
use core::prelude::*;
154154

155155
use core::iter::{FromIterator};
156-
use core::mem::swap;
156+
use core::mem::{zeroed, replace, swap};
157157
use core::ptr;
158158

159159
use slice;
@@ -484,42 +484,46 @@ impl<T: Ord> BinaryHeap<T> {
484484

485485
// The implementations of sift_up and sift_down use unsafe blocks in
486486
// order to move an element out of the vector (leaving behind a
487-
// hole), shift along the others and move the removed element back into the
488-
// vector at the final location of the hole.
489-
// The `Hole` type is used to represent this, and make sure
490-
// the hole is filled back at the end of its scope, even on panic.
491-
// Using a hole reduces the constant factor compared to using swaps,
492-
// which involves twice as many moves.
493-
fn sift_up(&mut self, start: usize, pos: usize) {
487+
// zeroed element), shift along the others and move it back into the
488+
// vector over the junk element. This reduces the constant factor
489+
// compared to using swaps, which involves twice as many moves.
490+
fn sift_up(&mut self, start: usize, mut pos: usize) {
494491
unsafe {
495-
// Take out the value at `pos` and create a hole.
496-
let mut hole = Hole::new(&mut self.data, pos);
492+
let new = replace(&mut self.data[pos], zeroed());
497493

498-
while hole.pos() > start {
499-
let parent = (hole.pos() - 1) / 2;
500-
if hole.removed() <= hole.get(parent) { break }
501-
hole.move_to(parent);
494+
while pos > start {
495+
let parent = (pos - 1) >> 1;
496+
497+
if new <= self.data[parent] { break; }
498+
499+
let x = replace(&mut self.data[parent], zeroed());
500+
ptr::write(&mut self.data[pos], x);
501+
pos = parent;
502502
}
503+
ptr::write(&mut self.data[pos], new);
503504
}
504505
}
505506

506507
fn sift_down_range(&mut self, mut pos: usize, end: usize) {
507-
let start = pos;
508508
unsafe {
509-
let mut hole = Hole::new(&mut self.data, pos);
509+
let start = pos;
510+
let new = replace(&mut self.data[pos], zeroed());
511+
510512
let mut child = 2 * pos + 1;
511513
while child < end {
512514
let right = child + 1;
513-
if right < end && !(hole.get(child) > hole.get(right)) {
515+
if right < end && !(self.data[child] > self.data[right]) {
514516
child = right;
515517
}
516-
hole.move_to(child);
517-
child = 2 * hole.pos() + 1;
518+
let x = replace(&mut self.data[child], zeroed());
519+
ptr::write(&mut self.data[pos], x);
520+
pos = child;
521+
child = 2 * pos + 1;
518522
}
519523

520-
pos = hole.pos;
524+
ptr::write(&mut self.data[pos], new);
525+
self.sift_up(start, pos);
521526
}
522-
self.sift_up(start, pos);
523527
}
524528

525529
fn sift_down(&mut self, pos: usize) {
@@ -550,73 +554,6 @@ impl<T: Ord> BinaryHeap<T> {
550554
pub fn clear(&mut self) { self.drain(); }
551555
}
552556

553-
/// Hole represents a hole in a slice i.e. an index without valid value
554-
/// (because it was moved from or duplicated).
555-
/// In drop, `Hole` will restore the slice by filling the hole
556-
/// position with the value that was originally removed.
557-
struct Hole<'a, T: 'a> {
558-
data: &'a mut [T],
559-
/// `elt` is always `Some` from new until drop.
560-
elt: Option<T>,
561-
pos: usize,
562-
}
563-
564-
impl<'a, T> Hole<'a, T> {
565-
/// Create a new Hole at index `pos`.
566-
fn new(data: &'a mut [T], pos: usize) -> Self {
567-
unsafe {
568-
let elt = ptr::read(&data[pos]);
569-
Hole {
570-
data: data,
571-
elt: Some(elt),
572-
pos: pos,
573-
}
574-
}
575-
}
576-
577-
#[inline(always)]
578-
fn pos(&self) -> usize { self.pos }
579-
580-
/// Return a reference to the element removed
581-
#[inline(always)]
582-
fn removed(&self) -> &T {
583-
self.elt.as_ref().unwrap()
584-
}
585-
586-
/// Return a reference to the element at `index`.
587-
///
588-
/// Panics if the index is out of bounds.
589-
///
590-
/// Unsafe because index must not equal pos.
591-
#[inline(always)]
592-
unsafe fn get(&self, index: usize) -> &T {
593-
debug_assert!(index != self.pos);
594-
&self.data[index]
595-
}
596-
597-
/// Move hole to new location
598-
///
599-
/// Unsafe because index must not equal pos.
600-
#[inline(always)]
601-
unsafe fn move_to(&mut self, index: usize) {
602-
debug_assert!(index != self.pos);
603-
let index_ptr: *const _ = &self.data[index];
604-
let hole_ptr = &mut self.data[self.pos];
605-
ptr::copy_nonoverlapping(index_ptr, hole_ptr, 1);
606-
self.pos = index;
607-
}
608-
}
609-
610-
impl<'a, T> Drop for Hole<'a, T> {
611-
fn drop(&mut self) {
612-
// fill the hole again
613-
unsafe {
614-
let pos = self.pos;
615-
ptr::write(&mut self.data[pos], self.elt.take().unwrap());
616-
}
617-
}
618-
}
619-
620557
/// `BinaryHeap` iterator.
621558
#[stable(feature = "rust1", since = "1.0.0")]
622559
pub struct Iter <'a, T: 'a> {

branches/tmp/src/libcollections/fmt.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@
164164
//! provides some helper methods.
165165
//!
166166
//! Additionally, the return value of this function is `fmt::Result` which is a
167-
//! typedef to `Result<(), std::io::Error>` (also known as `std::io::Result<()>`).
168-
//! Formatting implementations should ensure that they return errors from `write!`
167+
//! typedef to `Result<(), IoError>` (also known as `IoResult<()>`). Formatting
168+
//! implementations should ensure that they return errors from `write!`
169169
//! correctly (propagating errors upward).
170170
//!
171171
//! An example of implementing the formatting traits would look

branches/tmp/src/libcollections/vec.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -440,18 +440,14 @@ impl<T> Vec<T> {
440440
}
441441

442442
/// Extracts a slice containing the entire vector.
443-
///
444-
/// Equivalent to `&s[..]`.
445443
#[inline]
446444
#[unstable(feature = "convert",
447445
reason = "waiting on RFC revision")]
448446
pub fn as_slice(&self) -> &[T] {
449447
self
450448
}
451449

452-
/// Extracts a mutable slice of the entire vector.
453-
///
454-
/// Equivalent to `&mut s[..]`.
450+
/// Deprecated: use `&mut s[..]` instead.
455451
#[inline]
456452
#[unstable(feature = "convert",
457453
reason = "waiting on RFC revision")]

0 commit comments

Comments
 (0)