Add [mut_]shift_ref/[mut_]pop_ref functions, which return a pointer to the first/last item in the slice and modify the slice to exclude the returned item. Useful when writing iterators over mutable references.
auto merge of #10644 : cmr/rust/rustdoc_cfg, r=alexcrichton

Closes #10623
rm #[mutable_doc]
auto merge of #10646 : alexcrichton/rust/issue-10645, r=luqmana

This is a behavioral difference in libuv between different platforms in
different situations. It turns out that libuv on windows will immediately
allocate a buffer instead of waiting for data to be ready. What this implies is
that we must have our custom data set on the handle before we call
uv_read_start.

I wish I knew of a way to test this, but this relies to being on the windows
platform *and* reading from a true TTY handle which only happens when this is
actually attached to a terminal. I have manually verified this works.

Closes #10645
Remove arms_have_move_bindings
Take &Pat
auto merge of #10648 : sfackler/rust/base64-test, r=alexcrichton

We want a 1000 element array, not a 2 element array
auto merge of #10653 : thestinger/rust/meaningless, r=huonw
Take &Pat in visit_pat
Add an implementation of Encodable and Decodable for Rc. This will be needed to use Rc in place of @ in libsyntax.
Implement IterBytes for Rc<T>.
auto merge of #10657 : sanxiyn/rust/pat, r=cmr
auto merge of #10658 : LeoTestard/rust/serialize-rc, r=cmr

Implement various traits (IterBytes and extra's Encodable and Decodable) for Rc<T> when T alreay implements the trait.
auto merge of #10650 : andreasots/rust/ipv6-is-in-hex, r=alexcrichton

Without this the assert in <tt>rust_malloc_ip6_addr</tt> is triggered as it expects a correctly formatted IPv6 address.
Move LittleLock to using RAII

This moves the locking/waiting methods to returning an RAII struct instead of
relying on closures. Additionally, this changes the methods to all take
'&mut self' to discourage recursive locking. The new method to block is to call
`wait` on the returned RAII structure instead of calling it on the lock itself
(this enforces that the lock is held).

At the same time, this improves the Mutex interface a bit by allowing
destruction of non-initialized members and by allowing construction of an empty
mutex (nothing initialized inside).
Fix the usual check-fast scoping mistake.
rustc: Add lint for misplaced crate attributes
rustc: Add lint for obsolete attributes

This also moves `#[auto_{en,de}code]` checker from syntax to lint.
std: Remove unused attributes

This also enables two tests properly.
Add tests for attribute lint