Skip to content

Commit 646e8b1

Browse files
committed
---
yaml --- r: 195903 b: refs/heads/beta c: 4038593 h: refs/heads/master i: 195901: 39b8a4d 195899: 3420411 195895: b94927d 195887: e9d83a1 195871: 078b137 195839: 079cddd v: v3
1 parent b59f1fc commit 646e8b1

Some content is hidden

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

75 files changed

+863
-670
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ refs/tags/0.12.0: f0c419429ef30723ceaf6b42f9b5a2aeb5d2e2d1
2929
refs/heads/automation-fail: 1bf06495443584539b958873e04cc2f864ab10e4
3030
refs/heads/batch: b7fd822592a4fb577552d93010c4a4e14f314346
3131
refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
32-
refs/heads/beta: d4b5f65afcf20befc554dabf2f8735e5d173b382
32+
refs/heads/beta: 403859322821d94748ff5aa09850939fb4fc5b72
3333
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3434
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
3535
refs/heads/tmp: 9de34a84bb300bab1bf0227f577331620cd60511

branches/beta/configure

Lines changed: 3 additions & 2 deletions
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)
@@ -526,7 +526,8 @@ VAL_OPTIONS=""
526526
opt valgrind 0 "run tests with valgrind (memcheck by default)"
527527
opt helgrind 0 "run tests with helgrind instead of memcheck"
528528
opt valgrind-rpass 1 "run rpass-valgrind tests with valgrind"
529-
opt docs 1 "build documentation"
529+
opt docs 1 "build standard library documentation"
530+
opt compiler-docs 0 "build compiler documentation"
530531
opt optimize 1 "build optimized rust code"
531532
opt optimize-cxx 1 "build optimized C++ code"
532533
opt optimize-llvm 1 "build optimized LLVM"

branches/beta/mk/crates.mk

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,17 +122,29 @@ ONLY_RLIB_rustc_bitflags := 1
122122
# You should not need to edit below this line
123123
################################################################################
124124

125+
# On channels where the only usable crate is std, only build documentation for
126+
# std. This keeps distributions small and doesn't clutter up the API docs with
127+
# confusing internal details from the crates behind the facade.
128+
129+
ifeq ($(CFG_RELEASE_CHANNEL),stable)
130+
DOC_CRATES := std
131+
else
132+
ifeq ($(CFG_RELEASE_CHANNEL),beta)
133+
DOC_CRATES := std
134+
else
125135
DOC_CRATES := $(filter-out rustc, \
126-
$(filter-out rustc_trans, \
127-
$(filter-out rustc_typeck, \
128-
$(filter-out rustc_borrowck, \
129-
$(filter-out rustc_resolve, \
130-
$(filter-out rustc_driver, \
131-
$(filter-out rustc_privacy, \
132-
$(filter-out rustc_lint, \
133-
$(filter-out log, \
134-
$(filter-out getopts, \
135-
$(filter-out syntax, $(CRATES))))))))))))
136+
$(filter-out rustc_trans, \
137+
$(filter-out rustc_typeck, \
138+
$(filter-out rustc_borrowck, \
139+
$(filter-out rustc_resolve, \
140+
$(filter-out rustc_driver, \
141+
$(filter-out rustc_privacy, \
142+
$(filter-out rustc_lint, \
143+
$(filter-out log, \
144+
$(filter-out getopts, \
145+
$(filter-out syntax, $(CRATES))))))))))))
146+
endif
147+
endif
136148
COMPILER_DOC_CRATES := rustc rustc_trans rustc_borrowck rustc_resolve \
137149
rustc_typeck rustc_driver syntax rustc_privacy \
138150
rustc_lint

branches/beta/mk/docs.mk

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,10 @@ doc/$(1)/index.html: $$(LIB_DOC_DEP_$(1)) doc/$(1)/
259259
endef
260260

261261
$(foreach crate,$(DOC_CRATES),$(eval $(call DEF_LIB_DOC,$(crate),DOC_TARGETS)))
262-
$(foreach crate,$(COMPILER_DOC_CRATES),$(eval $(call DEF_LIB_DOC,$(crate),COMPILER_DOC_TARGETS)))
262+
263+
ifdef CFG_COMPILER_DOCS
264+
$(foreach crate,$(COMPILER_DOC_CRATES),$(eval $(call DEF_LIB_DOC,$(crate),COMPILER_DOC_TARGETS)))
265+
endif
263266

264267
ifdef CFG_DISABLE_DOCS
265268
$(info cfg: disabling doc build (CFG_DISABLE_DOCS))

branches/beta/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/beta/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/beta/src/doc/reference.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1188,12 +1188,15 @@ the guarantee that these issues are never caused by safe code.
11881188

11891189
* Data races
11901190
* Dereferencing a null/dangling raw pointer
1191-
* Mutating an immutable value/reference without `UnsafeCell`
11921191
* Reads of [undef](http://llvm.org/docs/LangRef.html#undefined-values)
11931192
(uninitialized) memory
11941193
* Breaking the [pointer aliasing
11951194
rules](http://llvm.org/docs/LangRef.html#pointer-aliasing-rules)
11961195
with raw pointers (a subset of the rules used by C)
1196+
* `&mut` and `&` follow LLVM’s scoped [noalias] model, except if the `&T`
1197+
contains an `UnsafeCell<U>`. Unsafe code must not violate these aliasing
1198+
guarantees.
1199+
* Mutating an immutable value/reference without `UnsafeCell<U>`
11971200
* Invoking undefined behavior via compiler intrinsics:
11981201
* Indexing outside of the bounds of an object with `std::ptr::offset`
11991202
(`offset` intrinsic), with
@@ -1210,6 +1213,8 @@ the guarantee that these issues are never caused by safe code.
12101213
code. Rust's failure system is not compatible with exception handling in
12111214
other languages. Unwinding must be caught and handled at FFI boundaries.
12121215

1216+
[noalias]: http://llvm.org/docs/LangRef.html#noalias
1217+
12131218
##### Behaviour not considered unsafe
12141219

12151220
This is a list of behaviour not considered *unsafe* in Rust terms, but that may

branches/beta/src/doc/trpl/arrays-vectors-and-slices.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,4 @@ You can also take a slice of a vector, `String`, or `&str`, because they are
9999
backed by arrays. Slices have type `&[T]`, which we'll talk about when we cover
100100
generics.
101101

102-
We have now learned all of the most basic Rust concepts. Next, we learn how to
103-
get input from the keyboard.
102+
We have now learned all of the most basic Rust concepts.

branches/beta/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/beta/src/doc/trpl/documentation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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;

branches/beta/src/doc/trpl/method-syntax.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ parameter, of which there are three variants: `self`, `&self`, and `&mut self`.
5050
You can think of this first parameter as being the `x` in `x.foo()`. The three
5151
variants correspond to the three kinds of thing `x` could be: `self` if it's
5252
just a value on the stack, `&self` if it's a reference, and `&mut self` if it's
53-
a mutable reference. We should default to using `&self`, as it's the most
54-
common, as Rustaceans prefer borrowing over taking ownership, and references
55-
over mutable references. Here's an example of all three variants:
53+
a mutable reference. We should default to using `&self`, as you should prefer
54+
borrowing over taking ownership, as well as taking immutable references
55+
over mutable ones. Here's an example of all three variants:
5656

5757
```rust
5858
struct Circle {

branches/beta/src/doc/trpl/ownership.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -472,10 +472,15 @@ thread-safe counterpart of `Rc<T>`.
472472

473473
## Lifetime Elision
474474

475-
Earlier, we mentioned *lifetime elision*, a feature of Rust which allows you to
476-
not write lifetime annotations in certain circumstances. All references have a
477-
lifetime, and so if you elide a lifetime (like `&T` instead of `&'a T`), Rust
478-
will do three things to determine what those lifetimes should be.
475+
Rust supports powerful local type inference in function bodies, but it’s
476+
forbidden in item signatures to allow reasoning about the types just based in
477+
the item signature alone. However, for ergonomic reasons a very restricted
478+
secondary inference algorithm called “lifetime elision” applies in function
479+
signatures. It infers only based on the signature components themselves and not
480+
based on the body of the function, only infers lifetime paramters, and does
481+
this with only three easily memorizable and unambiguous rules. This makes
482+
lifetime elision a shorthand for writing an item signature, while not hiding
483+
away the actual types involved as full local inference would if applied to it.
479484

480485
When talking about lifetime elision, we use the term *input lifetime* and
481486
*output lifetime*. An *input lifetime* is a lifetime associated with a parameter

branches/beta/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/beta/src/libcollectionstest/bench.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ macro_rules! map_insert_rand_bench {
2222
let mut rng = rand::weak_rng();
2323

2424
for _ in 0..n {
25-
let i = rng.gen() % n;
25+
let i = rng.gen::<usize>() % n;
2626
map.insert(i, i);
2727
}
2828

2929
// measure
3030
b.iter(|| {
31-
let k = rng.gen() % n;
31+
let k = rng.gen::<usize>() % n;
3232
map.insert(k, k);
3333
map.remove(&k);
3434
});
@@ -77,7 +77,7 @@ macro_rules! map_find_rand_bench {
7777

7878
// setup
7979
let mut rng = rand::weak_rng();
80-
let mut keys: Vec<_> = (0..n).map(|_| rng.gen() % n).collect();
80+
let mut keys: Vec<_> = (0..n).map(|_| rng.gen::<usize>() % n).collect();
8181

8282
for &k in &keys {
8383
map.insert(k, k);

branches/beta/src/libcore/iter.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,6 +1017,27 @@ 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+
/// ```
10201041
#[stable(feature = "rust1", since = "1.0.0")]
10211042
fn from_iter<T: IntoIterator<Item=A>>(iterator: T) -> Self;
10221043
}

branches/beta/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/beta/src/libcore/ops.rs

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,7 @@ pub trait Neg {
485485
macro_rules! neg_impl {
486486
($($t:ty)*) => ($(
487487
#[stable(feature = "rust1", since = "1.0.0")]
488+
#[allow(unsigned_negation)]
488489
impl Neg for $t {
489490
#[stable(feature = "rust1", since = "1.0.0")]
490491
type Output = $t;
@@ -498,28 +499,7 @@ macro_rules! neg_impl {
498499
)*)
499500
}
500501

501-
macro_rules! neg_uint_impl {
502-
($t:ty, $t_signed:ty) => {
503-
#[stable(feature = "rust1", since = "1.0.0")]
504-
impl Neg for $t {
505-
type Output = $t;
506-
507-
#[inline]
508-
fn neg(self) -> $t { -(self as $t_signed) as $t }
509-
}
510-
511-
forward_ref_unop! { impl Neg, neg for $t }
512-
}
513-
}
514-
515-
neg_impl! { isize i8 i16 i32 i64 f32 f64 }
516-
517-
neg_uint_impl! { usize, isize }
518-
neg_uint_impl! { u8, i8 }
519-
neg_uint_impl! { u16, i16 }
520-
neg_uint_impl! { u32, i32 }
521-
neg_uint_impl! { u64, i64 }
522-
502+
neg_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 }
523503

524504
/// The `Not` trait is used to specify the functionality of unary `!`.
525505
///

branches/beta/src/librand/distributions/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ fn ziggurat<R: Rng, P, Z>(
256256
return zero_case(rng, u);
257257
}
258258
// algebraically equivalent to f1 + DRanU()*(f0 - f1) < 1
259-
if f_tab[i + 1] + (f_tab[i] - f_tab[i + 1]) * rng.gen() < pdf(x) {
259+
if f_tab[i + 1] + (f_tab[i] - f_tab[i + 1]) * rng.gen::<f64>() < pdf(x) {
260260
return x;
261261
}
262262
}

branches/beta/src/librand/distributions/range.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ macro_rules! float_impl {
154154
}
155155
}
156156
fn sample_range<R: Rng>(r: &Range<$ty>, rng: &mut R) -> $ty {
157-
r.low + r.range * rng.gen()
157+
r.low + r.range * rng.gen::<$ty>()
158158
}
159159
}
160160
}

branches/beta/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
//!

0 commit comments

Comments
 (0)