--- matching cases ---

| construct    | let _     | let else _ |
| ------------ | --------- | ---------- |
| vanilla      | drop,body | drop,body  |
| &            | body,drop | body,drop  |
| &mut         | body,drop | body,drop  |
| move         | drop,body | drop,body  |
| fn(this)     | drop,body | drop,body  |
| tuple        | n/a,n/a   | drop,body  |
| array        | n/a,n/a   | drop,body  |
| ref &        | body,drop | body,drop  |
| ref mut &mut | body,drop | body,drop  |

| construct    | let _v    | let else _v |
| ------------ | --------- | ----------- |
| vanilla      | drop,body | drop,body   |
| &            | body,drop | body,drop   |
| &mut         | body,drop | body,drop   |
| move         | drop,body | drop,body   |
| fn(this)     | drop,body | drop,body   |
| tuple        | n/a,n/a   | drop,body   |
| array        | n/a,n/a   | drop,body   |
| ref &        | body,drop | body,drop   |
| ref mut &mut | body,drop | body,drop   |

 --- mismatching cases ---

| construct    | let else _ mismatch | let else _v mismatch |
| ------------ | ------------------- | -------------------- |
| vanilla      | drop,else           | drop,else            |
| &            | drop,else           | drop,else            |
| &mut         | drop,else           | drop,else            |
| move         | drop,else           | drop,else            |
| fn(this)     | drop,else           | drop,else            |
| tuple        | drop,else           | drop,else            |
| array        | drop,else           | drop,else            |
| ref &        | drop,else           | drop,else            |
| ref mut &mut | drop,else           | drop,else            |

| construct    | let else 0 mismatch | let else 0 mismatch |
| ------------ | ------------------- | ------------------- |
| vanilla      | drop,else           | drop,else           |
| &            | drop,else           | drop,else           |
| &mut         | drop,else           | drop,else           |
| move         | drop,else           | drop,else           |
| fn(this)     | drop,else           | drop,else           |
| tuple        | drop,else           | drop,else           |
| array        | drop,else           | drop,else           |
| ref &        | drop,else           | drop,else           |
| ref mut &mut | drop,else           | drop,else           |