Fixed iOS build after oibit
Add comments with type annotations.

This will hopefully help people with their first steps in Rust.

Fixes #16143.
Use rust-installer for installation

This is just a refactoring of the current installer so that Rust and Cargo
use the same codebase.

cc #16456
serialize: Avoid stray nul characters when auto-serializing char.

Fixes #19719.
Add coercions from *mut to *const and from &mut to *const.
Change `VecMap`'s iterators to use wrapper structs instead of typedefs.

Using a type alias for iterator implementations is fragile since this
exposes the implementation to users of the iterator, and any changes
could break existing code.

This commit changes the iterators of `VecMap` to use
proper new types, rather than type aliases.  However, since it is
fair-game to treat a type-alias as the aliased type, this is a:

[breaking-change].
Fix mispelling in char.rs error message

Error message has wrong spelling ("radix is to high").
InvariantLifetime is Copy-able

Both ContravariantLifetime and CovariantLifetime are marked as Copy,
so it makes sense for InvariantLifetime to be as well.
libcore: make iterator adaptors `Clone`able
Several fixes for DragonFly
Fix indentation in a code example in the ownership guide.
Fix typo: intuitive -> unintuitive
std: Fully stabilize Option<T>

This commit takes a second pass through the `std::option` module to fully
stabilize any lingering methods inside of it.

These items were made stable as-is

* Some
* None
* as_mut
* expect
* unwrap
* unwrap_or
* unwrap_or_else
* map
* map_or
* map_or_else
* and_then
* or_else
* unwrap_or_default
* Default implementation
* FromIterator implementation
* Copy implementation

These items were made stable with modifications

* iter - now returns a struct called Iter
* iter_mut - now returns a struct called IterMut
* into_iter - now returns a struct called IntoIter, Clone is never implemented

This is a breaking change due to the modifications to the names of the iterator
types returned. Code referencing the old names should updated to referencing the
newer names instead. This is also a breaking change due to the fact that
`IntoIter` no longer implements the `Clone` trait.

These items were explicitly not stabilized

* as_slice - waiting on indexing conventions
* as_mut_slice - waiting on conventions with as_slice as well
* cloned - the API was still just recently added
* ok_or - API remains experimental
* ok_or_else - API remains experimental

[breaking-change]
Add test for #19129

Closes #19129
Minor changes to Rust Language FAQ

- Change long inline code to code block
- Replace double-hyphens with en dash
- Miscellaneous rephrasings for clarity
std: Bind port early to make a test more reliable

This test would read with a timeout and then send a UDP message, expecting the
message to be received. The receiving port, however, was bound in the child
thread so it could be the case that the timeout and send happens before the
child thread runs. To remedy this we just bind the port before the child thread
runs, moving it into the child later on.

cc #19120
impl `Copy` for `NoSend`/`NoSync`
Fix Markdown syntax in docs for OsRng
Free stdin on exit
Standardize some usages of "which" in docstrings

In US english, "that" is used in restrictive clauses in place of
"which", and often affects the meaning of sentences.

In UK english and many dialects, no distinction is
made.

While Rust devs want to avoid unproductive pedanticism, it is worth at
least being uniform in documentation such as:

http://doc.rust-lang.org/std/iter/index.html

and also in cases where correct usage of US english clarifies the
sentence.