Skip to content

Commit fdb5ed9

Browse files
committed
---
yaml --- r: 210387 b: refs/heads/try c: 81b90bd h: refs/heads/master i: 210385: 084fa19 210383: 7c3c0bb v: v3
1 parent 075d457 commit fdb5ed9

Some content is hidden

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

63 files changed

+350
-806
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 3e561f05c00cd180ec02db4ccab2840a4aba93d2
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: ba0e1cd8147d452c356aacb29fb87568ca26f111
5-
refs/heads/try: 48b67f04bfa9cd728606e525a2c29a0270e71250
5+
refs/heads/try: 81b90bd56f66950a73029907e79b9f26c6e20b56
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
88
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596

branches/try/src/doc/complement-design-faq.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ representation as a primitive. This allows using Rust `enum`s in FFI where C
3939
`enum`s are also used, for most use cases. The attribute can also be applied
4040
to `struct`s to get the same layout as a C struct would.
4141

42-
[repr]: reference.html#ffi-attributes
42+
[repr]: reference.html#miscellaneous-attributes
4343

4444
## There is no GC
4545

branches/try/src/doc/reference.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,12 +1867,13 @@ macro scope.
18671867
lower to the target's SIMD instructions, if any; the `simd` feature gate
18681868
is necessary to use this attribute.
18691869
- `static_assert` - on statics whose type is `bool`, terminates compilation
1870-
with an error if it is not initialized to `true`. To use this, the `static_assert`
1871-
feature gate must be enabled.
1870+
with an error if it is not initialized to `true`.
1871+
- `unsafe_destructor` - allow implementations of the "drop" language item
1872+
where the type it is implemented for does not implement the "send" language
1873+
item; the `unsafe_destructor` feature gate is needed to use this attribute
18721874
- `unsafe_no_drop_flag` - on structs, remove the flag that prevents
18731875
destructors from being run twice. Destructors might be run multiple times on
1874-
the same object with this attribute. To use this, the `unsafe_no_drop_flag` feature
1875-
gate must be enabled.
1876+
the same object with this attribute.
18761877
- `doc` - Doc comments such as `/// foo` are equivalent to `#[doc = "foo"]`.
18771878
- `rustc_on_unimplemented` - Write a custom note to be shown along with the error
18781879
when the trait is found to be unimplemented on a type.

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

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ fn main() {
8686
.ok()
8787
.expect("Failed to read line");
8888
89-
println!("You guessed: {}", input);
89+
println!("You guessed: {}", guess);
9090
}
9191
```
9292

@@ -302,12 +302,12 @@ project.
302302
There’s just one line of this first example left:
303303

304304
```rust,ignore
305-
println!("You guessed: {}", input);
305+
println!("You guessed: {}", guess);
306306
}
307307
```
308308

309309
This prints out the string we saved our input in. The `{}`s are a placeholder,
310-
and so we pass it `input` as an argument. If we had multiple `{}`s, we would
310+
and so we pass it `guess` as an argument. If we had multiple `{}`s, we would
311311
pass multiple arguments:
312312

313313
```rust
@@ -410,29 +410,24 @@ $ cargo build
410410
Compiling guessing_game v0.1.0 (file:///home/you/projects/guessing_game)
411411
```
412412

413-
So, we told Cargo we wanted any version of `rand`, and so it fetched the latest
414-
version at the time this was written, `v0.3.8`. But what happens when next
415-
week, version `v0.3.9` comes out, with an important bugfix? While getting
416-
bugfixes is important, what if `0.3.9` contains a regression that breaks our
417-
code?
413+
So, we told Cargo we wanted any version of `rand`, and so it fetched the
414+
latest version at the time this was written, `v0.3.8`. But what happens
415+
when next week, version `v0.4.0` comes out, which changes something with
416+
`rand`, and it includes a breaking change? After all, a `v0.y.z` version
417+
in SemVer can change every release.
418418

419419
The answer to this problem is the `Cargo.lock` file you’ll now find in your
420420
project directory. When you build your project for the first time, Cargo
421421
figures out all of the versions that fit your criteria, and then writes them
422422
to the `Cargo.lock` file. When you build your project in the future, Cargo
423423
will see that the `Cargo.lock` file exists, and then use that specific version
424424
rather than do all the work of figuring out versions again. This lets you
425-
have a repeatable build automatically. In other words, we’ll stay at `0.3.8`
426-
until we explicitly upgrade, and so will anyone who we share our code with,
427-
thanks to the lock file.
425+
have a repeatable build automatically.
428426

429-
What about when we _do_ want to use `v0.3.9`? Cargo has another command,
427+
What about when we _do_ want to use `v0.4.0`? Cargo has another command,
430428
`update`, which says ‘ignore the lock, figure out all the latest versions that
431429
fit what we’ve specified. If that works, write those versions out to the lock
432-
file’. But, by default, Cargo will only look for versions larger than `0.3.0`
433-
and smaller than `0.4.0`. If we want to move to `0.4.x`, we’d have to update
434-
the `Cargo.toml` directly. When we do, the next time we `cargo build`, Cargo
435-
will update the index and re-evaluate our `rand` requirements.
430+
file’.
436431

437432
There’s a lot more to say about [Cargo][doccargo] and [its
438433
ecosystem][doccratesio], but for now, that’s all we need to know. Cargo makes

branches/try/src/doc/trpl/strings.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ individual bytes, or as codepoints:
7373
let hachiko = "忠犬ハチ公";
7474

7575
for b in hachiko.as_bytes() {
76-
print!("{}, ", b);
76+
print!("{}, ", b);
7777
}
7878

7979
println!("");
8080

8181
for c in hachiko.chars() {
82-
print!("{}, ", c);
82+
print!("{}, ", c);
8383
}
8484

8585
println!("");

branches/try/src/grammar/RustLexer.g4

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ lexer grammar RustLexer;
88

99

1010
tokens {
11-
EQ, LT, LE, EQEQ, NE, GE, GT, ANDAND, OROR, NOT, TILDE, PLUS,
11+
EQ, LT, LE, EQEQ, NE, GE, GT, ANDAND, OROR, NOT, TILDE, PLUT,
1212
MINUS, STAR, SLASH, PERCENT, CARET, AND, OR, SHL, SHR, BINOP,
1313
BINOPEQ, AT, DOT, DOTDOT, DOTDOTDOT, COMMA, SEMI, COLON,
1414
MOD_SEP, RARROW, FAT_ARROW, LPAREN, RPAREN, LBRACKET, RBRACKET,
15-
LBRACE, RBRACE, POUND, DOLLAR, UNDERSCORE, LIT_CHAR, LIT_BYTE,
15+
LBRACE, RBRACE, POUND, DOLLAR, UNDERSCORE, LIT_CHAR,
1616
LIT_INTEGER, LIT_FLOAT, LIT_STR, LIT_STR_RAW, LIT_BINARY,
17-
LIT_BINARY_RAW, QUESTION, IDENT, LIFETIME, WHITESPACE, DOC_COMMENT,
18-
COMMENT, SHEBANG, UTF8_BOM
17+
LIT_BINARY_RAW, IDENT, LIFETIME, WHITESPACE, DOC_COMMENT,
18+
COMMENT, SHEBANG
1919
}
2020

2121
import xidstart , xidcontinue;

branches/try/src/grammar/verify.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ fn parse_token_list(file: &str) -> HashMap<String, token::Token> {
111111
"LIT_BINARY_RAW" => token::Literal(token::BinaryRaw(Name(0), 0), None),
112112
"QUESTION" => token::Question,
113113
"SHEBANG" => token::Shebang(Name(0)),
114-
_ => panic!("Bad token str `{}`", val),
114+
_ => continue,
115115
};
116116

117117
res.insert(num.to_string(), tok);

branches/try/src/liballoc/boxed.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
//! }
3838
//! ```
3939
//!
40-
//! This will print `Cons(1, Cons(2, Nil))`.
40+
//! This will print `Cons(1, Box(Cons(2, Box(Nil))))`.
4141
//!
4242
//! Recursive structures must be boxed, because if the definition of `Cons` looked like this:
4343
//!

branches/try/src/libcollections/bit.rs

Lines changed: 0 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ use core::hash;
8989
use core::iter::RandomAccessIterator;
9090
use core::iter::{Chain, Enumerate, Repeat, Skip, Take, repeat, Cloned};
9191
use core::iter::{self, FromIterator};
92-
use core::mem::swap;
9392
use core::ops::Index;
9493
use core::slice;
9594
use core::{u8, u32, usize};
@@ -603,106 +602,6 @@ impl BitVec {
603602
Iter { bit_vec: self, next_idx: 0, end_idx: self.nbits }
604603
}
605604

606-
/// Moves all bits from `other` into `Self`, leaving `other` empty.
607-
///
608-
/// # Examples
609-
///
610-
/// ```
611-
/// # #![feature(collections, bit_vec_append_split_off)]
612-
/// use std::collections::BitVec;
613-
///
614-
/// let mut a = BitVec::from_bytes(&[0b10000000]);
615-
/// let mut b = BitVec::from_bytes(&[0b01100001]);
616-
///
617-
/// a.append(&mut b);
618-
///
619-
/// assert_eq!(a.len(), 16);
620-
/// assert_eq!(b.len(), 0);
621-
/// assert!(a.eq_vec(&[true, false, false, false, false, false, false, false,
622-
/// false, true, true, false, false, false, false, true]));
623-
/// ```
624-
#[unstable(feature = "bit_vec_append_split_off",
625-
reason = "recently added as part of collections reform 2")]
626-
pub fn append(&mut self, other: &mut Self) {
627-
let b = self.len() % u32::BITS;
628-
629-
self.nbits += other.len();
630-
other.nbits = 0;
631-
632-
if b == 0 {
633-
self.storage.append(&mut other.storage);
634-
} else {
635-
self.storage.reserve(other.storage.len());
636-
637-
for block in other.storage.drain(..) {
638-
*(self.storage.last_mut().unwrap()) |= block << b;
639-
self.storage.push(block >> (u32::BITS - b));
640-
}
641-
}
642-
}
643-
644-
/// Splits the `BitVec` into two at the given bit,
645-
/// retaining the first half in-place and returning the second one.
646-
///
647-
/// # Examples
648-
///
649-
/// ```
650-
/// # #![feature(collections, bit_vec_append_split_off)]
651-
/// use std::collections::BitVec;
652-
/// let mut a = BitVec::new();
653-
/// a.push(true);
654-
/// a.push(false);
655-
/// a.push(false);
656-
/// a.push(true);
657-
///
658-
/// let b = a.split_off(2);
659-
///
660-
/// assert_eq!(a.len(), 2);
661-
/// assert_eq!(b.len(), 2);
662-
/// assert!(a.eq_vec(&[true, false]));
663-
/// assert!(b.eq_vec(&[false, true]));
664-
/// ```
665-
#[unstable(feature = "bit_vec_append_split_off",
666-
reason = "recently added as part of collections reform 2")]
667-
pub fn split_off(&mut self, at: usize) -> Self {
668-
assert!(at <= self.len(), "`at` out of bounds");
669-
670-
let mut other = BitVec::new();
671-
672-
if at == 0 {
673-
swap(self, &mut other);
674-
return other;
675-
} else if at == self.len() {
676-
return other;
677-
}
678-
679-
let w = at / u32::BITS;
680-
let b = at % u32::BITS;
681-
other.nbits = self.nbits - at;
682-
self.nbits = at;
683-
if b == 0 {
684-
// Split at block boundary
685-
other.storage = self.storage.split_off(w);
686-
} else {
687-
other.storage.reserve(self.storage.len() - w);
688-
689-
{
690-
let mut iter = self.storage[w..].iter();
691-
let mut last = *iter.next().unwrap();
692-
for &cur in iter {
693-
other.storage.push((last >> b) | (cur << (u32::BITS - b)));
694-
last = cur;
695-
}
696-
other.storage.push(last >> b);
697-
}
698-
699-
self.storage.truncate(w+1);
700-
self.fix_last_block();
701-
}
702-
703-
other
704-
}
705-
706605
/// Returns `true` if all bits are 0.
707606
///
708607
/// # Examples

branches/try/src/libcollections/slice.rs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -996,13 +996,9 @@ impl<T> [T] {
996996
////////////////////////////////////////////////////////////////////////////////
997997
// Extension traits for slices over specific kinds of data
998998
////////////////////////////////////////////////////////////////////////////////
999-
#[unstable(feature = "collections", reason = "recently changed")]
999+
#[unstable(feature = "collections", reason = "U should be an associated type")]
10001000
/// An extension trait for concatenating slices
1001-
pub trait SliceConcatExt<T: ?Sized> {
1002-
#[unstable(feature = "collections", reason = "recently changed")]
1003-
/// The resulting type after concatenation
1004-
type Output;
1005-
1001+
pub trait SliceConcatExt<T: ?Sized, U> {
10061002
/// Flattens a slice of `T` into a single value `U`.
10071003
///
10081004
/// # Examples
@@ -1011,7 +1007,7 @@ pub trait SliceConcatExt<T: ?Sized> {
10111007
/// assert_eq!(["hello", "world"].concat(), "helloworld");
10121008
/// ```
10131009
#[stable(feature = "rust1", since = "1.0.0")]
1014-
fn concat(&self) -> Self::Output;
1010+
fn concat(&self) -> U;
10151011

10161012
/// Flattens a slice of `T` into a single value `U`, placing a given separator between each.
10171013
///
@@ -1021,12 +1017,10 @@ pub trait SliceConcatExt<T: ?Sized> {
10211017
/// assert_eq!(["hello", "world"].connect(" "), "hello world");
10221018
/// ```
10231019
#[stable(feature = "rust1", since = "1.0.0")]
1024-
fn connect(&self, sep: &T) -> Self::Output;
1020+
fn connect(&self, sep: &T) -> U;
10251021
}
10261022

1027-
impl<T: Clone, V: AsRef<[T]>> SliceConcatExt<T> for [V] {
1028-
type Output = Vec<T>;
1029-
1023+
impl<T: Clone, V: AsRef<[T]>> SliceConcatExt<T, Vec<T>> for [V] {
10301024
fn concat(&self) -> Vec<T> {
10311025
let size = self.iter().fold(0, |acc, v| acc + v.as_ref().len());
10321026
let mut result = Vec::with_capacity(size);

branches/try/src/libcollections/str.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,7 @@ pub use core::str::pattern;
8383
Section: Creating a string
8484
*/
8585

86-
impl<S: AsRef<str>> SliceConcatExt<str> for [S] {
87-
type Output = String;
88-
86+
impl<S: AsRef<str>> SliceConcatExt<str, String> for [S] {
8987
fn concat(&self) -> String {
9088
if self.is_empty() {
9189
return String::new();

0 commit comments

Comments
 (0)