Improved the search by including a levenshtein distance calculation which enables the docs search function to be more forgiving for spelling mistakes
Updated the licensing information for the Levenshtein distance function
Improved the tags impl regex
Make most of the failure functions take &(&'static str, uint)

Passing one pointer takes less code than one pointer and an integer.
Put the struct passed to unwinding functions into a static

Produces very clean asm, but makes bigger binaries.
Sort trait bounds.

Closes #6334
librustc: Disallow mutation and assignment in pattern guards, and modify
the CFG for match statements.

There were two bugs in issue #14684. One was simply that the borrow
check didn't know about the correct CFG for match statements: the
pattern must be a predecessor of the guard. This disallows the bad
behavior if there are bindings in the pattern. But it isn't enough to
prevent the memory safety problem, because of wildcards; thus, this
patch introduces a more restrictive rule, which disallows assignments
and mutable borrows inside guards outright.

I discussed this with Niko and we decided this was the best plan of
action.

This breaks code that performs mutable borrows in pattern guards. Most
commonly, the code looks like this:

    impl Foo {
        fn f(&mut self, ...) {}
        fn g(&mut self, ...) {
            match bar {
                Baz if self.f(...) => { ... }
                _ => { ... }
            }
        }
    }

Change this code to not use a guard. For example:

    impl Foo {
        fn f(&mut self, ...) {}
        fn g(&mut self, ...) {
            match bar {
                Baz => {
                    if self.f(...) {
                        ...
                    } else {
                        ...
                    }
                }
                _ => { ... }
            }
        }
    }

Sometimes this can result in code duplication, but often it illustrates
a hidden memory safety problem.

Closes #14684.

[breaking-change]
core: Remove unneeded cfgs
std: Use correct conventions for statics in macros
Revert "Use fewer instructions for `fail!`"

This reverts commit c61f9763e2e03afbe62445877ceb3ed15e22e123.

Conflicts:
	src/librustrt/unwind.rs
	src/libstd/macros.rs
rustdoc: Keep hidden struct fields out of search

Previously, private and `#[doc(hidden)]` struct fields appeared in the
search index despite being hidden from the struct's documentation.

Fix #15490
Implement Hash for RingBuf
Implement PartialOrd for RingBuf
adding proof of context-sensitivy of raw string literals
auto merge of #16001 : Gankro/rust/rawstrings-proof, r=pnkfelix

Stumbled across this and thought it would be cool to prove. I've never used Ogden's Lemma before, but I'm pretty sure I used it right. The pumping lemma definitely doesn't seem sufficient for the job. In particular, when using the pumping lemma, you can always just pump one of the quotes, and it's fine. Ogden's Lemma lets you effectively force the pumper to use certain characters in the string.

@cmr
docs: Fix typo in container guide.
auto merge of #16016 : tomjakubowski/rust/rustdoc-fix-15490, r=alexcrichton

Previously, private and `#[doc(hidden)]` struct fields appeared in the
search index despite being hidden from the struct's documentation.

Fix #15490
doc: Correctly onclose code blocks in HashSet
Remove an unneeded FIXME in coherence.rs

Also, let f; f = ...; is just wrong.
doc: TreeSet methods and main example.