Skip to content

Commit 4a03216

Browse files
committed
---
yaml --- r: 216863 b: refs/heads/stable c: c44d84d h: refs/heads/master i: 216861: bb4fc6d 216859: eb61656 216855: 60ec95e 216847: 0f3b533 216831: 546fb39 v: v3
1 parent e7a4f3d commit 4a03216

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+384
-360
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ refs/heads/tmp: 378a370ff2057afeb1eae86eb6e78c476866a4a6
2929
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
3030
refs/tags/homu-tmp: a5286998df566e736b32f6795bfc3803bdaf453d
3131
refs/tags/1.0.0-beta: 8cbb92b53468ee2b0c2d3eeb8567005953d40828
32-
refs/heads/stable: c4b72a88ef2e6f79bfbab0fc2784eb1c3c366487
32+
refs/heads/stable: c44d84da981c14cdaa144aa7b0f1109578ed72c3
3333
refs/tags/1.0.0: 55bd4f8ff2b323f317ae89e254ce87162d52a375

branches/stable/src/doc/reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2028,7 +2028,7 @@ makes it possible to declare these operations. For example, the `str` module
20282028
in the Rust standard library defines the string equality function:
20292029

20302030
```{.ignore}
2031-
#[lang="str_eq"]
2031+
#[lang = "str_eq"]
20322032
pub fn eq_slice(a: &str, b: &str) -> bool {
20332033
// details elided
20342034
}

branches/stable/src/doc/trpl/error-handling.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ we can use the `unwrap()` method:
214214
io::stdin().read_line(&mut buffer).unwrap();
215215
```
216216

217-
`unwrap()` will `panic!` if the `Option` is `None`. This basically says "Give
217+
`unwrap()` will `panic!` if the `Result` is `Err`. This basically says "Give
218218
me the value, and if something goes wrong, just crash." This is less reliable
219219
than matching the error and attempting to recover, but is also significantly
220220
shorter. Sometimes, just crashing is appropriate.

branches/stable/src/doc/trpl/guessing-game.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,9 @@ prints a [string][strings] to the screen.
131131
let mut guess = String::new();
132132
```
133133

134-
Now we’re getting interesting! There’s a lot going on in this little line. The first thing to notice is that this is a [let statement][let], which is used to create ‘variable bindings’. They take this form:
134+
Now we’re getting interesting! There’s a lot going on in this little line.
135+
The first thing to notice is that this is a [let statement][let], which is
136+
used to create ‘variable bindings’. They take this form:
135137

136138
```rust,ignore
137139
let foo = bar;
@@ -171,7 +173,7 @@ bound to: `String::new()`.
171173

172174
[string]: ../std/string/struct.String.html
173175

174-
The `::new()` syntax is uses `::` because this is an ‘associated function’ of
176+
The `::new()` syntax uses `::` because this is an ‘associated function’ of
175177
a particular type. That is to say, it’s associated with `String` itself,
176178
rather than a particular instance of a `String`. Some languages call this a
177179
‘static method’.
@@ -711,7 +713,7 @@ variety of numbers, we need to give Rust a hint as to the exact type of number
711713
we want. Hence, `let guess: u32`. The colon (`:`) after `guess` tells Rust
712714
we’re going to annotate its type. `u32` is an unsigned, thirty-two bit
713715
integer. Rust has [a number of built-in number types][number], but we’ve
714-
chosen `u32`. It’s a good default choice for a small positive numer.
716+
chosen `u32`. It’s a good default choice for a small positive number.
715717
716718
[parse]: ../std/primitive.str.html#method.parse
717719
[number]: primitive-types.html#numeric-types
@@ -920,7 +922,7 @@ failure. Each contains more information: the successful parsed integer, or an
920922
error type. In this case, we `match` on `Ok(num)`, which sets the inner value
921923
of the `Ok` to the name `num`, and then we just return it on the right-hand
922924
side. In the `Err` case, we don’t care what kind of error it is, so we just
923-
use `_` intead of a name. This ignores the error, and `continue` causes us
925+
use `_` instead of a name. This ignores the error, and `continue` causes us
924926
to go to the next iteration of the `loop`.
925927
926928
Now we should be good! Let’s try:

branches/stable/src/doc/trpl/lang-items.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
The `rustc` compiler has certain pluggable operations, that is,
88
functionality that isn't hard-coded into the language, but is
99
implemented in libraries, with a special marker to tell the compiler
10-
it exists. The marker is the attribute `#[lang="..."]` and there are
10+
it exists. The marker is the attribute `#[lang = "..."]` and there are
1111
various different values of `...`, i.e. various different 'lang
1212
items'.
1313

@@ -28,7 +28,7 @@ extern {
2828
#[lang = "owned_box"]
2929
pub struct Box<T>(*mut T);
3030
31-
#[lang="exchange_malloc"]
31+
#[lang = "exchange_malloc"]
3232
unsafe fn allocate(size: usize, _align: usize) -> *mut u8 {
3333
let p = libc::malloc(size as libc::size_t) as *mut u8;
3434
@@ -39,7 +39,7 @@ unsafe fn allocate(size: usize, _align: usize) -> *mut u8 {
3939
4040
p
4141
}
42-
#[lang="exchange_free"]
42+
#[lang = "exchange_free"]
4343
unsafe fn deallocate(ptr: *mut u8, _size: usize, _align: usize) {
4444
libc::free(ptr as *mut libc::c_void)
4545
}

branches/stable/src/doc/trpl/match.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ side of a `let` binding or directly where an expression is used:
5050
```rust
5151
let x = 5;
5252

53-
let numer = match x {
53+
let number = match x {
5454
1 => "one",
5555
2 => "two",
5656
3 => "three",

branches/stable/src/doc/trpl/mutability.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ When we call `clone()`, the `Arc<T>` needs to update the reference count. Yet
7878
we’ve not used any `mut`s here, `x` is an immutable binding, and we didn’t take
7979
`&mut 5` or anything. So what gives?
8080

81-
To this, we have to go back to the core of Rust’s guiding philosophy, memory
82-
safety, and the mechanism by which Rust guarantees it, the
81+
To understand this, we have to go back to the core of Rust’s guiding
82+
philosophy, memory safety, and the mechanism by which Rust guarantees it, the
8383
[ownership][ownership] system, and more specifically, [borrowing][borrowing]:
8484

8585
> You may have one or the other of these two kinds of borrows, but not both at

branches/stable/src/doc/trpl/ownership.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ fn foo(v: Vec<i32>) -> Vec<i32> {
174174
}
175175
```
176176

177-
This would get very tedius. It gets worse the more things we want to take ownership of:
177+
This would get very tedious. It gets worse the more things we want to take ownership of:
178178

179179
```rust
180180
fn foo(v1: Vec<i32>, v2: Vec<i32>) -> (Vec<i32>, Vec<i32>, i32) {

branches/stable/src/doc/trpl/primitive-types.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ Slices have type `&[T]`. We’ll talk about that `T` when we cover
176176

177177
[generics]: generics.html
178178

179-
You can find more documentation for `slices`s [in the standard library
179+
You can find more documentation for slices [in the standard library
180180
documentation][slice].
181181

182182
[slice]: ../std/primitive.slice.html

branches/stable/src/doc/trpl/references-and-borrowing.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,7 @@ println!("{}", y);
312312

313313
We get this error:
314314

315+
```text
315316
error: `x` does not live long enough
316317
y = &x;
317318
^
@@ -334,3 +335,37 @@ In other words, `y` is only valid for the scope where `x` exists. As soon as
334335
`x` goes away, it becomes invalid to refer to it. As such, the error says that
335336
the borrow ‘doesn’t live long enough’ because it’s not valid for the right
336337
amount of time.
338+
339+
The same problem occurs when the reference is declared _before_ the variable it refers to:
340+
341+
```rust,ignore
342+
let y: &i32;
343+
let x = 5;
344+
y = &x;
345+
346+
println!("{}", y);
347+
```
348+
349+
We get this error:
350+
351+
```text
352+
error: `x` does not live long enough
353+
y = &x;
354+
^
355+
note: reference must be valid for the block suffix following statement 0 at
356+
2:16...
357+
let y: &i32;
358+
let x = 5;
359+
y = &x;
360+
361+
println!("{}", y);
362+
}
363+
364+
note: ...but borrowed value is only valid for the block suffix following
365+
statement 1 at 3:14
366+
let x = 5;
367+
y = &x;
368+
369+
println!("{}", y);
370+
}
371+
```

branches/stable/src/etc/CONFIGS.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
# Configs
22

3-
Here are some links to repos with configs which ease the use of rust:
3+
These are some links to repos with configs which ease the use of rust.
4+
5+
## Officially Maintained Configs
46

57
* [rust.vim](https://github.com/rust-lang/rust.vim)
68
* [emacs rust-mode](https://github.com/rust-lang/rust-mode)
79
* [gedit-config](https://github.com/rust-lang/gedit-config)
810
* [kate-config](https://github.com/rust-lang/kate-config)
911
* [nano-config](https://github.com/rust-lang/nano-config)
1012
* [zsh-config](https://github.com/rust-lang/zsh-config)
13+
14+
## Community-maintained Configs
15+
16+
* [.editorconfig](https://gist.github.com/derhuerst/c9d1b9309e308d9851fa) ([what is this?](http://editorconfig.org/))

branches/stable/src/liballoc/heap.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ pub const EMPTY: *mut () = 0x1 as *mut ();
9595

9696
/// The allocator for unique pointers.
9797
#[cfg(not(test))]
98-
#[lang="exchange_malloc"]
98+
#[lang = "exchange_malloc"]
9999
#[inline]
100100
unsafe fn exchange_malloc(size: usize, align: usize) -> *mut u8 {
101101
if size == 0 {
@@ -108,7 +108,7 @@ unsafe fn exchange_malloc(size: usize, align: usize) -> *mut u8 {
108108
}
109109

110110
#[cfg(not(test))]
111-
#[lang="exchange_free"]
111+
#[lang = "exchange_free"]
112112
#[inline]
113113
unsafe fn exchange_free(ptr: *mut u8, old_size: usize, align: usize) {
114114
deallocate(ptr, old_size, align);

branches/stable/src/libcollections/bit.rs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1796,6 +1796,89 @@ impl BitSet {
17961796
self.other_op(other, |w1, w2| w1 ^ w2);
17971797
}
17981798

1799+
/// Moves all elements from `other` into `Self`, leaving `other` empty.
1800+
///
1801+
/// # Examples
1802+
///
1803+
/// ```
1804+
/// # #![feature(collections, bit_set_append_split_off)]
1805+
/// use std::collections::{BitVec, BitSet};
1806+
///
1807+
/// let mut a = BitSet::new();
1808+
/// a.insert(2);
1809+
/// a.insert(6);
1810+
///
1811+
/// let mut b = BitSet::new();
1812+
/// b.insert(1);
1813+
/// b.insert(3);
1814+
/// b.insert(6);
1815+
///
1816+
/// a.append(&mut b);
1817+
///
1818+
/// assert_eq!(a.len(), 4);
1819+
/// assert_eq!(b.len(), 0);
1820+
/// assert_eq!(a, BitSet::from_bit_vec(BitVec::from_bytes(&[0b01110010])));
1821+
/// ```
1822+
#[unstable(feature = "bit_set_append_split_off",
1823+
reason = "recently added as part of collections reform 2")]
1824+
pub fn append(&mut self, other: &mut Self) {
1825+
self.union_with(other);
1826+
other.clear();
1827+
}
1828+
1829+
/// Splits the `BitSet` into two at the given key including the key.
1830+
/// Retains the first part in-place while returning the second part.
1831+
///
1832+
/// # Examples
1833+
///
1834+
/// ```
1835+
/// # #![feature(collections, bit_set_append_split_off)]
1836+
/// use std::collections::{BitSet, BitVec};
1837+
/// let mut a = BitSet::new();
1838+
/// a.insert(2);
1839+
/// a.insert(6);
1840+
/// a.insert(1);
1841+
/// a.insert(3);
1842+
///
1843+
/// let b = a.split_off(3);
1844+
///
1845+
/// assert_eq!(a.len(), 2);
1846+
/// assert_eq!(b.len(), 2);
1847+
/// assert_eq!(a, BitSet::from_bit_vec(BitVec::from_bytes(&[0b01100000])));
1848+
/// assert_eq!(b, BitSet::from_bit_vec(BitVec::from_bytes(&[0b00010010])));
1849+
/// ```
1850+
#[unstable(feature = "bit_set_append_split_off",
1851+
reason = "recently added as part of collections reform 2")]
1852+
pub fn split_off(&mut self, at: usize) -> Self {
1853+
let mut other = BitSet::new();
1854+
1855+
if at == 0 {
1856+
swap(self, &mut other);
1857+
return other;
1858+
} else if at >= self.bit_vec.len() {
1859+
return other;
1860+
}
1861+
1862+
// Calculate block and bit at which to split
1863+
let w = at / u32::BITS;
1864+
let b = at % u32::BITS;
1865+
1866+
// Pad `other` with `w` zero blocks,
1867+
// append `self`'s blocks in the range from `w` to the end to `other`
1868+
other.bit_vec.storage.extend(repeat(0u32).take(w)
1869+
.chain(self.bit_vec.storage[w..].iter().cloned()));
1870+
other.bit_vec.nbits = self.bit_vec.nbits;
1871+
1872+
if b > 0 {
1873+
other.bit_vec.storage[w] &= !0 << b;
1874+
}
1875+
1876+
// Sets `bit_vec.len()` and fixes the last block as well
1877+
self.bit_vec.truncate(at);
1878+
1879+
other
1880+
}
1881+
17991882
/// Returns the number of set bits in this set.
18001883
#[inline]
18011884
#[stable(feature = "rust1", since = "1.0.0")]

branches/stable/src/libcollections/string.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,6 +1052,7 @@ impl<T: fmt::Display + ?Sized> ToString for T {
10521052

10531053
#[stable(feature = "rust1", since = "1.0.0")]
10541054
impl AsRef<str> for String {
1055+
#[inline]
10551056
fn as_ref(&self) -> &str {
10561057
self
10571058
}

branches/stable/src/libcollectionstest/bit/set.rs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,67 @@ fn test_bit_vec_clone() {
387387
assert!(b.contains(&1000));
388388
}
389389

390+
#[test]
391+
fn test_bit_set_append() {
392+
let mut a = BitSet::new();
393+
a.insert(2);
394+
a.insert(6);
395+
396+
let mut b = BitSet::new();
397+
b.insert(1);
398+
b.insert(3);
399+
b.insert(6);
400+
401+
a.append(&mut b);
402+
403+
assert_eq!(a.len(), 4);
404+
assert_eq!(b.len(), 0);
405+
assert!(b.capacity() >= 6);
406+
407+
assert_eq!(a, BitSet::from_bit_vec(BitVec::from_bytes(&[0b01110010])));
408+
}
409+
410+
#[test]
411+
fn test_bit_set_split_off() {
412+
// Split at 0
413+
let mut a = BitSet::from_bit_vec(BitVec::from_bytes(&[0b10100000, 0b00010010, 0b10010010,
414+
0b00110011, 0b01101011, 0b10101101]));
415+
416+
let b = a.split_off(0);
417+
418+
assert_eq!(a.len(), 0);
419+
assert_eq!(b.len(), 21);
420+
421+
assert_eq!(b, BitSet::from_bit_vec(BitVec::from_bytes(&[0b10100000, 0b00010010, 0b10010010,
422+
0b00110011, 0b01101011, 0b10101101])));
423+
424+
// Split behind last element
425+
let mut a = BitSet::from_bit_vec(BitVec::from_bytes(&[0b10100000, 0b00010010, 0b10010010,
426+
0b00110011, 0b01101011, 0b10101101]));
427+
428+
let b = a.split_off(50);
429+
430+
assert_eq!(a.len(), 21);
431+
assert_eq!(b.len(), 0);
432+
433+
assert_eq!(a, BitSet::from_bit_vec(BitVec::from_bytes(&[0b10100000, 0b00010010, 0b10010010,
434+
0b00110011, 0b01101011, 0b10101101])));
435+
436+
// Split at arbitrary element
437+
let mut a = BitSet::from_bit_vec(BitVec::from_bytes(&[0b10100000, 0b00010010, 0b10010010,
438+
0b00110011, 0b01101011, 0b10101101]));
439+
440+
let b = a.split_off(34);
441+
442+
assert_eq!(a.len(), 12);
443+
assert_eq!(b.len(), 9);
444+
445+
assert_eq!(a, BitSet::from_bit_vec(BitVec::from_bytes(&[0b10100000, 0b00010010, 0b10010010,
446+
0b00110011, 0b01000000])));
447+
assert_eq!(b, BitSet::from_bit_vec(BitVec::from_bytes(&[0, 0, 0, 0,
448+
0b00101011, 0b10101101])));
449+
}
450+
390451
mod bench {
391452
use std::collections::{BitSet, BitVec};
392453
use std::__rand::{Rng, thread_rng, ThreadRng};

branches/stable/src/libcollectionstest/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11+
#![feature(bit_set_append_split_off)]
1112
#![feature(bit_vec_append_split_off)]
1213
#![feature(box_syntax)]
1314
#![feature(collections)]

branches/stable/src/libcore/cell.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ impl<'b, T: ?Sized> DerefMut for RefMut<'b, T> {
634634
///
635635
/// **NOTE:** `UnsafeCell<T>`'s fields are public to allow static initializers. It is not
636636
/// recommended to access its fields directly, `get` should be used instead.
637-
#[lang="unsafe_cell"]
637+
#[lang = "unsafe_cell"]
638638
#[stable(feature = "rust1", since = "1.0.0")]
639639
pub struct UnsafeCell<T: ?Sized> {
640640
/// Wrapped value

0 commit comments

Comments
 (0)