Improved match ergonomics around references
nrc opened this issue · 4 comments
nrc commented
Point of contact
Overview
Make match
easier to use and less boilerplate-y by auto-dereferencing in the condition expression and inferring ref
s in the patterns.
E.g.,
fn foo(x: &AnEnum) {
match x {
AnEnum::VariantA(y) => { ... }
AnEnum::VariantB(y, z) => { ... }
}
}
rather than (currently):
fn foo(x: &AnEnum) {
match *x {
AnEnum::VariantA(ref y) => { ... }
AnEnum::VariantB(ref y, ref z) => { ... }
}
}
Status
Accepted as RFC 2005.
cc #17
solson commented
If we infer ref
in patterns, will we ever need to explicitly tell Rust not to add ref
, like we need to use move
on closures?
(Let me know if I should wait for the actual RFC to get posted and move this comment there.)
liigo commented
match type &AnEnum
against AnEnum
? I don't think it's kind of 'pattern matching'.