Fix lev_distance
Re-do the 30 minute intro

This was originally on my blog, so it's incredibly informal. Let's make
it better.
Fixes spacing
Adds trailing comma
Fixes output
Use similar syntax in all arms

See issue #17672. This was started in commit ee1cbb9c71bfab8500dfabedb35ba63dd1e5b7ff, but there were a few more lines to update.
Adds missing cd
Removes extra .
Fixes wording
Fix preallocation amount in String::from_utf16

`v.len()` counts code units, not UTF-16 bytes. The lower bound is one UTF-8 byte per code unit, not per two code units.
Adds comma

Oddly (to me), this code runs fine without the comma separating the `Some` and `None` arms of the `match` construct. It seems like Rust doesn't require you to separate arms with commas if all the expressions are enclosed in braces.
test: Fix a test that fails when cross compiling

Hopefully unblocks a snapshot
Fix type visitor glue for unboxed closures

This is a quick fix that prevents an ICE by mimicing the visitor
glue for boxed closures and bare functions.  Ideally, the `TyVisitor`
interface will be improved in the future to allow representing
more information about unboxed closures such as Fn/FnMut/FnOnce
status, capture mode, and captured free variable types and offsets.

Closes issue #17737
auto merge of #17752 : SimonSapin/rust/patch-6, r=thestinger

`v.len()` counts code units, not UTF-16 bytes. The lower bound is one UTF-8 byte per code unit, not per two code units.

I believe this is correct, but it’s late. Someone please double check.
Add regression test for issue #17737
auto merge of #17754 : O-I/rust/update-guide, r=steveklabnik

Hi,

These are a few small edits to the Guide that I made while reading online. Really well done and approachable.

I have a few questions below, but I don't know if this is the proper place to ask them, so feel free to ignore the below.

1. Trailing commas seem to be a convention in Rust and are used quite a bit throughout the Guide, but are never explicitly mentioned. Maybe adding a short mention about them when they first appear in the Structs section might be helpful to those who are unfamiliar with or don't use them in other languages.

2. In the Iterators section, there is a block of code like this:

```rust
let mut range = range(0i, 10i);

loop {
    match range.next() {
        Some(x) => {
            println!("{}", x);
        }  // no comma needed?
        None => { break }
    }
}
```

My inclination would be to put a comma where the comment is to separate the two arms to get this to compile, but it runs fine either way. Is there a convention on commas for scenarios like this where each arm is enclosed in `{}`?

All the best,
O-I
Handle provided trait methods when giving inference error suggestions

This fixes an ICE.  Closes issue #17758
Add regression test for issue #17758
Correctly generate drop glue for `Box<str>`

This fixes an ICE.  Closes issue #17734
auto merge of #17755 : alexcrichton/rust/unblock-snapshot, r=eddyb

Hopefully unblocks a snapshot