convert 1 line match to 2 lines for readability
Don't use rust  keyword for fake code
src/etc/snapshot: support triples lacking a vendor
Remove BTreeSet from all examples.
Rewrite std::sync::TaskPool to be load balancing and panic-resistant

The previous implementation was very likely to cause panics during
unwinding through this process:

- child panics, drops its receiver
- taskpool comes back around and sends another job over to that child
- the child receiver has hung up, so the taskpool panics on send
- during unwinding, the taskpool attempts to send a quit message to
  the child, causing a panic during unwinding
- panic during unwinding causes a process abort

This meant that TaskPool upgraded any child panic to a full process
abort. This came up in Iron when it caused crashes in long-running
servers.

This implementation uses a single channel to communicate between
spawned tasks and the TaskPool, which significantly reduces the complexity
of the implementation and cuts down on allocation. The TaskPool uses
the channel as a single-producer-multiple-consumer queue.

Additionally, through the use of send_opt and recv_opt instead of
send and recv, this TaskPool is robust on the face of child panics,
both before, during, and after the TaskPool itself is dropped.

Due to the TaskPool no longer using an `init_fn_factory`, this is a

[breaking-change]

otherwise, the API has not changed.

If you used `init_fn_factory` in your code, and this change breaks for
you, you can instead use an `AtomicUint` counter and a channel to
move information into child tasks.
serialize: Add ToJson impl for str
Improve examples for syntax::ext::deriving::encodable

The examples in the documentation for syntax::ext::deriving::encodable
are outdated, and do not work. To fix this, the following changes are
applied:

- emit_field() -> emit_struct_field()
- read_field() -> read_struct_field()
- Use Result to report errors
- Add the mut keyword to Encoder/Decoder
- Prefer Encodable::encode() to emit_uint
impl Default for Cell and RefCell

It is necessary to have #[deriving(Default)] for struct containing
cells like Cell<u32>.
Hide interactive elements when printing rustdoc

Hide the search form and expand/collapse buttons, since they aren't useful when printed.
librustc: use type parameters less vigorously when giving the IR type names
libs: fix #[stable] inheritance fallout

A recent change turned off inheritance for the #[stable] by default, but
failed to catch all the cases where this was being used in std. This
patch fixes that problem.
rustdoc: tweak stability summary counting

This commit slightly tweaks the counting of impl blocks and structs for
the stability summary (so that the block itself isn't counted for
inherent impls, and the fields aren't counted for structs).
Add methods to go from a slice iterators to a slice.

A slice iterator is isomorphic to a slice, just with a slightly
different form: storing start and end pointers rather than start pointer
and length. This patch reflects this by making converting between them
as easy as `iter.as_slice()` (or even `iter[]` if the shorter lifetime
is ok). That is, `slice.iter().as_slice() == slice`.
roll-up merge of #18933: IanConnolly/doc-fake-rust
roll-up merge of #18935: jmesmon:cody/no-vendor-triplle
roll-up merge of #18941: reem/better-task-pool
roll-up merge of #18941: jbcrail/tree-set-docs
roll-up merge of #18948: barosl/doc-encodable-fix
roll-up merge of #18949: tomjakubowski/tojson-str
roll-up merge of #18964: coyotebush/rustdoc-print