From 720e3ad5faf5e4effd7a90d049e3277030cb87fd Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 14 Jul 2014 15:34:15 -0700 Subject: [PATCH] Add RFC to feature gate some slice patterns --- active/0000-feature-gate-slice-pats.md | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 active/0000-feature-gate-slice-pats.md diff --git a/active/0000-feature-gate-slice-pats.md b/active/0000-feature-gate-slice-pats.md new file mode 100644 index 00000000000..9bb58b5efdb --- /dev/null +++ b/active/0000-feature-gate-slice-pats.md @@ -0,0 +1,30 @@ +- Start Date: 2014-07-14 +- RFC PR #: (leave this empty) +- Rust Issue #: (leave this empty) + +# Summary + +Rust's support for pattern matching on sices has grown steadily and incrementally without a lot of oversight, +and we have concern that Rust is doing too much here, that the complexity is not worth it. This RFC proposes +to feature gate multiple-element slice matches in the head and middle positions (`[..xs, 0, 0]` and `[0, ..xs, 0]`. + +# Motivation + +Some general reasons and one specific: first, the implementation of Rust's match machinery is notoriously complex, and not well-loved. Remove features is seen as a valid way to reduce complexity. Second, slice matching in particular, is difficult to implement, while also being of only moderate utility (there are many types of collections - slices just happen to be built into the language). Finally, the exhaustiveness check is not correct for slice patterns - because of their complexity; it's not known that it +can be done correctly, nor whether it is worth the effort even if. + +# Detailed design + +The `advanced_slice_patterns` feature gate will be added. When the compiler encounters slice pattern matches in head or middle position it will emit a warning or error accourding to the current settings. + +# Drawbacks + +It removes two features that some people like. + +# Alternatives + +Fixing the exhaustiveness check would allow the feature to remain. + +# Unresolved questions + +N/A