> For those of us that were not around or do not remember, can you explain what was tried and rejected?
Heh, it was so long ago that I forgot that the `match` keyword used to be `alt`. Here's the relevant section from the 0.1 manual (Jan 2012): https://github.com/mozilla/rust/blob/16e4369fe3b5f00aa3cdc584a4e41c51c0d3ca8a/doc/tutorial.md#pattern-matching "If the arm with the wildcard pattern was left off in the above example, running it on a number greater than ten (or negative) would cause a run-time failure. When no arm matches, alt constructs do not silently fall through—they blow up instead." Back then, we had no facility to statically force exhaustiveness. This changed in 0.2, when exhaustive matches became the default, though you could still opt-in to non-exhaustive matches by using `alt check` rather than `alt`. https://github.com/mozilla/rust/blob/619c4fce891f31ec234a3ac162d40d3def95956e/RELEASES.txt#L581 Indeed, as you mention, at the time people were worried that this would lead to widespread proliferation of `_ => fail`, especially for uses such as matching on integers, which we lack the facilities to exhaustively check. However, in the years since, I can remember only a single person noticing this and lamenting it, and the peace of mind provided by statically-checked exhaustiveness is certainly pleasant. Furthermore, so few people opted-in to dynamic checking via `alt check` that we had dropped the functionality entirely by 0.4. On Mon, Dec 23, 2013 at 3:40 PM, Simon Sapin <[email protected]> wrote: > On 23/12/2013 20:55, Benjamin Striegel wrote: > >> I too think it would be a big mistake to allow let patterns to be >> refutable, when we've already tried and rejected allowing the same in >> match statements (ancient Rust history quiz: who else remembers `match >> check`?). >> > > For those of us that were not around or do not remember, can you explain > what was tried and rejected? > > I sometimes find myself writing a `_ => ()` arm for match and wish it > could be implied… and sometimes `_ => fail!()`. That the two are sometimes > used is probably a sign that the status quo (require it to be explicit) is > better. > > -- > Simon Sapin > > _______________________________________________ > Rust-dev mailing list > [email protected] > https://mail.mozilla.org/listinfo/rust-dev >
_______________________________________________ Rust-dev mailing list [email protected] https://mail.mozilla.org/listinfo/rust-dev
