Skip to content

Commit 4fd2bb5

Browse files
committed
---
yaml --- r: 192359 b: refs/heads/auto c: 9ae144f h: refs/heads/master i: 192357: 62d876c 192355: b499e96 192351: a0cdac0 v: v3
1 parent 7dcc804 commit 4fd2bb5

File tree

141 files changed

+674
-1145
lines changed

Some content is hidden

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

141 files changed

+674
-1145
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1010
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1111
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1212
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
13-
refs/heads/auto: ad41e7cd7a3d1969e666508d7e4a3ba305cee2ec
13+
refs/heads/auto: 9ae144f05526ce8963af265d3b33f6c565c85e43
1414
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1515
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1616
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/man/rustc.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ full debug info with variable and type information.
242242
\fBopt\-level\fR=\fIVAL\fR
243243
Optimize with possible levels 0\[en]3
244244

245-
.SH ENVIRONMENT
245+
.SH ENVIRONMENT VARIABLES
246246

247247
Some of these affect the output of the compiler, while others affect programs
248248
which link to the standard library.

branches/auto/src/compiletest/header.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,6 @@ pub fn is_test_ignored(config: &Config, testfile: &Path) -> bool {
163163
fn ignore_target(config: &Config) -> String {
164164
format!("ignore-{}", util::get_os(&config.target))
165165
}
166-
fn ignore_architecture(config: &Config) -> String {
167-
format!("ignore-{}", util::get_arch(&config.target))
168-
}
169166
fn ignore_stage(config: &Config) -> String {
170167
format!("ignore-{}",
171168
config.stage_id.split('-').next().unwrap())
@@ -229,7 +226,6 @@ pub fn is_test_ignored(config: &Config, testfile: &Path) -> bool {
229226
let val = iter_header(testfile, &mut |ln| {
230227
!parse_name_directive(ln, "ignore-test") &&
231228
!parse_name_directive(ln, &ignore_target(config)) &&
232-
!parse_name_directive(ln, &ignore_architecture(config)) &&
233229
!parse_name_directive(ln, &ignore_stage(config)) &&
234230
!(config.mode == common::Pretty && parse_name_directive(ln, "ignore-pretty")) &&
235231
!(config.target != config.host && parse_name_directive(ln, "ignore-cross-compile")) &&

branches/auto/src/compiletest/procsrv.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@
1010

1111
#![allow(deprecated)] // for old path, for dynamic_lib
1212

13-
use std::dynamic_lib::DynamicLibrary;
14-
use std::io::prelude::*;
15-
use std::old_path::Path;
1613
use std::process::{ExitStatus, Command, Child, Output, Stdio};
14+
use std::io::prelude::*;
15+
use std::dynamic_lib::DynamicLibrary;
1716

1817
fn add_target_env(cmd: &mut Command, lib_path: &str, aux_path: Option<&str>) {
1918
// Need to be sure to put both the lib_path and the aux path in the dylib

branches/auto/src/compiletest/util.rs

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,6 @@ const OS_TABLE: &'static [(&'static str, &'static str)] = &[
2525
("openbsd", "openbsd"),
2626
];
2727

28-
const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[
29-
("i386", "x86"),
30-
("i686", "x86"),
31-
("amd64", "x86_64"),
32-
("x86_64", "x86_64"),
33-
("sparc", "sparc"),
34-
("powerpc", "powerpc"),
35-
("arm64", "aarch64"),
36-
("arm", "arm"),
37-
("aarch64", "aarch64"),
38-
("mips", "mips"),
39-
("xcore", "xcore"),
40-
("msp430", "msp430"),
41-
("hexagon", "hexagon"),
42-
("s390x", "systemz"),
43-
];
44-
4528
pub fn get_os(triple: &str) -> &'static str {
4629
for &(triple_os, os) in OS_TABLE {
4730
if triple.contains(triple_os) {
@@ -50,14 +33,6 @@ pub fn get_os(triple: &str) -> &'static str {
5033
}
5134
panic!("Cannot determine OS from triple");
5235
}
53-
pub fn get_arch(triple: &str) -> &'static str {
54-
for &(triple_arch, arch) in ARCH_TABLE {
55-
if triple.contains(triple_arch) {
56-
return arch
57-
}
58-
}
59-
panic!("Cannot determine Architecture from triple");
60-
}
6136

6237
pub fn make_new_path(path: &str) -> String {
6338
assert!(cfg!(windows));

branches/auto/src/doc/reference.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1982,7 +1982,7 @@ the namespace hierarchy as it normally would.
19821982
## Attributes
19831983

19841984
```{.ebnf .gram}
1985-
attribute : '#' '!' ? '[' meta_item ']' ;
1985+
attribute : "#!" ? '[' meta_item ']' ;
19861986
meta_item : ident [ '=' literal
19871987
| '(' meta_seq ')' ] ? ;
19881988
meta_seq : meta_item [ ',' meta_seq ] ? ;
@@ -3158,7 +3158,7 @@ ten_times(|j| println!("hello, {}", j));
31583158
### While loops
31593159

31603160
```{.ebnf .gram}
3161-
while_expr : [ lifetime ':' ] "while" no_struct_literal_expr '{' block '}' ;
3161+
while_expr : "while" no_struct_literal_expr '{' block '}' ;
31623162
```
31633163

31643164
A `while` loop begins by evaluating the boolean loop conditional expression.
@@ -3223,7 +3223,7 @@ A `continue` expression is only permitted in the body of a loop.
32233223
### For expressions
32243224

32253225
```{.ebnf .gram}
3226-
for_expr : [ lifetime ':' ] "for" pat "in" no_struct_literal_expr '{' block '}' ;
3226+
for_expr : "for" pat "in" no_struct_literal_expr '{' block '}' ;
32273227
```
32283228

32293229
A `for` expression is a syntactic construct for looping over elements provided

branches/auto/src/doc/trpl/SUMMARY.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Summary
22

3-
* [The Basics](basic.md)
3+
* [I: The Basics](basic.md)
44
* [Installing Rust](installing-rust.md)
55
* [Hello, world!](hello-world.md)
66
* [Hello, Cargo!](hello-cargo.md)
@@ -14,7 +14,7 @@
1414
* [Strings](strings.md)
1515
* [Arrays, Vectors, and Slices](arrays-vectors-and-slices.md)
1616
* [Standard Input](standard-input.md)
17-
* [Intermediate Rust](intermediate.md)
17+
* [II: Intermediate Rust](intermediate.md)
1818
* [Crates and Modules](crates-and-modules.md)
1919
* [Testing](testing.md)
2020
* [Pointers](pointers.md)
@@ -31,7 +31,7 @@
3131
* [Concurrency](concurrency.md)
3232
* [Error Handling](error-handling.md)
3333
* [Documentation](documentation.md)
34-
* [Advanced Topics](advanced.md)
34+
* [III: Advanced Topics](advanced.md)
3535
* [FFI](ffi.md)
3636
* [Unsafe Code](unsafe.md)
3737
* [Advanced Macros](advanced-macros.md)

branches/auto/src/doc/trpl/advanced-macros.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ off.
66
# Syntactic requirements
77

88
Even when Rust code contains un-expanded macros, it can be parsed as a full
9-
[syntax tree][ast]. This property can be very useful for editors and other
10-
tools that process code. It also has a few consequences for the design of
11-
Rust's macro system.
12-
13-
[ast]: glossary.html#abstract-syntax-tree
9+
syntax tree. This property can be very useful for editors and other tools that
10+
process code. It also has a few consequences for the design of Rust's macro
11+
system.
1412

1513
One consequence is that Rust must determine, when it parses a macro invocation,
1614
whether the macro stands in for

branches/auto/src/doc/trpl/compound-data-types.md

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ This pattern is very powerful, and we'll see it repeated more later.
4747

4848
There are also a few things you can do with a tuple as a whole, without
4949
destructuring. You can assign one tuple into another, if they have the same
50-
contained types and [arity]. Tuples have the same arity when they have the same
50+
contained types and arity. Tuples have the same arity when they have the same
5151
length.
5252

5353
```rust
@@ -196,9 +196,8 @@ Now, we have actual names, rather than positions. Good names are important,
196196
and with a struct, we have actual names.
197197

198198
There _is_ one case when a tuple struct is very useful, though, and that's a
199-
tuple struct with only one element. We call this the *newtype* pattern, because
200-
it allows you to create a new type, distinct from that of its contained value
201-
and expressing its own semantic meaning:
199+
tuple struct with only one element. We call this a *newtype*, because it lets
200+
you create a new type that's similar to another one:
202201

203202
```{rust}
204203
struct Inches(i32);
@@ -217,7 +216,7 @@ destructuring `let`, as we discussed previously in 'tuples.' In this case, the
217216

218217
Finally, Rust has a "sum type", an *enum*. Enums are an incredibly useful
219218
feature of Rust, and are used throughout the standard library. An `enum` is
220-
a type which relates a set of alternates to a specific name. For example, below
219+
a type which ties a set of alternates to a specific name. For example, below
221220
we define `Character` to be either a `Digit` or something else. These
222221
can be used via their fully scoped names: `Character::Other` (more about `::`
223222
below).
@@ -229,8 +228,8 @@ enum Character {
229228
}
230229
```
231230

232-
Most normal types are allowed as the variant components of an `enum`. Here are
233-
some examples:
231+
An `enum` variant can be defined as most normal types. Below are some example
232+
types which also would be allowed in an `enum`.
234233

235234
```rust
236235
struct Empty;
@@ -240,15 +239,15 @@ struct Status { Health: i32, Mana: i32, Attack: i32, Defense: i32 }
240239
struct HeightDatabase(Vec<i32>);
241240
```
242241

243-
You see that, depending on its type, an `enum` variant may or may not hold data.
244-
In `Character`, for instance, `Digit` gives a meaningful name for an `i32`
245-
value, where `Other` is only a name. However, the fact that they represent
246-
distinct categories of `Character` is a very useful property.
242+
So you see that depending on the sub-datastructure, the `enum` variant, same as
243+
a struct, may or may not hold data. That is, in `Character`, `Digit` is a name
244+
tied to an `i32` where `Other` is just a name. However, the fact that they are
245+
distinct makes this very useful.
247246

248-
As with structures, the variants of an enum by default are not comparable with
249-
equality operators (`==`, `!=`), have no ordering (`<`, `>=`, etc.), and do not
250-
support other binary operations such as `*` and `+`. As such, the following code
251-
is invalid for the example `Character` type:
247+
As with structures, enums don't by default have access to operators such as
248+
compare ( `==` and `!=`), binary operations (`*` and `+`), and order
249+
(`<` and `>=`). As such, using the previous `Character` type, the
250+
following code is invalid:
252251

253252
```{rust,ignore}
254253
// These assignments both succeed
@@ -266,10 +265,9 @@ let four_equals_ten = four == ten;
266265
```
267266

268267
This may seem rather limiting, but it's a limitation which we can overcome.
269-
There are two ways: by implementing equality ourselves, or by pattern matching
270-
variants with [`match`][match] expressions, which you'll learn in the next
271-
chapter. We don't know enough about Rust to implement equality yet, but we can
272-
use the `Ordering` enum from the standard library, which does:
268+
There are two ways: by implementing equality ourselves, or by using the
269+
[`match`][match] keyword. We don't know enough about Rust to implement equality
270+
yet, but we can use the `Ordering` enum from the standard library, which does:
273271

274272
```
275273
enum Ordering {
@@ -279,8 +277,9 @@ enum Ordering {
279277
}
280278
```
281279

282-
Because `Ordering` has already been defined for us, we will import it with the
283-
`use` keyword. Here's an example of how it is used:
280+
Because we did not define `Ordering`, we must import it (from the std
281+
library) with the `use` keyword. Here's an example of how `Ordering` is
282+
used:
284283

285284
```{rust}
286285
use std::cmp::Ordering;
@@ -314,17 +313,17 @@ the standard library if you need them.
314313

315314
Okay, let's talk about the actual code in the example. `cmp` is a function that
316315
compares two things, and returns an `Ordering`. We return either
317-
`Ordering::Less`, `Ordering::Greater`, or `Ordering::Equal`, depending on
318-
whether the first value is less than, greater than, or equal to the second. Note
319-
that each variant of the `enum` is namespaced under the `enum` itself: it's
320-
`Ordering::Greater`, not `Greater`.
316+
`Ordering::Less`, `Ordering::Greater`, or `Ordering::Equal`, depending on if
317+
the two values are less, greater, or equal. Note that each variant of the
318+
`enum` is namespaced under the `enum` itself: it's `Ordering::Greater` not
319+
`Greater`.
321320

322321
The `ordering` variable has the type `Ordering`, and so contains one of the
323322
three values. We then do a bunch of `if`/`else` comparisons to check which
324323
one it is.
325324

326-
This `Ordering::Greater` notation is too long. Let's use another form of `use`
327-
to import the `enum` variants instead. This will avoid full scoping:
325+
This `Ordering::Greater` notation is too long. Let's use `use` to import the
326+
`enum` variants instead. This will avoid full scoping:
328327

329328
```{rust}
330329
use std::cmp::Ordering::{self, Equal, Less, Greater};
@@ -348,18 +347,16 @@ fn main() {
348347
```
349348

350349
Importing variants is convenient and compact, but can also cause name conflicts,
351-
so do this with caution. For this reason, it's normally considered better style
352-
to `use` an enum rather than its variants directly.
350+
so do this with caution. It's considered good style to rarely import variants
351+
for this reason.
353352

354-
As you can see, `enum`s are quite a powerful tool for data representation, and
355-
are even more useful when they're [generic][generics] across types. Before we
356-
get to generics, though, let's talk about how to use enums with pattern
357-
matching, a tool that will let us deconstruct sum types (the type theory term
358-
for enums) like `Ordering` in a very elegant way that avoids all these messy
359-
and brittle `if`/`else`s.
353+
As you can see, `enum`s are quite a powerful tool for data representation, and are
354+
even more useful when they're [generic][generics] across types. Before we
355+
get to generics, though, let's talk about how to use them with pattern matching, a
356+
tool that will let us deconstruct this sum type (the type theory term for enums)
357+
in a very elegant way and avoid all these messy `if`/`else`s.
360358

361359

362-
[arity]: ./glossary.html#arity
363360
[match]: ./match.html
364361
[game]: ./guessing-game.html#comparing-guesses
365362
[generics]: ./generics.html

branches/auto/src/doc/trpl/concurrency.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@ us enforce that it can't leave the current thread.
4040

4141
### `Sync`
4242

43-
The second of these traits is called [`Sync`](../std/marker/trait.Sync.html).
43+
The second of these two trait is called [`Sync`](../std/marker/trait.Sync.html).
4444
When a type `T` implements `Sync`, it indicates to the compiler that something
4545
of this type has no possibility of introducing memory unsafety when used from
4646
multiple threads concurrently.
4747

4848
For example, sharing immutable data with an atomic reference count is
4949
threadsafe. Rust provides a type like this, `Arc<T>`, and it implements `Sync`,
50-
so it is safe to share between threads.
50+
so that it could be safely shared between threads.
5151

5252
These two traits allow you to use the type system to make strong guarantees
5353
about the properties of your code under concurrency. Before we demonstrate
@@ -69,7 +69,7 @@ fn main() {
6969
}
7070
```
7171

72-
The `thread::scoped()` method accepts a closure, which is executed in a new
72+
The `Thread::scoped()` method accepts a closure, which is executed in a new
7373
thread. It's called `scoped` because this thread returns a join guard:
7474

7575
```
@@ -208,10 +208,10 @@ Here's the error:
208208

209209
```text
210210
<anon>:11:9: 11:22 error: the trait `core::marker::Send` is not implemented for the type `std::sync::mutex::MutexGuard<'_, collections::vec::Vec<u32>>` [E0277]
211-
<anon>:11 thread::spawn(move || {
211+
<anon>:11 Thread::spawn(move || {
212212
^~~~~~~~~~~~~
213213
<anon>:11:9: 11:22 note: `std::sync::mutex::MutexGuard<'_, collections::vec::Vec<u32>>` cannot be sent between threads safely
214-
<anon>:11 thread::spawn(move || {
214+
<anon>:11 Thread::spawn(move || {
215215
^~~~~~~~~~~~~
216216
```
217217

@@ -322,6 +322,7 @@ While this channel is just sending a generic signal, we can send any data that
322322
is `Send` over the channel!
323323

324324
```
325+
use std::sync::{Arc, Mutex};
325326
use std::thread;
326327
use std::sync::mpsc;
327328

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ fn main() {
430430
}
431431
```
432432
433-
But it is not idiomatic. This is significantly more likely to introduce a
433+
But it is not idiomatic. This is significantly more likely to introducing a
434434
naming conflict. In our short program, it's not a big deal, but as it grows, it
435435
becomes a problem. If we have conflicting names, Rust will give a compilation
436436
error. For example, if we made the `japanese` functions public, and tried to do

branches/auto/src/doc/trpl/glossary.md

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,3 @@ let z = (8, 2, 6);
1414
```
1515

1616
In the example above `x` and `y` have arity 2. `z` has arity 3.
17-
18-
### Abstract Syntax Tree
19-
20-
When a compiler is compiling your program, it does a number of different
21-
things. One of the things that it does is turn the text of your program into an
22-
'abstract syntax tree,' or 'AST.' This tree is a representation of the
23-
structure of your program. For example, `2 + 3` can be turned into a tree:
24-
25-
```text
26-
+
27-
/ \
28-
2 3
29-
```
30-
31-
And `2 + (3 * 4)` would look like this:
32-
33-
```text
34-
+
35-
/ \
36-
2 *
37-
/ \
38-
3 4
39-
```

branches/auto/src/doc/trpl/standard-input.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,8 @@ doesn't work, so we're okay with that. In most cases, we would want to handle
115115
the error case explicitly. `expect()` allows us to give an error message if
116116
this crash happens.
117117

118-
We will cover the exact details of how all of this works later in the Guide in
119-
[Error Handling]. For now, this gives you enough of a basic understanding to
120-
work with.
118+
We will cover the exact details of how all of this works later in the Guide.
119+
For now, this gives you enough of a basic understanding to work with.
121120

122121
Back to the code we were working on! Here's a refresher:
123122

@@ -158,6 +157,3 @@ here.
158157

159158
That's all you need to get basic input from the standard input! It's not too
160159
complicated, but there are a number of small parts.
161-
162-
163-
[Error Handling]: ./error-handling.html

0 commit comments

Comments
 (0)