Skip to content

Commit a7a31d6

Browse files
committed
---
yaml --- r: 195347 b: refs/heads/snap-stage3 c: 1accaa9 h: refs/heads/master i: 195345: 6c875e7 195343: 8590807 v: v3
1 parent 3a945cd commit a7a31d6

File tree

36 files changed

+260
-164
lines changed

36 files changed

+260
-164
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: 14192d6df5cc714e5c9a3ca70b08f2514d977be2
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 92f3d9a6b46a116a48b0dd35b66c8f66786296d6
4+
refs/heads/snap-stage3: 1accaa9f86002e95c1d0a677349ab033ec6dd2e2
55
refs/heads/try: 961e0358e1a5c0faaef606e31e9965742c1643bf
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d

branches/snap-stage3/AUTHORS.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ Peter Schuller <[email protected]>
606606
Peter Williams <[email protected]>
607607
Peter Zotov <[email protected]>
608608
Petter Remen <[email protected]>
609-
Phil Dawes <[email protected]>
609+
Phil Dawes <[email protected]>
610610
Phil Ruffwind <[email protected]>
611611
Philip Munksgaard <[email protected]>
612612
Philipp Brüschweiler <[email protected]>

branches/snap-stage3/configure

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ case $CFG_OSTYPE in
404404
CFG_OSTYPE=pc-windows-gnu
405405
;;
406406

407-
# Thad's Cygwin identifers below
407+
# Thad's Cygwin identifiers below
408408

409409
# Vista 32 bit
410410
CYGWIN_NT-6.0)

branches/snap-stage3/mk/platform.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ define CFG_MAKE_TOOLCHAIN
179179

180180
ifeq ($$(findstring $(HOST_$(1)),arm aarch64 mips mipsel powerpc),)
181181

182-
# On Bitrig, we need the relocation model to be PIC for everthing
182+
# On Bitrig, we need the relocation model to be PIC for everything
183183
ifeq (,$(filter $(OSTYPE_$(1)),bitrig))
184184
LLVM_MC_RELOCATION_MODEL="pic"
185185
else

branches/snap-stage3/mk/target.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ endef
132132
# on $$(TSREQ$(1)_T_$(2)_H_$(3)), to ensure that no products will be
133133
# put into the target area until after the get-snapshot.py script has
134134
# had its chance to clean it out; otherwise the other products will be
135-
# inadvertantly included in the clean out.
135+
# inadvertently included in the clean out.
136136
SNAPSHOT_RUSTC_POST_CLEANUP=$(HBIN0_H_$(CFG_BUILD))/rustc$(X_$(CFG_BUILD))
137137

138138
define TARGET_HOST_RULES

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* [Looping](looping.md)
1414
* [Strings](strings.md)
1515
* [Arrays, Vectors, and Slices](arrays-vectors-and-slices.md)
16+
* [Standard Input](standard-input.md)
1617
* [Intermediate Rust](intermediate.md)
1718
* [Crates and Modules](crates-and-modules.md)
1819
* [Testing](testing.md)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ let obj = Box::new(graph) as Box<Graph>;
170170
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
171171
```
172172

173-
We can’t create a trait object like this, becuase we don’t know the associated
173+
We can’t create a trait object like this, because we don’t know the associated
174174
types. Instead, we can write this:
175175

176176
```rust

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ can be useful when changing some options, or when writing a macro.
517517

518518
### Re-exports
519519

520-
`rustdoc` will show the documentation for a public re-export in both places:
520+
`rustdoc` will show the documentation for a publc re-export in both places:
521521

522522
```ignore
523523
extern crate foo;
@@ -529,7 +529,7 @@ This will create documentation for bar both inside the documentation for the
529529
crate `foo`, as well as the documentation for your crate. It will use the same
530530
documentation in both places.
531531

532-
This behavior can be supressed with `no_inline`:
532+
This behavior can be suppressed with `no_inline`:
533533

534534
```ignore
535535
extern crate foo;
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
% Standard Input
2+
3+
Getting input from the keyboard is pretty easy, but uses some things
4+
we haven't seen before. Here's a simple program that reads some input,
5+
and then prints it back out:
6+
7+
```{rust,ignore}
8+
# #![feature(old_io)]
9+
fn main() {
10+
println!("Type something!");
11+
12+
let input = std::old_io::stdin().read_line().ok().expect("Failed to read line");
13+
14+
println!("{}", input);
15+
}
16+
```
17+
18+
Let's go over these chunks, one by one:
19+
20+
```{rust,ignore}
21+
std::old_io::stdin();
22+
```
23+
24+
This calls a function, `stdin()`, that lives inside the `std::old_io` module. As
25+
you can imagine, everything in `std` is provided by Rust, the 'standard
26+
library.' We'll talk more about the module system later.
27+
28+
Since writing the fully qualified name all the time is annoying, we can use
29+
the `use` statement to import it in:
30+
31+
```{rust}
32+
# #![feature(old_io)]
33+
use std::old_io::stdin;
34+
35+
stdin();
36+
```
37+
38+
However, it's considered better practice to not import individual functions, but
39+
to import the module, and only use one level of qualification:
40+
41+
```{rust}
42+
# #![feature(old_io)]
43+
use std::old_io;
44+
45+
old_io::stdin();
46+
```
47+
48+
Let's update our example to use this style:
49+
50+
```{rust,ignore}
51+
use std::old_io;
52+
53+
fn main() {
54+
println!("Type something!");
55+
56+
let input = old_io::stdin().read_line().ok().expect("Failed to read line");
57+
58+
println!("{}", input);
59+
}
60+
```
61+
62+
Next up:
63+
64+
```{rust,ignore}
65+
.read_line()
66+
```
67+
68+
The `read_line()` method can be called on the result of `stdin()` to return
69+
a full line of input. Nice and easy.
70+
71+
```{rust,ignore}
72+
.ok().expect("Failed to read line");
73+
```
74+
75+
Do you remember this code?
76+
77+
```{rust}
78+
enum OptionalInt {
79+
Value(i32),
80+
Missing,
81+
}
82+
83+
fn main() {
84+
let x = OptionalInt::Value(5);
85+
let y = OptionalInt::Missing;
86+
87+
match x {
88+
OptionalInt::Value(n) => println!("x is {}", n),
89+
OptionalInt::Missing => println!("x is missing!"),
90+
}
91+
92+
match y {
93+
OptionalInt::Value(n) => println!("y is {}", n),
94+
OptionalInt::Missing => println!("y is missing!"),
95+
}
96+
}
97+
```
98+
99+
We had to match each time to see if we had a value or not. In this case,
100+
though, we _know_ that `x` has a `Value`, but `match` forces us to handle
101+
the `missing` case. This is what we want 99% of the time, but sometimes, we
102+
know better than the compiler.
103+
104+
Likewise, `read_line()` does not return a line of input. It _might_ return a
105+
line of input, though it might also fail to do so. This could happen if our program
106+
isn't running in a terminal, but as part of a cron job, or some other context
107+
where there's no standard input. Because of this, `read_line` returns a type
108+
very similar to our `OptionalInt`: an `IoResult<T>`. We haven't talked about
109+
`IoResult<T>` yet because it is the *generic* form of our `OptionalInt`.
110+
Until then, you can think of it as being the same thing, just for any type –
111+
not just `i32`s.
112+
113+
Rust provides a method on these `IoResult<T>`s called `ok()`, which does the
114+
same thing as our `match` statement but assumes that we have a valid value.
115+
We then call `expect()` on the result, which will terminate our program if we
116+
don't have a valid value. In this case, if we can't get input, our program
117+
doesn't work, so we're okay with that. In most cases, we would want to handle
118+
the error case explicitly. `expect()` allows us to give an error message if
119+
this crash happens.
120+
121+
We will cover the exact details of how all of this works later in the Guide in
122+
[Error Handling]. For now, this gives you enough of a basic understanding to
123+
work with.
124+
125+
Back to the code we were working on! Here's a refresher:
126+
127+
```{rust,ignore}
128+
use std::old_io;
129+
130+
fn main() {
131+
println!("Type something!");
132+
133+
let input = old_io::stdin().read_line().ok().expect("Failed to read line");
134+
135+
println!("{}", input);
136+
}
137+
```
138+
139+
With long lines like this, Rust gives you some flexibility with the whitespace.
140+
We _could_ write the example like this:
141+
142+
```{rust,ignore}
143+
use std::old_io;
144+
145+
fn main() {
146+
println!("Type something!");
147+
148+
// here, we'll show the types at each step
149+
150+
let input = old_io::stdin() // std::old_io::stdio::StdinReader
151+
.read_line() // IoResult<String>
152+
.ok() // Option<String>
153+
.expect("Failed to read line"); // String
154+
155+
println!("{}", input);
156+
}
157+
```
158+
159+
Sometimes, this makes things more readable – sometimes, less. Use your judgement
160+
here.
161+
162+
That's all you need to get basic input from the standard input! It's not too
163+
complicated, but there are a number of small parts.
164+
165+
166+
[Error Handling]: ./error-handling.html

branches/snap-stage3/src/etc/rustup.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ case $CFG_OSTYPE in
335335
MINGW32*)
336336
CFG_OSTYPE=pc-mingw32
337337
;;
338-
# Thad's Cygwin identifers below
338+
# Thad's Cygwin identifiers below
339339

340340
# Vista 32 bit
341341
CYGWIN_NT-6.0)
@@ -437,7 +437,7 @@ CFG_TMP_DIR=$(mktemp -d 2>/dev/null \
437437
|| create_tmp_dir)
438438

439439
# If we're saving nightlies and we didn't specify which one, grab the latest
440-
# verison from the perspective of the server. Buildbot has typically finished
440+
# version from the perspective of the server. Buildbot has typically finished
441441
# building and uploading by ~8UTC, but we want to include a little buffer.
442442
#
443443
# FIXME It would be better to use the known most recent nightly that has been

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
//!
5151
//! ## Iteration
5252
//!
53-
//! The slices implement `IntoIterator`. The iterator yields references to the
54-
//! slice elements.
53+
//! The slices implement `IntoIterator`. The iterators of yield references
54+
//! to the slice elements.
5555
//!
5656
//! ```
5757
//! let numbers = &[0, 1, 2];

branches/snap-stage3/src/libcore/hash/mod.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,6 @@ mod sip;
7373
///
7474
/// The `H` type parameter is an abstract hash state that is used by the `Hash`
7575
/// to compute the hash.
76-
///
77-
/// If you are also implementing `Eq`, there is an additional property that
78-
/// is important:
79-
///
80-
/// ```text
81-
/// k1 == k2 -> hash(k1) == hash(k2)
82-
/// ```
83-
///
84-
/// In other words, if two keys are equal, their hashes should also be equal.
85-
/// `HashMap` and `HashSet` both rely on this behavior.
8676
#[stable(feature = "rust1", since = "1.0.0")]
8777
pub trait Hash {
8878
/// Feeds this value into the state given, updating the hasher as necessary.

branches/snap-stage3/src/libcore/iter.rs

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,27 +1017,6 @@ impl<'a, I: Iterator + ?Sized> Iterator for &'a mut I {
10171017
built from an iterator over elements of type `{A}`"]
10181018
pub trait FromIterator<A> {
10191019
/// Build a container with elements from something iterable.
1020-
///
1021-
/// # Examples
1022-
///
1023-
/// ```
1024-
/// use std::collections::HashSet;
1025-
/// use std::iter::FromIterator;
1026-
///
1027-
/// let colors_vec = vec!["red", "red", "yellow", "blue"];
1028-
/// let colors_set = HashSet::<&str>::from_iter(colors_vec);
1029-
/// assert_eq!(colors_set.len(), 3);
1030-
/// ```
1031-
///
1032-
/// `FromIterator` is more commonly used implicitly via the `Iterator::collect` method:
1033-
///
1034-
/// ```
1035-
/// use std::collections::HashSet;
1036-
///
1037-
/// let colors_vec = vec!["red", "red", "yellow", "blue"];
1038-
/// let colors_set = colors_vec.into_iter().collect::<HashSet<&str>>();
1039-
/// assert_eq!(colors_set.len(), 3);
1040-
/// ```
10411020
#[stable(feature = "rust1", since = "1.0.0")]
10421021
fn from_iter<T: IntoIterator<Item=A>>(iterator: T) -> Self;
10431022
}

branches/snap-stage3/src/libcore/marker.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ pub struct InvariantType<T>;
476476
/// particular, thanks to the `Reflect` bound, callers know that a
477477
/// function declared like `fn bar<T>(...)` will always act in
478478
/// precisely the same way no matter what type `T` is supplied,
479-
/// beacuse there are no bounds declared on `T`. (The ability for a
479+
/// because there are no bounds declared on `T`. (The ability for a
480480
/// caller to reason about what a function may do based solely on what
481481
/// generic bounds are declared is often called the ["parametricity
482482
/// property"][1].)

branches/snap-stage3/src/liblibc/lib.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,7 @@ pub mod types {
307307
#[derive(Copy)] pub struct sockaddr_storage {
308308
pub ss_family: sa_family_t,
309309
pub __ss_align: isize,
310-
#[cfg(target_pointer_width = "32")]
311-
pub __ss_pad2: [u8; 128 - 2 * 4],
312-
#[cfg(target_pointer_width = "64")]
313-
pub __ss_pad2: [u8; 128 - 2 * 8],
310+
pub __ss_pad2: [u8; 128 - 2 * (::core::isize::BYTES as usize)],
314311
}
315312
#[repr(C)]
316313
#[derive(Copy)] pub struct sockaddr_in {

branches/snap-stage3/src/librbml/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
//! - `Sub32` (`0d`): 4-byte unsigned integer for supplementary information.
8484
//! Those two tags normally occur as the first subdocument of certain tags,
8585
//! namely `Enum`, `Vec` and `Map`, to provide a variant or size information.
86-
//! They can be used interchangably.
86+
//! They can be used interchangeably.
8787
//!
8888
//! Predefined tags with an explicit length:
8989
//!

branches/snap-stage3/src/librustc_back/target/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ pub struct TargetOptions {
157157
/// particular running dsymutil and some other stuff like `-dead_strip`. Defaults to false.
158158
pub is_like_osx: bool,
159159
/// Whether the target toolchain is like Windows'. Only useful for compiling against Windows,
160-
/// only realy used for figuring out how to find libraries, since Windows uses its own
160+
/// only really used for figuring out how to find libraries, since Windows uses its own
161161
/// library naming convention. Defaults to false.
162162
pub is_like_windows: bool,
163163
/// Whether the target toolchain is like Android's. Only useful for compiling against Android.

branches/snap-stage3/src/librustdoc/html/render.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ pub struct Implementor {
125125
pub trait_: clean::Type,
126126
pub for_: clean::Type,
127127
pub stability: Option<clean::Stability>,
128-
pub polarity: Option<clean::ImplPolarity>,
129128
}
130129

131130
/// Metadata about implementations for a type.
@@ -636,11 +635,9 @@ fn write_shared(cx: &Context,
636635
// going on). If they're in different crates then the crate defining
637636
// the trait will be interested in our implementation.
638637
if imp.def_id.krate == did.krate { continue }
639-
try!(write!(&mut f, r#""{}impl{} {}{} for {}","#,
638+
try!(write!(&mut f, r#""{}impl{} {} for {}","#,
640639
ConciseStability(&imp.stability),
641-
imp.generics,
642-
if imp.polarity == Some(clean::ImplPolarity::Negative) { "!" } else { "" },
643-
imp.trait_, imp.for_));
640+
imp.generics, imp.trait_, imp.for_));
644641
}
645642
try!(writeln!(&mut f, r"];"));
646643
try!(writeln!(&mut f, "{}", r"
@@ -885,7 +882,6 @@ impl DocFolder for Cache {
885882
trait_: i.trait_.as_ref().unwrap().clone(),
886883
for_: i.for_.clone(),
887884
stability: item.stability.clone(),
888-
polarity: i.polarity.clone(),
889885
});
890886
}
891887
Some(..) | None => {}

branches/snap-stage3/src/librustdoc/stability_summary.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ impl Ord for ModuleSummary {
8686
}
8787
}
8888

89-
// is the item considered publically visible?
89+
// is the item considered publicly visible?
9090
fn visible(item: &Item) -> bool {
9191
match item.inner {
9292
ImplItem(_) => true,

0 commit comments

Comments
 (0)