Adding show impl for Rc
Add next_permutation and prev_permutation onto MutableOrdVector<T>.

Unlike ImmutableClonableVector::permutations() which returns an iterator,
cloning the entire array each iteration, these methods mutate the vector in-place.
For that reason, these methods are much faster; between 35-55 times faster,
depending on the benchmark. They also generate permutations in lexicographical order.
Implement ToJson for &[T], and add tests. Closes #14619
syntax: Make quasiquoter use absolute paths

As part of removing `pub use` glob, two extra import globs were
injected to make `quote_expr!` work. However the globs caused
`unused_import` warning in some places.

Quasiquoter needed the globs since it generated idents (e.g. `TyU`)
rather than absolute paths (`::syntax::ast::TyU`).
This patch removes the extra globs and makes quasiquoter use absolute
paths.

Fixes #14618
Fix typo "gihub" in libsyntax/crateid.

Update licensing header for 2014.
auto merge of #14625 : japaric/rust/slice-tojson, r=alexcrichton

Let me know if the amount of tests is enough or too much.
librustc: Try to resolve before coercions.
auto merge of #14626 : klutzy/rust/issue-14618, r=alexcrichton

As part of removing `pub use` glob, two extra import globs were
injected to make `quote_expr!` work. However the globs caused
`unused_import` warning in some places.

Quasiquoter needed the globs since it generated idents (e.g. `TyU`)
rather than absolute paths (`::syntax::ast::TyU`).
This patch removes the extra globs and makes quasiquoter use absolute
paths.

Fixes #14618

cc @sfackler
auto merge of #14627 : Indiv0/rust/fix-crateid-doc-typo, r=alexcrichton

Example URL in CrateId documentation is:

    `gihub.com/mozilla/rust`

Instead of:

    `github.com/mozilla/rust`

Also update libsyntax/crateid.rs licensing header for 2014.
librustc: remove check::FnKind enum since we only ever use one variant.
auto merge of #14632 : luqmana/rust/cu, r=huonw

The distinction doesn't make sense any more since we don't have do blocks anymore.
auto merge of #14628 : luqmana/rust/fcr, r=nikomatsakis

#14589.
Fixes #13843.

An empty regex is a valid regex that always matches. This behavior
is consistent with at least Go and Python.

A couple regression tests are included.
Some minor documentation touchups for libregex. Fixes #13800.
auto merge of #14634 : BurntSushi/rust/fix-13843, r=alexcrichton

An empty regex is a valid regex that always matches. This behavior
is consistent with at least Go and Python.

A couple regression tests are included.

I'd just assume that an empty regex is an invalid regex and that an error should be returned (I can't think of any reason to use an empty regex?), but it's probably better to be consistent with other regex libraries.
auto merge of #14635 : BurntSushi/rust/regex-doco-touchups, r=alexcrichton
auto merge of #14616 : forticulous/rust/rc-show, r=alexcrichton

Show impl for Rc
auto merge of #14623 : exscape/rust-fork/master, r=alexcrichton

Unlike ImmutableClonableVector::permutations() which returns an iterator,
cloning the entire array each iteration, these methods mutate the vector in-place.
For that reason, these methods are much faster; between 35-55 times faster,
depending on the benchmark. They also generate permutations in lexicographical order.
Improve error messages for io::fs