I think the only difference is we don't collect enum variants, which I don't think can appear in a let binding. We would get the fields in your struct example because we walk the pattern catching all variable bindings, not just top level ones.