Small fixes for tutorial.

5.2 Simplify example to remove hidden #[deriving(Show)].
    Add example for constructing the enums.

8   Reference later sections describing rc, gc and send.
    Fix for #15293.

13  Simplify BananaMania example to remove hidden code.

17  Gave an example using the derived Rand trait.

Removed references to removed 'extra' crate.
str: Add better tests for string slice's Chars iterator

Test using for ch s.chars() { black_box(ch) } to have a test that should
force the iterator to run its full decoding computations.
core::str: Implement Chars iterator using slice::Items

Re-use the vector iterator to implement the chars iterator.

The iterator uses our guarantee that the string contains valid UTF-8,
but its only unsafe code is transmuting the decoded u32 into char.
Add more tests for str Chars iterator

Test iterating (decoding) every codepoint.
sync: Ensure try_send() wakes up receivers

This branch of try_send() just forgot to wake up any receiver waiting for data.

Closes #15761
Fill in documentation for HashSet.

Example how to use the set with a custom type. Fill in examples for the missing methods.
Remove examples from trait implementations. Unhide imports.
Include Strings guide with the others.

Three small changes:

1. Re-organize headers in the Strings guide so they show up correctly.
2. build the strings guide with the other docs
3. include the strings guide in the list of guides
librustc: Emit enum variant constructor at callsite instead of via a call to a function.
librustc: Emit tuple struct constructor at callsite instead of via a call to a function.
librustc: Only emit constructor functions as necessary.
librustc: Set enum discriminant only after field translation.
Ignore one test.
Clarify str Chars iterator implementation

Thanks to comments from @huonw, clarify decoding details and use
statics for important constants for UTF-8 decoding. Convert some magic
numbers scattered in the same file to use the statics too.
Write multibyte case for str Chars iterator in-line

Thanks to comments from @alexcrichton, write the next/next_back function
bodies without nested functions in a more top-to-bottom flow style.

Also improve comment style and motivate the unsafe blocks with comments.
Add support for patterns referencing non-trivial statics

This is accomplished by rewriting static expressions into equivalent patterns.
This way, patterns referencing static variables can both participate
in exhaustiveness analysis as well as be compiled down into the appropriate
branch of the decision trees that match expressions are codegened to.

Fixes #6533.
Fixes #13626.
Fixes #13731.
Fixes #14576.
Fixes #15393.
Improve documentation for rand::random

This is now linked to in the guide, so I want to make sure it's good. This
adds a bit more explanation, and brings usage in line with current good style.
auto merge of #15765 : luqmana/rust/iec, r=pcwalton

Fixes #15400.
Simplify str CharOffsets iterator

Only one uint is needed to keep track of the offset from the original
full string.
auto merge of #15638 : blake2-ppc/rust/ptr-arithmetic-chars, r=huonw

Reimplement the string slice's `Iterator<char>` by wrapping the already efficient
slice iterator.

The iterator uses our guarantee that the string contains valid UTF-8, but its only unsafe
code is transmuting the decoded `u32` into `char`.

Benchmarks suggest that the runtime of `Chars` benchmarks are reduced by up to 30%,
runtime of `Chars` reversed reduced by up to 60%.

```
BEFORE
test str::bench::char_indicesator                          ... bench:       124 ns/iter (+/- 1)
test str::bench::char_indicesator_rev                      ... bench:       188 ns/iter (+/- 9)
test str::bench::char_iterator                             ... bench:       122 ns/iter (+/- 2)
test str::bench::char_iterator_ascii                       ... bench:       302 ns/iter (+/- 41)
test str::bench::char_iterator_for                         ... bench:       123 ns/iter (+/- 4)
test str::bench::char_iterator_rev                         ... bench:       189 ns/iter (+/- 14)
test str::bench::char_iterator_rev_for                     ... bench:       177 ns/iter (+/- 4)

AFTER
test str::bench::char_indicesator                          ... bench:        85 ns/iter (+/- 3)
test str::bench::char_indicesator_rev                      ... bench:        82 ns/iter (+/- 2)
test str::bench::char_iterator                             ... bench:       100 ns/iter (+/- 3)
test str::bench::char_iterator_ascii                       ... bench:       317 ns/iter (+/- 3)
test str::bench::char_iterator_for                         ... bench:        86 ns/iter (+/- 2)
test str::bench::char_iterator_rev                         ... bench:        80 ns/iter (+/- 6)
test str::bench::char_iterator_rev_for                     ... bench:        68 ns/iter (+/- 0)
```

Note: Branch name is no longer indicative of the implementation.