Skip to content

Commit

Permalink
Add RFC to feature gate some slice patterns
Browse files Browse the repository at this point in the history
  • Loading branch information
brson committed Jul 14, 2014
1 parent 293a882 commit 720e3ad
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions active/0000-feature-gate-slice-pats.md
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 720e3ad

Please sign in to comment.