Auto merge of #24869 - steveklabnik:rollup, r=steveklabnik

- Successful merges: #24797, #24804, #24848, #24854, #24855, #24860, #24863, #24866, #24867, #24868
- Failed merges:
This commit is contained in:
bors 2015-04-27 14:45:43 +00:00
commit 32f9f42762
10 changed files with 61 additions and 31 deletions

View File

@ -84,7 +84,7 @@ that does _not_ occur in the set of [keywords](#keywords).
## Comments ## Comments
Comments in Rust code follow the general C++ style of line (`//`) and Comments in Rust code follow the general C++ style of line (`//`) and
block-comment (`/* ... */`) forms. Nested block comments are supported. block (`/* ... */`) comment forms. Nested block comments are supported.
Line comments beginning with exactly _three_ slashes (`///`), and block Line comments beginning with exactly _three_ slashes (`///`), and block
comments beginning with exactly one repeated asterisk in the block-open comments beginning with exactly one repeated asterisk in the block-open
@ -192,13 +192,13 @@ which must be _escaped_ by a preceding `U+005C` character (`\`).
A _string literal_ is a sequence of any Unicode characters enclosed within two A _string literal_ is a sequence of any Unicode characters enclosed within two
`U+0022` (double-quote) characters, with the exception of `U+0022` itself, `U+0022` (double-quote) characters, with the exception of `U+0022` itself,
which must be _escaped_ by a preceding `U+005C` character (`\`), or a _raw which must be _escaped_ by a preceding `U+005C` character (`\`).
string literal_.
A multi-line string literal may be defined by terminating each line with a Line-break characters are allowed in string literals. Normally they represent
`U+005C` character (`\`) immediately before the newline. This causes the themselves (i.e. no translation), but as a special exception, when a `U+005C`
`U+005C` character, the newline, and all whitespace at the beginning of the character (`\`) occurs immediately before the newline, the `U+005C` character,
next line to be ignored. the newline, and all whitespace at the beginning of the next line are ignored.
Thus `a` and `b` are equal:
```rust ```rust
let a = "foobar"; let a = "foobar";
@ -366,11 +366,19 @@ A _floating-point literal_ has one of two forms:
optionally followed by another decimal literal, with an optional _exponent_. optionally followed by another decimal literal, with an optional _exponent_.
* A single _decimal literal_ followed by an _exponent_. * A single _decimal literal_ followed by an _exponent_.
By default, a floating-point literal has a generic type, and, like integer Like integer literals, a floating-point literal may be followed by a
literals, the type must be uniquely determined from the context. There are two valid suffix, so long as the pre-suffix part does not end with `U+002E` (`.`).
The suffix forcibly sets the type of the literal. There are two valid
_floating-point suffixes_, `f32` and `f64` (the 32-bit and 64-bit floating point _floating-point suffixes_, `f32` and `f64` (the 32-bit and 64-bit floating point
types), which explicitly determine the type of the literal. types), which explicitly determine the type of the literal.
The type of an _unsuffixed_ floating-point literal is determined by type
inference. If a floating-point type can be _uniquely_ determined from the
surrounding program context, the unsuffixed floating-point literal has that type.
If the program context underconstrains the type, it defaults to double-precision `f64`;
if the program context overconstrains the type, it is considered a static type
error.
Examples of floating-point literals of various forms: Examples of floating-point literals of various forms:
``` ```

View File

@ -32,6 +32,13 @@ $ mkdir src
$ mv main.rs src/main.rs $ mv main.rs src/main.rs
``` ```
Note that since we're creating an executable, we used `main.rs`. If we
want to make a library instead, we should use `lib.rs`.
Custom file locations for the entry point can be specified
with a [`[[lib]]` or `[[bin]]`][crates-custom] key in the TOML file described below.
[crates-custom]: http://doc.crates.io/manifest.html#configuring-a-target
Cargo expects your source files to live inside a `src` directory. That leaves Cargo expects your source files to live inside a `src` directory. That leaves
the top level for other things, like READMEs, license information, and anything the top level for other things, like READMEs, license information, and anything
not related to your code. Cargo helps us keep our projects nice and tidy. A not related to your code. Cargo helps us keep our projects nice and tidy. A

View File

@ -1,8 +1,9 @@
% Vectors % Vectors
A vector is a dynamic or growable array, implemented as the standard A vector is a dynamic or growable array, implemented as the standard
library type [`Vec<T>`][vec]. That `<T>` is a [generic][generic], meaning we library type [`Vec<T>`][vec]. The `T` means that we can have vectors
can have vectors of any type. Vectors always allocate their data on the heap. of any type (see the chapter on [generics][generic] for more).
Vectors always allocate their data on the heap.
You can create them with the `vec!` macro: You can create them with the `vec!` macro:
```rust ```rust

View File

@ -951,12 +951,13 @@ impl<'a> Deref for DerefString<'a> {
/// # #![feature(collections)] /// # #![feature(collections)]
/// use std::string::as_string; /// use std::string::as_string;
/// ///
/// fn string_consumer(s: String) { /// // Let's pretend we have a function that requires `&String`
/// assert_eq!(s, "foo".to_string()); /// fn string_consumer(s: &String) {
/// assert_eq!(s, "foo");
/// } /// }
/// ///
/// let string = as_string("foo").clone(); /// // Provide a `&String` from a `&str` without allocating
/// string_consumer(string); /// string_consumer(&as_string("foo"));
/// ``` /// ```
#[unstable(feature = "collections")] #[unstable(feature = "collections")]
pub fn as_string<'a>(x: &'a str) -> DerefString<'a> { pub fn as_string<'a>(x: &'a str) -> DerefString<'a> {

View File

@ -536,7 +536,7 @@ impl<T> Vec<T> {
/// ///
/// # Panics /// # Panics
/// ///
/// Panics if `i` is out of bounds. /// Panics if `index` is out of bounds.
/// ///
/// # Examples /// # Examples
/// ///
@ -1915,6 +1915,22 @@ impl<'a, T> Drop for DerefVec<'a, T> {
} }
/// Converts a slice to a wrapper type providing a `&Vec<T>` reference. /// Converts a slice to a wrapper type providing a `&Vec<T>` reference.
///
/// # Examples
///
/// ```
/// # #![feature(collections)]
/// use std::vec::as_vec;
///
/// // Let's pretend we have a function that requires `&Vec<i32>`
/// fn vec_consumer(s: &Vec<i32>) {
/// assert_eq!(s, &[1, 2, 3]);
/// }
///
/// // Provide a `&Vec<i32>` from a `&[i32]` without allocating
/// let values = [1, 2, 3];
/// vec_consumer(&as_vec(&values));
/// ```
#[unstable(feature = "collections")] #[unstable(feature = "collections")]
pub fn as_vec<'a, T>(x: &'a [T]) -> DerefVec<'a, T> { pub fn as_vec<'a, T>(x: &'a [T]) -> DerefVec<'a, T> {
unsafe { unsafe {

View File

@ -83,10 +83,8 @@ pub trait Into<T>: Sized {
/// `String` implements `From<&str>`: /// `String` implements `From<&str>`:
/// ///
/// ``` /// ```
/// let s = "hello";
/// let string = "hello".to_string(); /// let string = "hello".to_string();
/// /// let other_string = String::from("hello");
/// let other_string: String = From::from(s);
/// ///
/// assert_eq!(string, other_string); /// assert_eq!(string, other_string);
/// ``` /// ```

View File

@ -1460,7 +1460,7 @@ impl<'a> fmt::Display for Item<'a> {
try!(write!(fmt, "<span class='out-of-band'>")); try!(write!(fmt, "<span class='out-of-band'>"));
try!(write!(fmt, try!(write!(fmt,
r##"<span id='render-detail'> r##"<span id='render-detail'>
<a id="toggle-all-docs" href="#" title="collapse all docs">[-]</a> <a id="toggle-all-docs" href="#" title="collapse all docs">[&minus;]</a>
</span>"##)); </span>"##));
// Write `src` tag // Write `src` tag

View File

@ -392,7 +392,7 @@ a {
text-decoration: underline; text-decoration: underline;
} }
.content span.trait, .content a.trait, .block a.current.trait { color: #ed9603; } .content span.trait, .content a.trait, .block a.current.trait { color: #8866ff; }
.content span.mod, .content a.mod, block a.current.mod { color: #4d76ae; } .content span.mod, .content a.mod, block a.current.mod { color: #4d76ae; }
.content span.enum, .content a.enum, .block a.current.enum { color: #5e9766; } .content span.enum, .content a.enum, .block a.current.enum { color: #5e9766; }
.content span.struct, .content a.struct, .block a.current.struct { color: #e53700; } .content span.struct, .content a.struct, .block a.current.struct { color: #e53700; }

View File

@ -808,20 +808,20 @@
$("#toggle-all-docs").on("click", function() { $("#toggle-all-docs").on("click", function() {
var toggle = $("#toggle-all-docs"); var toggle = $("#toggle-all-docs");
if (toggle.html() == "[-]") { if (toggle.html() == "[&minus;]") {
toggle.html("[+]"); toggle.html("[&plus;]");
toggle.attr("title", "expand all docs"); toggle.attr("title", "expand all docs");
$(".docblock").hide(); $(".docblock").hide();
$(".toggle-label").show(); $(".toggle-label").show();
$(".toggle-wrapper").addClass("collapsed"); $(".toggle-wrapper").addClass("collapsed");
$(".collapse-toggle").children(".inner").html("+"); $(".collapse-toggle").children(".inner").html("&plus;");
} else { } else {
toggle.html("[-]"); toggle.html("[&minus;]");
toggle.attr("title", "collapse all docs"); toggle.attr("title", "collapse all docs");
$(".docblock").show(); $(".docblock").show();
$(".toggle-label").hide(); $(".toggle-label").hide();
$(".toggle-wrapper").removeClass("collapsed"); $(".toggle-wrapper").removeClass("collapsed");
$(".collapse-toggle").children(".inner").html("-"); $(".collapse-toggle").children(".inner").html("&minus;");
} }
}); });
@ -835,12 +835,12 @@
if (relatedDoc.is(":visible")) { if (relatedDoc.is(":visible")) {
relatedDoc.slideUp({duration:'fast', easing:'linear'}); relatedDoc.slideUp({duration:'fast', easing:'linear'});
toggle.parent(".toggle-wrapper").addClass("collapsed"); toggle.parent(".toggle-wrapper").addClass("collapsed");
toggle.children(".inner").html("+"); toggle.children(".inner").html("&plus;");
toggle.children(".toggle-label").fadeIn(); toggle.children(".toggle-label").fadeIn();
} else { } else {
relatedDoc.slideDown({duration:'fast', easing:'linear'}); relatedDoc.slideDown({duration:'fast', easing:'linear'});
toggle.parent(".toggle-wrapper").removeClass("collapsed"); toggle.parent(".toggle-wrapper").removeClass("collapsed");
toggle.children(".inner").html("-"); toggle.children(".inner").html("&minus;");
toggle.children(".toggle-label").hide(); toggle.children(".toggle-label").hide();
} }
} }
@ -848,7 +848,7 @@
$(function() { $(function() {
var toggle = $("<a/>", {'href': 'javascript:void(0)', 'class': 'collapse-toggle'}) var toggle = $("<a/>", {'href': 'javascript:void(0)', 'class': 'collapse-toggle'})
.html("[<span class='inner'>-</span>]"); .html("[<span class='inner'>&minus;</span>]");
$(".method").each(function() { $(".method").each(function() {
if ($(this).next().is(".docblock") || if ($(this).next().is(".docblock") ||

View File

@ -115,8 +115,7 @@
//! ## Configuring threads //! ## Configuring threads
//! //!
//! A new thread can be configured before it is spawned via the `Builder` type, //! A new thread can be configured before it is spawned via the `Builder` type,
//! which currently allows you to set the name, stack size, and writers for //! which currently allows you to set the name and stack size for the child thread:
//! `println!` and `panic!` for the child thread:
//! //!
//! ```rust //! ```rust
//! # #![allow(unused_must_use)] //! # #![allow(unused_must_use)]