Skip to content

Commit 7241d34

Browse files
committed
---
yaml --- r: 207951 b: refs/heads/snap-stage3 c: e32dab7 h: refs/heads/master i: 207949: 93fd0b8 207947: 2139ed1 207943: 8e96c87 207935: f66a935 v: v3
1 parent f084ee8 commit 7241d34

File tree

50 files changed

+409
-849
lines changed

Some content is hidden

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

50 files changed

+409
-849
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 38a97becdf3e6a6157f6f7ec2d98ade8d8edc193
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 77ce30f03828c764e8638452acd7b64d1c5cd6f9
4+
refs/heads/snap-stage3: e32dab78b8a6deaf973de6c23c509780533e8fd7
55
refs/heads/try: 7b4ef47b7805a402d756fb8157101f64880a522f
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d

branches/snap-stage3/src/compiletest/compiletest.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ pub fn test_opts(config: &Config) -> test::TestOpts {
269269
run_ignored: config.run_ignored,
270270
logfile: config.logfile.clone(),
271271
run_tests: true,
272-
bench_benchmarks: true,
272+
run_benchmarks: true,
273273
nocapture: env::var("RUST_TEST_NOCAPTURE").is_ok(),
274274
color: test::AutoColor,
275275
}

branches/snap-stage3/src/doc/trpl/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,5 +190,5 @@ fn main() {
190190
We created an inner scope with an additional set of curly braces. `y` will go out of
191191
scope before we call `push()`, and so we’re all good.
192192

193-
This concept of ownership isn’t just good for preventing dangling pointers, but an
193+
This concept of ownership isn’t just good for preventing danging pointers, but an
194194
entire set of related problems, like iterator invalidation, concurrency, and more.

branches/snap-stage3/src/doc/trpl/SUMMARY.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,5 @@
6464
* [Benchmark Tests](benchmark-tests.md)
6565
* [Box Syntax and Patterns](box-syntax-and-patterns.md)
6666
* [Slice Patterns](slice-patterns.md)
67-
* [Associated Constants](associated-constants.md)
6867
* [Glossary](glossary.md)
6968
* [Academic Research](academic-research.md)

branches/snap-stage3/src/doc/trpl/associated-constants.md

Lines changed: 0 additions & 79 deletions
This file was deleted.

branches/snap-stage3/src/doc/trpl/concurrency.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ use std::thread;
116116
fn main() {
117117
let mut data = vec![1u32, 2, 3];
118118
119-
for i in 0..3 {
119+
for i in 0..2 {
120120
thread::spawn(move || {
121121
data[i] += 1;
122122
});
@@ -154,7 +154,7 @@ use std::sync::Mutex;
154154
fn main() {
155155
let mut data = Mutex::new(vec![1u32, 2, 3]);
156156
157-
for i in 0..3 {
157+
for i in 0..2 {
158158
let data = data.lock().unwrap();
159159
thread::spawn(move || {
160160
data[i] += 1;
@@ -196,7 +196,7 @@ use std::thread;
196196
fn main() {
197197
let data = Arc::new(Mutex::new(vec![1u32, 2, 3]));
198198
199-
for i in 0..3 {
199+
for i in 0..2 {
200200
let data = data.clone();
201201
thread::spawn(move || {
202202
let mut data = data.lock().unwrap();
@@ -217,7 +217,7 @@ thread more closely:
217217
# use std::thread;
218218
# fn main() {
219219
# let data = Arc::new(Mutex::new(vec![1u32, 2, 3]));
220-
# for i in 0..3 {
220+
# for i in 0..2 {
221221
# let data = data.clone();
222222
thread::spawn(move || {
223223
let mut data = data.lock().unwrap();

branches/snap-stage3/src/doc/trpl/patterns.md

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ This prints `something else`
7070

7171
# Bindings
7272

73-
You can bind values to names with `@`:
73+
If you’re matching multiple things, via a `|` or a `...`, you can bind
74+
the value to a name with `@`:
7475

7576
```rust
7677
let x = 1;
@@ -81,36 +82,7 @@ match x {
8182
}
8283
```
8384

84-
This prints `got a range element 1`. This is useful when you want to
85-
do a complicated match of part of a data structure:
86-
87-
```rust
88-
#[derive(Debug)]
89-
struct Person {
90-
name: Option<String>,
91-
}
92-
93-
let name = "Steve".to_string();
94-
let mut x: Option<Person> = Some(Person { name: Some(name) });
95-
match x {
96-
Some(Person { name: ref a @ Some(_), .. }) => println!("{:?}", a),
97-
_ => {}
98-
}
99-
```
100-
101-
This prints `Some("Steve")`: We’ve bound the inner `name` to `a`.
102-
103-
If you use `@` with `|`, you need to make sure the name is bound in each part
104-
of the pattern:
105-
106-
```rust
107-
let x = 5;
108-
109-
match x {
110-
e @ 1 ... 5 | e @ 8 ... 10 => println!("got a range element {}", e),
111-
_ => println!("anything"),
112-
}
113-
```
85+
This prints `got a range element 1`.
11486

11587
# Ignoring variants
11688

branches/snap-stage3/src/libcollections/slice.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,7 +1004,11 @@ pub trait SliceConcatExt<T: ?Sized, U> {
10041004
/// # Examples
10051005
///
10061006
/// ```
1007-
/// assert_eq!(["hello", "world"].concat(), "helloworld");
1007+
/// let v = vec!["hello", "world"];
1008+
///
1009+
/// let s: String = v.concat();
1010+
///
1011+
/// println!("{}", s); // prints "helloworld"
10081012
/// ```
10091013
#[stable(feature = "rust1", since = "1.0.0")]
10101014
fn concat(&self) -> U;
@@ -1014,7 +1018,11 @@ pub trait SliceConcatExt<T: ?Sized, U> {
10141018
/// # Examples
10151019
///
10161020
/// ```
1017-
/// assert_eq!(["hello", "world"].connect(" "), "hello world");
1021+
/// let v = vec!["hello", "world"];
1022+
///
1023+
/// let s: String = v.connect(" ");
1024+
///
1025+
/// println!("{}", s); // prints "hello world"
10181026
/// ```
10191027
#[stable(feature = "rust1", since = "1.0.0")]
10201028
fn connect(&self, sep: &T) -> U;

branches/snap-stage3/src/libcollections/string.rs

Lines changed: 10 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ use rustc_unicode::str as unicode_str;
2626
use rustc_unicode::str::Utf16Item;
2727

2828
use borrow::{Cow, IntoCow};
29-
use range::RangeArgument;
30-
use str::{self, FromStr, Utf8Error, Chars};
29+
use str::{self, FromStr, Utf8Error};
3130
use vec::{DerefVec, Vec, as_vec};
3231

3332
/// A growable string stored as a UTF-8 encoded buffer.
@@ -696,59 +695,6 @@ impl String {
696695
pub fn clear(&mut self) {
697696
self.vec.clear()
698697
}
699-
700-
/// Create a draining iterator that removes the specified range in the string
701-
/// and yields the removed chars from start to end. The element range is
702-
/// removed even if the iterator is not consumed until the end.
703-
///
704-
/// # Panics
705-
///
706-
/// Panics if the starting point or end point are not on character boundaries,
707-
/// or if they are out of bounds.
708-
///
709-
/// # Examples
710-
///
711-
/// ```
712-
/// # #![feature(collections_drain)]
713-
///
714-
/// let mut s = String::from("α is alpha, β is beta");
715-
/// let beta_offset = s.find('β').unwrap_or(s.len());
716-
///
717-
/// // Remove the range up until the β from the string
718-
/// let t: String = s.drain(..beta_offset).collect();
719-
/// assert_eq!(t, "α is alpha, ");
720-
/// assert_eq!(s, "β is beta");
721-
///
722-
/// // A full range clears the string
723-
/// s.drain(..);
724-
/// assert_eq!(s, "");
725-
/// ```
726-
#[unstable(feature = "collections_drain",
727-
reason = "recently added, matches RFC")]
728-
pub fn drain<R>(&mut self, range: R) -> Drain where R: RangeArgument<usize> {
729-
// Memory safety
730-
//
731-
// The String version of Drain does not have the memory safety issues
732-
// of the vector version. The data is just plain bytes.
733-
// Because the range removal happens in Drop, if the Drain iterator is leaked,
734-
// the removal will not happen.
735-
let len = self.len();
736-
let start = *range.start().unwrap_or(&0);
737-
let end = *range.end().unwrap_or(&len);
738-
739-
// Take out two simultaneous borrows. The &mut String won't be accessed
740-
// until iteration is over, in Drop.
741-
let self_ptr = self as *mut _;
742-
// slicing does the appropriate bounds checks
743-
let chars_iter = self[start..end].chars();
744-
745-
Drain {
746-
start: start,
747-
end: end,
748-
iter: chars_iter,
749-
string: self_ptr,
750-
}
751-
}
752698
}
753699

754700
impl FromUtf8Error {
@@ -794,7 +740,8 @@ impl<'a> FromIterator<&'a str> for String {
794740
}
795741
}
796742

797-
#[stable(feature = "rust1", since = "1.0.0")]
743+
#[unstable(feature = "collections",
744+
reason = "waiting on Extend stabilization")]
798745
impl Extend<char> for String {
799746
fn extend<I: IntoIterator<Item=char>>(&mut self, iterable: I) {
800747
let iterator = iterable.into_iter();
@@ -806,7 +753,8 @@ impl Extend<char> for String {
806753
}
807754
}
808755

809-
#[stable(feature = "rust1", since = "1.0.0")]
756+
#[unstable(feature = "collections",
757+
reason = "waiting on Extend stabilization")]
810758
impl<'a> Extend<&'a str> for String {
811759
fn extend<I: IntoIterator<Item=&'a str>>(&mut self, iterable: I) {
812760
let iterator = iterable.into_iter();
@@ -921,7 +869,8 @@ impl hash::Hash for String {
921869
}
922870
}
923871

924-
#[stable(feature = "rust1", since = "1.0.0")]
872+
#[unstable(feature = "collections",
873+
reason = "recent addition, needs more experience")]
925874
impl<'a> Add<&'a str> for String {
926875
type Output = String;
927876

@@ -1015,17 +964,11 @@ pub fn as_string<'a>(x: &'a str) -> DerefString<'a> {
1015964
DerefString { x: as_vec(x.as_bytes()) }
1016965
}
1017966

1018-
/// Error returned from `String::from_str`
1019-
#[unstable(feature = "str_parse_error", reason = "may want to be replaced with \
1020-
Void if it ever exists")]
1021-
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
1022-
pub struct ParseError(());
1023-
1024-
#[stable(feature = "rust1", since = "1.0.0")]
967+
#[unstable(feature = "collections", reason = "associated error type may change")]
1025968
impl FromStr for String {
1026-
type Err = ParseError;
969+
type Err = ();
1027970
#[inline]
1028-
fn from_str(s: &str) -> Result<String, ParseError> {
971+
fn from_str(s: &str) -> Result<String, ()> {
1029972
Ok(String::from_str(s))
1030973
}
1031974
}
@@ -1129,55 +1072,3 @@ impl fmt::Write for String {
11291072
Ok(())
11301073
}
11311074
}
1132-
1133-
/// A draining iterator for `String`.
1134-
#[unstable(feature = "collections_drain", reason = "recently added")]
1135-
pub struct Drain<'a> {
1136-
/// Will be used as &'a mut String in the destructor
1137-
string: *mut String,
1138-
/// Start of part to remove
1139-
start: usize,
1140-
/// End of part to remove
1141-
end: usize,
1142-
/// Current remaining range to remove
1143-
iter: Chars<'a>,
1144-
}
1145-
1146-
unsafe impl<'a> Sync for Drain<'a> {}
1147-
unsafe impl<'a> Send for Drain<'a> {}
1148-
1149-
#[unstable(feature = "collections_drain", reason = "recently added")]
1150-
impl<'a> Drop for Drain<'a> {
1151-
fn drop(&mut self) {
1152-
unsafe {
1153-
// Use Vec::drain. "Reaffirm" the bounds checks to avoid
1154-
// panic code being inserted again.
1155-
let self_vec = (*self.string).as_mut_vec();
1156-
if self.start <= self.end && self.end <= self_vec.len() {
1157-
self_vec.drain(self.start..self.end);
1158-
}
1159-
}
1160-
}
1161-
}
1162-
1163-
#[unstable(feature = "collections_drain", reason = "recently added")]
1164-
impl<'a> Iterator for Drain<'a> {
1165-
type Item = char;
1166-
1167-
#[inline]
1168-
fn next(&mut self) -> Option<char> {
1169-
self.iter.next()
1170-
}
1171-
1172-
fn size_hint(&self) -> (usize, Option<usize>) {
1173-
self.iter.size_hint()
1174-
}
1175-
}
1176-
1177-
#[unstable(feature = "collections_drain", reason = "recently added")]
1178-
impl<'a> DoubleEndedIterator for Drain<'a> {
1179-
#[inline]
1180-
fn next_back(&mut self) -> Option<char> {
1181-
self.iter.next_back()
1182-
}
1183-
}

0 commit comments

Comments
 (0)