`if let` acts on *any* refutable pattern, not just `Option`s. The RFC that proposed the syntax is a good place to look for the rationale of why it was added: https://github.com/rust-lang/rfcs/pull/160
Steven Fackler On Sun, Oct 12, 2014 at 10:41 PM, Michael Giagnocavo <m...@giagnocavo.net> wrote: > I came across the "if let" syntax, and it's been bothering me a bit. > > It seems like a strange thing to elevate to a grammar-level construct. > > The example given is: > if let Some(x) = foo() { > doSomethingWith(x) > } > > What's wrong with e.g.: > > foo().if_some!(|x| { doSomethingWith(x) })? > > Can macros not step in here and allow us to write code that looks like a > closure but doesn't actually create a closure or cost any overhead? > (In fact, is a macro even needed? Couldn't a function and it's function > parameters be marked for inlining - wouldn't that take care of it?) This > seems like a handy thing to have in general. I've written code in other > languages where I want the emitted code to be as if I wrote it as a > single function with branches, but want to express it with lambdas > and function calls. > > If neither inlining nor macros can handle this, would it not be better > to improve those features, instead of tacking on odd bits of grammar? > > I love more features and expressiveness but "if let" seems like > something that shouldn't be baked into the compiler (even if Swift does > it). > > I'm honestly asking this question, because the Rust team seems to have > pretty good sense and reasoning, so I'm probably misunderstanding something > and would like to know what I'm missing. > > Sincerely, > Michael > _______________________________________________ > Rust-dev mailing list > Rust-dev@mozilla.org > https://mail.mozilla.org/listinfo/rust-dev >
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev