Skip to content

Commit ebd8268

Browse files
committed
---
yaml --- r: 187572 b: refs/heads/tmp c: aa6604a h: refs/heads/master v: v3
1 parent 74deb01 commit ebd8268

File tree

253 files changed

+7197
-3218
lines changed

Some content is hidden

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

253 files changed

+7197
-3218
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
3434
refs/heads/beta: 522d09dfecbeca1595f25ac58c6d0178bbd21d7d
3535
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3636
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
37-
refs/heads/tmp: c9c5dd4b5bfddbee012acc62090a08f25f0003f8
37+
refs/heads/tmp: aa6604ac68429643ff1a3bb148dadc54d9ccc9af
3838
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f

branches/tmp/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ To contribute to Rust, please see [CONTRIBUTING.md](CONTRIBUTING.md).
111111
Rust has an [IRC] culture and most real-time collaboration happens in a
112112
variety of channels on Mozilla's IRC network, irc.mozilla.org. The
113113
most popular channel is [#rust], a venue for general discussion about
114-
Rust, and a good place to ask for help.
114+
Rust, and a good place to ask for help,
115115

116116
[IRC]: https://en.wikipedia.org/wiki/Internet_Relay_Chat
117117
[#rust]: irc://irc.mozilla.org/rust

branches/tmp/RELEASES.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Version 1.0.0-alpha.2 (February 2015)
5151
* Abstract [OS-specific string types][osstr], `std::ff::{OsString,
5252
OsStr}`, provide strings in platform-specific encodings for easier
5353
interop with system APIs. [RFC][osstr-rfc].
54-
* The `boxed::into_raw` and `Box::from_raw` functions [convert
54+
* The `boxed::into_raw` and `Box::frow_raw` functions [convert
5555
between `Box<T>` and `*mut T`][boxraw], a common pattern for
5656
creating raw pointers.
5757

branches/tmp/src/compiletest/compiletest.rs

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

branches/tmp/src/compiletest/errors.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ pub fn load_errors(testfile: &Path) -> Vec<ExpectedError> {
5858
fn parse_expected(last_nonfollow_error: Option<uint>,
5959
line_num: uint,
6060
line: &str) -> Option<(WhichLine, ExpectedError)> {
61-
let start = match line.find("//~") { Some(i) => i, None => return None };
61+
let start = match line.find_str("//~") { Some(i) => i, None => return None };
6262
let (follow, adjusts) = if line.char_at(start + 3) == '|' {
6363
(true, 0)
6464
} else {

branches/tmp/src/compiletest/header.rs

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

11-
use std::env;
12-
1311
use common::Config;
1412
use common;
1513
use util;
@@ -127,16 +125,6 @@ pub fn load_props(testfile: &Path) -> TestProps {
127125
true
128126
});
129127

130-
for key in vec!["RUST_TEST_NOCAPTURE", "RUST_TEST_TASKS"] {
131-
match env::var(key) {
132-
Ok(val) =>
133-
if exec_env.iter().find(|&&(ref x, _)| *x == key.to_string()).is_none() {
134-
exec_env.push((key.to_string(), val))
135-
},
136-
Err(..) => {}
137-
}
138-
}
139-
140128
TestProps {
141129
error_patterns: error_patterns,
142130
compile_flags: compile_flags,
@@ -342,7 +330,7 @@ fn parse_name_directive(line: &str, directive: &str) -> bool {
342330
pub fn parse_name_value_directive(line: &str, directive: &str)
343331
-> Option<String> {
344332
let keycolon = format!("{}:", directive);
345-
match line.find(&keycolon) {
333+
match line.find_str(&keycolon) {
346334
Some(colon) => {
347335
let value = line[(colon + keycolon.len()) .. line.len()].to_string();
348336
debug!("{}: {}", directive, value);

branches/tmp/src/compiletest/runtest.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,7 @@ fn check_debugger_output(debugger_run_result: &ProcRes, check_lines: &[String])
847847
check_lines.iter().map(|s| {
848848
s
849849
.trim()
850-
.split("[...]")
850+
.split_str("[...]")
851851
.map(|x| x.to_string())
852852
.collect()
853853
}).collect();
@@ -866,7 +866,7 @@ fn check_debugger_output(debugger_run_result: &ProcRes, check_lines: &[String])
866866
None
867867
}
868868
} else {
869-
rest.find(frag)
869+
rest.find_str(frag)
870870
};
871871
match found {
872872
None => {

branches/tmp/src/doc/intro.md

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -426,33 +426,39 @@ use std::thread::Thread;
426426
fn main() {
427427
let mut numbers = vec![1, 2, 3];
428428
429-
let guards: Vec<_> = (0..3).map(|i| {
430-
Thread::scoped(move || {
429+
for i in 0..3 {
430+
Thread::spawn(move || {
431431
for j in 0..3 { numbers[j] += 1 }
432432
});
433-
}).collect();
433+
}
434434
}
435435
```
436436
437437
It gives us this error:
438438
439439
```text
440-
7:29: 9:10 error: cannot move out of captured outer variable in an `FnMut` closure
441-
7 Thread::scoped(move || {
442-
8 for j in 0..3 { numbers[j] += 1 }
443-
9 });
440+
6:71 error: capture of moved value: `numbers`
441+
for j in 0..3 { numbers[j] += 1 }
442+
^~~~~~~
443+
7:50 note: `numbers` moved into closure environment here
444+
spawn(move || {
445+
for j in 0..3 { numbers[j] += 1 }
446+
});
447+
6:79 error: cannot assign to immutable dereference (dereference is implicit, due to indexing)
448+
for j in 0..3 { numbers[j] += 1 }
449+
^~~~~~~~~~~~~~~
444450
```
445451
446-
It mentions that "captured outer variable in an `FnMut` closure".
447-
Because we declared the closure as a moving closure, and it referred
448-
to `numbers`, the closure will try to take ownership of the
449-
vector. But the closure itself is created in a loop, and hence we will
450-
actually create three closures, one for every iteration of the
451-
loop. This means that all three of those closures would try to own
452-
`numbers`, which is impossible -- `numbers` must have just one
453-
owner. Rust detects this and gives us the error: we claim that
454-
`numbers` has ownership, but our code tries to make three owners. This
455-
may cause a safety problem, so Rust disallows it.
452+
It mentions that "numbers moved into closure environment". Because we
453+
declared the closure as a moving closure, and it referred to
454+
`numbers`, the closure will try to take ownership of the vector. But
455+
the closure itself is created in a loop, and hence we will actually
456+
create three closures, one for every iteration of the loop. This means
457+
that all three of those closures would try to own `numbers`, which is
458+
impossible -- `numbers` must have just one owner. Rust detects this
459+
and gives us the error: we claim that `numbers` has ownership, but our
460+
code tries to make three owners. This may cause a safety problem, so
461+
Rust disallows it.
456462
457463
What to do here? Rust has two types that helps us: `Arc<T>` and `Mutex<T>`.
458464
*Arc* stands for "atomically reference counted". In other words, an Arc will
@@ -474,14 +480,14 @@ use std::sync::{Arc,Mutex};
474480
fn main() {
475481
let numbers = Arc::new(Mutex::new(vec![1, 2, 3]));
476482
477-
let guards: Vec<_> = (0..3).map(|i| {
483+
for i in 0..3 {
478484
let number = numbers.clone();
479-
Thread::scoped(move || {
485+
Thread::spawn(move || {
480486
let mut array = number.lock().unwrap();
481487
array[i] += 1;
482488
println!("numbers[{}] is {}", i, array[i]);
483489
});
484-
}).collect();
490+
}
485491
}
486492
```
487493
@@ -510,10 +516,8 @@ numbers[1] is 3
510516
numbers[0] is 2
511517
```
512518
513-
Each time, we can get a slithtly different output because the threads
514-
are not quaranteed to run in any set order. If you get the same order
515-
every time it is because each of these threads are very small and
516-
complete too fast for their indeterminate behavior to surface.
519+
Each time, we get a slightly different output, because each thread works in a
520+
different order. You may not get the same output as this sample, even.
517521
518522
The important part here is that the Rust compiler was able to use ownership to
519523
give us assurance _at compile time_ that we weren't doing something incorrect
@@ -535,13 +539,13 @@ safety check that makes this an error about moved values:
535539
use std::thread::Thread;
536540
537541
fn main() {
538-
let numbers = vec![1, 2, 3];
539-
540-
let guards: Vec<_> = (0..3).map(|i| {
541-
Thread::scoped(move || {
542-
println!("{}", numbers[i]);
542+
let vec = vec![1, 2, 3];
543+
544+
for i in 0..3 {
545+
Thread::spawn(move || {
546+
println!("{}", vec[i]);
543547
});
544-
}).collect();
548+
}
545549
}
546550
```
547551

branches/tmp/src/doc/reference.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -515,9 +515,6 @@ This last example is different because it is not possible to use the suffix
515515
syntax with a floating point literal ending in a period. `2.f64` would attempt
516516
to call a method named `f64` on `2`.
517517

518-
The representation semantics of floating-point numbers are described in
519-
["Machine Types"](#machine-types).
520-
521518
#### Boolean literals
522519

523520
The two values of the boolean type are written `true` and `false`.

branches/tmp/src/doc/trpl/crates-and-modules.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Rust has two distinct terms that relate to the module system: *crate* and
1212
*module*. A crate is synonymous with a *library* or *package* in other
1313
languages. Hence "Cargo" as the name of Rust's package management tool: you
1414
ship your crates to others with Cargo. Crates can produce an executable or a
15-
library, depending on the project.
15+
shared library, depending on the project.
1616

1717
Each crate has an implicit *root module* that contains the code for that crate.
1818
You can then define a tree of sub-modules under that root module. Modules allow

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ fn main() {
9191
```
9292

9393
You've seen this code before, when we talked about standard input. We
94-
import the `std::old_io` module with `use`, and then our `main` function contains
94+
import the `std::io` module with `use`, and then our `main` function contains
9595
our program's logic. We print a little message announcing the game, ask the
9696
user to input a guess, get their input, and then print it out.
9797

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,6 @@ if x == 5 {
3434
}
3535
```
3636

37-
If there is more than one case, use an `else if`:
38-
39-
```rust
40-
let x = 5;
41-
42-
if x == 5 {
43-
println!("x is five!");
44-
} else if x == 6 {
45-
println!("x is six!");
46-
} else {
47-
println!("x is not five or six :(");
48-
}
49-
```
50-
5137
This is all pretty standard. However, you can also do this:
5238

5339

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,14 @@ for i in 0..nums.len() {
5757
}
5858
```
5959

60-
This is strictly worse than using an actual iterator. You can iterate over vectors
61-
directly, so write this:
60+
This is strictly worse than using an actual iterator. The `.iter()` method on
61+
vectors returns an iterator which iterates through a reference to each element
62+
of the vector in turn. So write this:
6263

6364
```rust
6465
let nums = vec![1, 2, 3];
6566

66-
for num in &nums {
67+
for num in nums.iter() {
6768
println!("{}", num);
6869
}
6970
```
@@ -85,17 +86,16 @@ see it. This code works fine too:
8586
```rust
8687
let nums = vec![1, 2, 3];
8788

88-
for num in &nums {
89+
for num in nums.iter() {
8990
println!("{}", *num);
9091
}
9192
```
9293

93-
Now we're explicitly dereferencing `num`. Why does `&nums` give us
94-
references? Firstly, because we explicitly asked it to with
95-
`&`. Secondly, if it gave us the data itself, we would have to be its
96-
owner, which would involve making a copy of the data and giving us the
97-
copy. With references, we're just borrowing a reference to the data,
98-
and so it's just passing a reference, without needing to do the move.
94+
Now we're explicitly dereferencing `num`. Why does `iter()` give us references?
95+
Well, if it gave us the data itself, we would have to be its owner, which would
96+
involve making a copy of the data and giving us the copy. With references,
97+
we're just borrowing a reference to the data, and so it's just passing
98+
a reference, without needing to do the copy.
9999

100100
So, now that we've established that ranges are often not what you want, let's
101101
talk about what you do want instead.
@@ -230,9 +230,9 @@ let nums = (1..100).collect::<Vec<i32>>();
230230
Now, `collect()` will require that the range gives it some numbers, and so
231231
it will do the work of generating the sequence.
232232

233-
Ranges are one of two basic iterators that you'll see. The other is `iter()`.
234-
`iter()` can turn a vector into a simple iterator that gives you each element
235-
in turn:
233+
Ranges are one of two basic iterators that you'll see. The other is `iter()`,
234+
which you've used before. `iter()` can turn a vector into a simple iterator
235+
that gives you each element in turn:
236236

237237
```rust
238238
let nums = [1, 2, 3];

branches/tmp/src/doc/trpl/more-strings.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@ string literal or a `String`.
3838

3939
# String
4040

41-
A `String` is a heap-allocated string. This string is growable, and is
42-
also guaranteed to be UTF-8. `String`s are commonly created by
43-
converting from a string slice using the `to_string` method.
41+
A `String` is a heap-allocated string. This string is growable, and is also
42+
guaranteed to be UTF-8.
4443

4544
```
4645
let mut s = "Hello".to_string();
@@ -50,7 +49,7 @@ s.push_str(", world.");
5049
println!("{}", s);
5150
```
5251

53-
A reference to a `String` will automatically coerce to a string slice:
52+
You can coerce a `String` into a `&str` by dereferencing it:
5453

5554
```
5655
fn takes_slice(slice: &str) {
@@ -59,7 +58,7 @@ fn takes_slice(slice: &str) {
5958
6059
fn main() {
6160
let s = "Hello".to_string();
62-
takes_slice(&s);
61+
takes_slice(&*s);
6362
}
6463
```
6564

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -687,9 +687,7 @@ than the hundred `int`s that make up the `BigStruct`.
687687

688688
This is an antipattern in Rust. Instead, write this:
689689

690-
```rust
691-
#![feature(box_syntax)]
692-
690+
```{rust}
693691
struct BigStruct {
694692
one: i32,
695693
two: i32,
@@ -708,13 +706,10 @@ fn main() {
708706
one_hundred: 100,
709707
});
710708
711-
let y = box foo(x);
709+
let y = Box::new(foo(x));
712710
}
713711
```
714712

715-
Note that this uses the `box_syntax` feature gate, so this syntax may change in
716-
the future.
717-
718713
This gives you flexibility without sacrificing performance.
719714

720715
You may think that this gives us terrible performance: return a value and then

0 commit comments

Comments
 (0)