Skip to content

Commit 4e7aca3

Browse files
committed
---
yaml --- r: 224189 b: refs/heads/beta c: c80bff0 h: refs/heads/master i: 224187: faf5389 v: v3
1 parent 48b5e23 commit 4e7aca3

Some content is hidden

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

80 files changed

+427
-2442
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ refs/tags/0.9: 36870b185fc5f5486636d4515f0e22677493f225
2323
refs/tags/0.10: ac33f2b15782272ae348dbd7b14b8257b2148b5a
2424
refs/tags/0.11.0: e1247cb1d0d681be034adb4b558b5a0c0d5720f9
2525
refs/tags/0.12.0: f0c419429ef30723ceaf6b42f9b5a2aeb5d2e2d1
26-
refs/heads/beta: 3fa90902423717bbb2915317bc9a8bfe9994ec3b
26+
refs/heads/beta: c80bff0186ab938167a649edb325c9499e594247
2727
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
2828
refs/heads/tmp: 938f5d7af401e2d8238522fed4a612943b6e77fd
2929
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ libraries:
340340
Note that frameworks are only available on OSX targets.
341341
342342
The different `kind` values are meant to differentiate how the native library
343-
participates in linkage. From a linkage perspective, the Rust compiler creates
343+
participates in linkage. From a linkage perspective, the rust compiler creates
344344
two flavors of artifacts: partial (rlib/staticlib) and final (dylib/binary).
345345
Native dynamic library and framework dependencies are propagated to the final
346346
artifact boundary, while static library dependencies are not propagated at
@@ -350,9 +350,9 @@ artifact.
350350
A few examples of how this model can be used are:
351351
352352
* A native build dependency. Sometimes some C/C++ glue is needed when writing
353-
some Rust code, but distribution of the C/C++ code in a library format is just
353+
some rust code, but distribution of the C/C++ code in a library format is just
354354
a burden. In this case, the code will be archived into `libfoo.a` and then the
355-
Rust crate would declare a dependency via `#[link(name = "foo", kind =
355+
rust crate would declare a dependency via `#[link(name = "foo", kind =
356356
"static")]`.
357357
358358
Regardless of the flavor of output for the crate, the native static library
@@ -361,7 +361,7 @@ A few examples of how this model can be used are:
361361
362362
* A normal dynamic dependency. Common system libraries (like `readline`) are
363363
available on a large number of systems, and often a static copy of these
364-
libraries cannot be found. When this dependency is included in a Rust crate,
364+
libraries cannot be found. When this dependency is included in a rust crate,
365365
partial targets (like rlibs) will not link to the library, but when the rlib
366366
is included in a final target (like a binary), the native library will be
367367
linked in.

branches/beta/src/doc/trpl/installing-rust.md

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The first step to using Rust is to install it! There are a number of ways to
44
install Rust, but the easiest is to use the `rustup` script. If you're on Linux
5-
or a Mac, all you need to do is this:
5+
or a Mac, all you need to do is this:
66

77
> Note: you don't need to type in the `$`s, they just indicate the start of
88
> each command. You’ll see many tutorials and examples around the web that
@@ -25,12 +25,6 @@ $ sh rustup.sh
2525
[insecurity]: http://curlpipesh.tumblr.com
2626

2727
If you're on Windows, please download the appropriate [installer][install-page].
28-
**NOTE:** By default, the Windows installer will not add Rust to the %PATH%
29-
system variable. If this is the only version of Rust you are installing and you
30-
want to be able to run it from the command line, click on "Advanced" on the
31-
install dialog and on the "Product Features" page ensure "Add to PATH" is
32-
installed on the local hard drive.
33-
3428

3529
[install-page]: http://www.rust-lang.org/install.html
3630

@@ -93,11 +87,6 @@ rustc 1.0.0 (a59de37e9 2015-05-13)
9387

9488
If you did, Rust has been installed successfully! Congrats!
9589

96-
If you didn't and you're on Windows, check that Rust is in your %PATH% system
97-
variable. If it isn't, run the installer again, select "Change" on the "Change,
98-
repair, or remove installation" page and ensure "Add to PATH" is installed on
99-
the local hard drive.
100-
10190
This installer also installs a copy of the documentation locally, so you can
10291
read it offline. On UNIX systems, `/usr/local/share/doc/rust` is the location.
10392
On Windows, it's in a `share/doc` directory, inside wherever you installed Rust
@@ -112,5 +101,5 @@ resources include [the user’s forum][users], and
112101

113102
[irc]: irc://irc.mozilla.org/#rust
114103
[mibbit]: http://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust
115-
[users]: http://users.rust-lang.org/
104+
[users]: http://users.rust-lang.org/
116105
[stackoverflow]: http://stackoverflow.com/questions/tagged/rust

branches/beta/src/doc/trpl/release-channels.md

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -43,26 +43,3 @@ This will help alert the team in case there’s an accidental regression.
4343
Additionally, testing against nightly can catch regressions even sooner, and so
4444
if you don’t mind a third build, we’d appreciate testing against all channels.
4545

46-
As an example, many Rust programmers use [Travis](https://travis-ci.org/) to
47-
test their crates, which is free for open source projects. Travis [supports
48-
Rust directly][travis], and you can use a `.travis.yml` file like this to
49-
test on all channels:
50-
51-
```yaml
52-
language: rust
53-
rust:
54-
- nightly
55-
- beta
56-
- stable
57-
58-
matrix:
59-
allow_failures:
60-
- rust: nightly
61-
```
62-
63-
[travis]: http://docs.travis-ci.com/user/languages/rust/
64-
65-
With this configuration, Travis will test all three channels, but if something
66-
breaks on nightly, it won’t fail your build. A similar configuration is
67-
recommended for any CI system, check the documentation of the one you’re
68-
using for more details.

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,10 @@ that you normally can not do. Just three. Here they are:
100100

101101
That’s it. It’s important that `unsafe` does not, for example, ‘turn off the
102102
borrow checker’. Adding `unsafe` to some random Rust code doesn’t change its
103-
semantics, it won’t just start accepting anything. But it will let you write
104-
things that _do_ break some of the rules.
103+
semantics, it won’t just start accepting anything.
105104

106-
You will also encounter the `unsafe` keyword when writing bindings to foreign
107-
(non-Rust) interfaces. You're encouraged to write a safe, native Rust interface
108-
around the methods provided by the library.
109-
110-
Let’s go over the basic three abilities listed, in order.
105+
But it will let you write things that _do_ break some of the rules. Let’s go
106+
over these three abilities in order.
111107

112108
## Access or update a `static mut`
113109

branches/beta/src/doc/trpl/while-loops.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,24 @@ for x in 0..10 {
8888
}
8989
```
9090

91+
You may also encounter situations where you have nested loops and need to
92+
specify which one your `break` or `continue` statement is for. Like most
93+
other languages, by default a `break` or `continue` will apply to innermost
94+
loop. In a sitation where you would like to a `break` or `continue` for one
95+
of the outer loops, you can use labels to specify which loop the `break` or
96+
`continue` statement applies to. This will only print when both `x` and `y` are
97+
odd:
98+
99+
```rust
100+
'outer: for x in 0..10 {
101+
'inner: for y in 0..10 {
102+
if x % 2 == 0 { continue 'outer; } // continues the loop over x
103+
if y % 2 == 0 { continue 'inner; } // continues the loop over y
104+
println!("x: {}, y: {}", x, y);
105+
}
106+
}
107+
```
108+
91109
Both `continue` and `break` are valid in both `while` loops and [`for` loops][for].
92110

93111
[for]: for-loops.html

branches/beta/src/liballoc/boxed.rs

Lines changed: 6 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,13 @@
5555

5656
use core::prelude::*;
5757

58-
use heap;
59-
6058
use core::any::Any;
6159
use core::cmp::Ordering;
6260
use core::fmt;
6361
use core::hash::{self, Hash};
64-
use core::marker::{self, Unsize};
62+
use core::marker::Unsize;
6563
use core::mem;
6664
use core::ops::{CoerceUnsized, Deref, DerefMut};
67-
use core::ops::{Placer, Boxed, Place, InPlace, BoxPlace};
6865
use core::ptr::Unique;
6966
use core::raw::{TraitObject};
7067

@@ -75,7 +72,7 @@ use core::raw::{TraitObject};
7572
///
7673
/// ```
7774
/// # #![feature(box_heap)]
78-
/// #![feature(box_syntax, placement_in_syntax)]
75+
/// #![feature(box_syntax)]
7976
/// use std::boxed::HEAP;
8077
///
8178
/// fn main() {
@@ -86,110 +83,15 @@ use core::raw::{TraitObject};
8683
#[lang = "exchange_heap"]
8784
#[unstable(feature = "box_heap",
8885
reason = "may be renamed; uncertain about custom allocator design")]
89-
pub const HEAP: ExchangeHeapSingleton =
90-
ExchangeHeapSingleton { _force_singleton: () };
91-
92-
/// This the singleton type used solely for `boxed::HEAP`.
93-
#[derive(Copy, Clone)]
94-
pub struct ExchangeHeapSingleton { _force_singleton: () }
86+
pub const HEAP: () = ();
9587

9688
/// A pointer type for heap allocation.
9789
///
9890
/// See the [module-level documentation](../../std/boxed/index.html) for more.
9991
#[lang = "owned_box"]
10092
#[stable(feature = "rust1", since = "1.0.0")]
10193
#[fundamental]
102-
pub struct Box<T: ?Sized>(Unique<T>);
103-
104-
/// `IntermediateBox` represents uninitialized backing storage for `Box`.
105-
///
106-
/// FIXME (pnkfelix): Ideally we would just reuse `Box<T>` instead of
107-
/// introducing a separate `IntermediateBox<T>`; but then you hit
108-
/// issues when you e.g. attempt to destructure an instance of `Box`,
109-
/// since it is a lang item and so it gets special handling by the
110-
/// compiler. Easier just to make this parallel type for now.
111-
///
112-
/// FIXME (pnkfelix): Currently the `box` protocol only supports
113-
/// creating instances of sized types. This IntermediateBox is
114-
/// designed to be forward-compatible with a future protocol that
115-
/// supports creating instances of unsized types; that is why the type
116-
/// parameter has the `?Sized` generalization marker, and is also why
117-
/// this carries an explicit size. However, it probably does not need
118-
/// to carry the explicit alignment; that is just a work-around for
119-
/// the fact that the `align_of` intrinsic currently requires the
120-
/// input type to be Sized (which I do not think is strictly
121-
/// necessary).
122-
#[unstable(feature = "placement_in", reason = "placement box design is still being worked out.")]
123-
pub struct IntermediateBox<T: ?Sized>{
124-
ptr: *mut u8,
125-
size: usize,
126-
align: usize,
127-
marker: marker::PhantomData<*mut T>,
128-
}
129-
130-
impl<T> Place<T> for IntermediateBox<T> {
131-
fn pointer(&mut self) -> *mut T {
132-
unsafe { ::core::mem::transmute(self.ptr) }
133-
}
134-
}
135-
136-
unsafe fn finalize<T>(b: IntermediateBox<T>) -> Box<T> {
137-
let p = b.ptr as *mut T;
138-
mem::forget(b);
139-
mem::transmute(p)
140-
}
141-
142-
fn make_place<T>() -> IntermediateBox<T> {
143-
let size = mem::size_of::<T>();
144-
let align = mem::align_of::<T>();
145-
146-
let p = if size == 0 {
147-
heap::EMPTY as *mut u8
148-
} else {
149-
let p = unsafe {
150-
heap::allocate(size, align)
151-
};
152-
if p.is_null() {
153-
panic!("Box make_place allocation failure.");
154-
}
155-
p
156-
};
157-
158-
IntermediateBox { ptr: p, size: size, align: align, marker: marker::PhantomData }
159-
}
160-
161-
impl<T> BoxPlace<T> for IntermediateBox<T> {
162-
fn make_place() -> IntermediateBox<T> { make_place() }
163-
}
164-
165-
impl<T> InPlace<T> for IntermediateBox<T> {
166-
type Owner = Box<T>;
167-
unsafe fn finalize(self) -> Box<T> { finalize(self) }
168-
}
169-
170-
impl<T> Boxed for Box<T> {
171-
type Data = T;
172-
type Place = IntermediateBox<T>;
173-
unsafe fn finalize(b: IntermediateBox<T>) -> Box<T> { finalize(b) }
174-
}
175-
176-
impl<T> Placer<T> for ExchangeHeapSingleton {
177-
type Place = IntermediateBox<T>;
178-
179-
fn make_place(self) -> IntermediateBox<T> {
180-
make_place()
181-
}
182-
}
183-
184-
impl<T: ?Sized> Drop for IntermediateBox<T> {
185-
fn drop(&mut self) {
186-
if self.size > 0 {
187-
unsafe {
188-
heap::deallocate(self.ptr, self.size, self.align)
189-
}
190-
}
191-
}
192-
}
94+
pub struct Box<T>(Unique<T>);
19395

19496
impl<T> Box<T> {
19597
/// Allocates memory on the heap and then moves `x` into it.
@@ -297,7 +199,8 @@ impl<T: Clone> Clone for Box<T> {
297199
/// let y = x.clone();
298200
/// ```
299201
#[inline]
300-
fn clone(&self) -> Box<T> { box (HEAP) {(**self).clone()} }
202+
fn clone(&self) -> Box<T> { box {(**self).clone()} }
203+
301204
/// Copies `source`'s contents into `self` without creating a new allocation.
302205
///
303206
/// # Examples

branches/beta/src/liballoc/lib.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@
7070
test(no_crate_inject))]
7171
#![no_std]
7272

73-
// SNAP d4432b3
74-
#![allow(unused_features)] // until feature(placement_in_syntax) is in snap
7573
#![feature(allocator)]
7674
#![feature(box_syntax)]
7775
#![feature(coerce_unsized)]
@@ -84,8 +82,6 @@
8482
#![feature(no_std)]
8583
#![feature(nonzero)]
8684
#![feature(optin_builtin_traits)]
87-
#![feature(placement_in_syntax)]
88-
#![feature(placement_new_protocol)]
8985
#![feature(raw)]
9086
#![feature(staged_api)]
9187
#![feature(unboxed_closures)]

branches/beta/src/libcore/intrinsics.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -184,14 +184,6 @@ extern "rust-intrinsic" {
184184
/// elements.
185185
pub fn size_of<T>() -> usize;
186186

187-
#[cfg(not(stage0))]
188-
/// Moves a value to an uninitialized memory location.
189-
///
190-
/// Drop glue is not run on the destination.
191-
pub fn move_val_init<T>(dst: *mut T, src: T);
192-
193-
// SNAP d4432b3
194-
#[cfg(stage0)]
195187
/// Moves a value to an uninitialized memory location.
196188
///
197189
/// Drop glue is not run on the destination.

branches/beta/src/libcore/iter.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2555,7 +2555,7 @@ impl<I: RandomAccessIterator, F> RandomAccessIterator for Inspect<I, F>
25552555
#[unstable(feature = "iter_unfold")]
25562556
#[derive(Clone)]
25572557
#[deprecated(since = "1.2.0",
2558-
reason = "has not gained enough traction to retain its position \
2558+
reason = "has gained enough traction to retain its position \
25592559
in the standard library")]
25602560
#[allow(deprecated)]
25612561
pub struct Unfold<St, F> {
@@ -2567,7 +2567,7 @@ pub struct Unfold<St, F> {
25672567

25682568
#[unstable(feature = "iter_unfold")]
25692569
#[deprecated(since = "1.2.0",
2570-
reason = "has not gained enough traction to retain its position \
2570+
reason = "has gained enough traction to retain its position \
25712571
in the standard library")]
25722572
#[allow(deprecated)]
25732573
impl<A, St, F> Unfold<St, F> where F: FnMut(&mut St) -> Option<A> {
@@ -3018,7 +3018,7 @@ type IterateState<T, F> = (F, Option<T>, bool);
30183018
/// from a given seed value.
30193019
#[unstable(feature = "iter_iterate")]
30203020
#[deprecated(since = "1.2.0",
3021-
reason = "has not gained enough traction to retain its position \
3021+
reason = "has gained enough traction to retain its position \
30223022
in the standard library")]
30233023
#[allow(deprecated)]
30243024
pub type Iterate<T, F> = Unfold<IterateState<T, F>, fn(&mut IterateState<T, F>) -> Option<T>>;
@@ -3027,7 +3027,7 @@ pub type Iterate<T, F> = Unfold<IterateState<T, F>, fn(&mut IterateState<T, F>)
30273027
/// repeated applications of the given function `f`.
30283028
#[unstable(feature = "iter_iterate")]
30293029
#[deprecated(since = "1.2.0",
3030-
reason = "has not gained enough traction to retain its position \
3030+
reason = "has gained enough traction to retain its position \
30313031
in the standard library")]
30323032
#[allow(deprecated)]
30333033
pub fn iterate<T, F>(seed: T, f: F) -> Iterate<T, F> where

0 commit comments

Comments
 (0)