--- 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 |