Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 9 pull requests #34500

Closed
wants to merge 20 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
b1605fe
Book: fixed syntax coloring
royalstream Jun 4, 2016
e9f6c0f
Book: diagram takes less space and it's more symmetric.
royalstream Jun 4, 2016
523dbfc
update reference for #29734
durka Jun 15, 2016
b54afbe
include list of characters
durka Jun 15, 2016
d0a0bef
Traits where syntax's extra usage example more clearly
wuranbo Jun 17, 2016
bbc33ac
Add example for `std::thread::sleep`.
frewsxcv Jun 22, 2016
26096c8
[doc] Fix links in Ownership section of the book
tatsuya6502 Jun 24, 2016
6418cb4
Add example with leading zeros
dns2utf8 Jun 24, 2016
988ca46
Fix E0269 error explanation
GuillaumeGomez Jun 25, 2016
ec7da3d
rustdoc: Fix inlined renamed reexports in import lists
ollie27 Jun 26, 2016
f1d600c
Expand `std::path::Component` documentation.
frewsxcv Jun 25, 2016
472a52d
Rollup merge of #34080 - royalstream:royalstream-book-june4, r=stevek…
steveklabnik Jun 27, 2016
087ac1d
Rollup merge of #34287 - durka:patch-26, r=steveklabnik
steveklabnik Jun 27, 2016
e10f0b1
Rollup merge of #34328 - wuranbo:patch-1, r=steveklabnik
steveklabnik Jun 27, 2016
330fa40
Rollup merge of #34406 - frewsxcv:sleep-ex, r=GuillaumeGomez
steveklabnik Jun 27, 2016
54d9408
Rollup merge of #34442 - tatsuya6502:doc-book-ownership, r=steveklabnik
steveklabnik Jun 27, 2016
1cc7383
Rollup merge of #34462 - dns2utf8:leading_zeros, r=GuillaumeGomez
steveklabnik Jun 27, 2016
09b337f
Rollup merge of #34471 - GuillaumeGomez:fix_expl, r=steveklabnik
steveklabnik Jun 27, 2016
ce76a3a
Rollup merge of #34475 - frewsxcv:path-component, r=GuillaumeGomez
steveklabnik Jun 27, 2016
2cbb1b6
Rollup merge of #34479 - ollie27:rustdoc_renamed_reexport_list, r=Gui…
steveklabnik Jun 27, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions src/doc/book/closures.md
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ to our closure when we pass it to `call_with_one`, so we use `&||`.
A quick note about closures that use explicit lifetimes. Sometimes you might have a closure
that takes a reference like so:

```
```rust
fn call_with_ref<F>(some_closure:F) -> i32
where F: Fn(&i32) -> i32 {

Expand All @@ -334,8 +334,8 @@ fn call_with_ref<F>(some_closure:F) -> i32
Normally you can specify the lifetime of the parameter to our closure. We
could annotate it on the function declaration:

```ignore
fn call_with_ref<'a, F>(some_closure:F) -> i32
```rust,ignore
fn call_with_ref<'a, F>(some_closure:F) -> i32
where F: Fn(&'a 32) -> i32 {
```

Expand All @@ -353,11 +353,11 @@ fn call_with_ref<F>(some_closure:F) -> i32
where F: for<'a> Fn(&'a 32) -> i32 {
```

This lets the Rust compiler find the minimum lifetime to invoke our closure and
This lets the Rust compiler find the minimum lifetime to invoke our closure and
satisfy the borrow checker's rules. Our function then compiles and excutes as we
expect.

```
```rust
fn call_with_ref<F>(some_closure:F) -> i32
where F: for<'a> Fn(&'a i32) -> i32 {

Expand Down
7 changes: 2 additions & 5 deletions src/doc/book/crates-and-modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,10 @@ As an example, let’s make a *phrases* crate, which will give us various phrase
in different languages. To keep things simple, we’ll stick to ‘greetings’ and
‘farewells’ as two kinds of phrases, and use English and Japanese (日本語) as
two languages for those phrases to be in. We’ll use this module layout:

```text
+-----------+
+---| greetings |
| +-----------+
+---------+ |
+---------+ | +-----------+
+---| english |---+
| +---------+ | +-----------+
| +---| farewells |
Expand All @@ -37,8 +35,7 @@ two languages for those phrases to be in. We’ll use this module layout:
| +---| greetings |
| +----------+ | +-----------+
+---| japanese |--+
+----------+ |
| +-----------+
+----------+ | +-----------+
+---| farewells |
+-----------+
```
Expand Down
4 changes: 3 additions & 1 deletion src/doc/book/ownership.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Vectors have a [generic type][generics] `Vec<T>`, so in this example `v` will ha

[arrays]: primitive-types.html#arrays
[vectors]: vectors.html
[heap]: the-stack-and-the-heap.html
[heap]: the-stack-and-the-heap.html#the-heap
[stack]: the-stack-and-the-heap.html#the-stack
[bindings]: variable-bindings.html
[generics]: generics.html
Expand Down Expand Up @@ -136,6 +136,8 @@ Rust allocates memory for an integer [i32] on the [stack][sh], copies the bit
pattern representing the value of 10 to the allocated memory and binds the
variable name x to this memory region for future reference.

[i32]: primitive-types.html#numeric-types

Now consider the following code fragment:

```rust
Expand Down
4 changes: 2 additions & 2 deletions src/doc/book/traits.md
Original file line number Diff line number Diff line change
Expand Up @@ -397,10 +397,10 @@ fn normal<T: ConvertTo<i64>>(x: &T) -> i64 {
}

// can be called with T == i64
fn inverse<T>() -> T
fn inverse<T>(x: i32) -> T
// this is using ConvertTo as if it were "ConvertTo<i64>"
where i32: ConvertTo<T> {
42.convert()
x.convert()
}
```

Expand Down
18 changes: 13 additions & 5 deletions src/doc/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,20 @@ Non-doc comments are interpreted as a form of whitespace.

## Whitespace

Whitespace is any non-empty string containing only the following characters:

Whitespace is any non-empty string containing only characters that have the
`Pattern_White_Space` Unicode property, namely:

- `U+0009` (horizontal tab, `'\t'`)
- `U+000A` (line feed, `'\n'`)
- `U+000B` (vertical tab)
- `U+000C` (form feed)
- `U+000D` (carriage return, `'\r'`)
- `U+0020` (space, `' '`)
- `U+0009` (tab, `'\t'`)
- `U+000A` (LF, `'\n'`)
- `U+000D` (CR, `'\r'`)
- `U+0085` (next line)
- `U+200E` (left-to-right mark)
- `U+200F` (right-to-left mark)
- `U+2028` (line separator)
- `U+2029` (paragraph separator)

Rust is a "free-form" language, meaning that all forms of whitespace serve only
to separate _tokens_ in the grammar, and have no semantic significance.
Expand Down
1 change: 1 addition & 0 deletions src/libcollections/fmt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
//! format!("{:?}", (3, 4)); // => "(3, 4)"
//! format!("{value}", value=4); // => "4"
//! format!("{} {}", 1, 2); // => "1 2"
//! format!("{:04}", 42); // => "0042" with leading zeros
//! ```
//!
//! From these, you can see that the first argument is a format string. It is
Expand Down
40 changes: 15 additions & 25 deletions src/librustc/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -673,45 +673,35 @@ extern "C" {
"##,

E0269: r##"
Functions must eventually return a value of their return type. For example, in
the following function:
A returned value was expected but not all control paths return one.

Erroneous code example:

```compile_fail,E0269
fn abracada_FAIL() -> String {
"this won't work".to_string();
// error: not all control paths return a value
}
```

If the condition is true, the value `x` is returned, but if the condition is
false, control exits the `if` block and reaches a place where nothing is being
returned. All possible control paths must eventually return a `u8`, which is not
happening here.

An easy fix for this in a complicated function is to specify a default return
value, if possible:
In the previous code, the function is supposed to return a `String`, however,
the code returns nothing (because of the ';'). Another erroneous code would be:

```ignore
fn foo(x: u8) -> u8 {
if x > 0 {
x // alternatively, `return x`
```compile_fail
fn abracada_FAIL(b: bool) -> u32 {
if b {
0
} else {
"a" // It fails because an `u32` was expected and something else is
// returned.
}
// lots of other if branches
0 // return 0 if all else fails
}
```

It is advisable to find out what the unhandled cases are and check for them,
returning an appropriate value or panicking if necessary. Check if you need
to remove a semicolon from the last expression, like in this case:

```ignore
fn foo(x: u8) -> u8 {
inner(2*x + 1);
}
```

The semicolon discards the return value of `inner`, instead of returning
it from `foo`.
to remove a semicolon from the last expression, like in the first erroneous
code example.
"##,

E0270: r##"
Expand Down
4 changes: 2 additions & 2 deletions src/librustdoc/visit_ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,8 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
}
hir::ViewPathList(p, paths) => {
let mine = paths.into_iter().filter(|path| {
!self.maybe_inline_local(path.node.id(), None, false, om,
please_inline)
!self.maybe_inline_local(path.node.id(), path.node.rename(),
false, om, please_inline)
}).collect::<hir::HirVec<hir::PathListItem>>();

if mine.is_empty() {
Expand Down
20 changes: 20 additions & 0 deletions src/libstd/path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,26 @@ impl<'a> Hash for PrefixComponent<'a> {
///
/// See the module documentation for an in-depth explanation of components and
/// their role in the API.
///
/// This `enum` is created from iterating over the [`path::Components`]
/// `struct`.
///
/// # Examples
///
/// ```rust
/// use std::path::{Component, Path};
///
/// let path = Path::new("/tmp/foo/bar.txt");
/// let components = path.components().collect::<Vec<_>>();
/// assert_eq!(&components, &[
/// Component::RootDir,
/// Component::Normal("tmp".as_ref()),
/// Component::Normal("foo".as_ref()),
/// Component::Normal("bar.txt".as_ref()),
/// ]);
/// ```
///
/// [`path::Components`]: struct.Components.html
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
#[stable(feature = "rust1", since = "1.0.0")]
pub enum Component<'a> {
Expand Down
13 changes: 13 additions & 0 deletions src/libstd/thread/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,19 @@ pub fn sleep_ms(ms: u32) {
/// signal being received or a spurious wakeup. Platforms which do not support
/// nanosecond precision for sleeping will have `dur` rounded up to the nearest
/// granularity of time they can sleep for.
///
/// # Examples
///
/// ```
/// use std::{thread, time};
///
/// let ten_millis = time::Duration::from_millis(10);
/// let now = time::Instant::now();
///
/// thread::sleep(ten_millis);
///
/// assert!(now.elapsed() >= ten_millis);
/// ```
#[stable(feature = "thread_sleep", since = "1.4.0")]
pub fn sleep(dur: Duration) {
imp::Thread::sleep(dur)
Expand Down
22 changes: 22 additions & 0 deletions src/test/rustdoc/issue-34473.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![crate_name = "foo"]

mod second {
pub struct SomeTypeWithLongName;
}

// @has foo/index.html
// @!has - SomeTypeWithLongName
// @has foo/struct.SomeType.html
// @!has - SomeTypeWithLongName
// @!has foo/struct.SomeTypeWithLongName.html
pub use second::{SomeTypeWithLongName as SomeType};