I don't think the alternative to let-else is too bad.
soc
I went the "only let introduces bindings" route, and I'm pretty happy so far:
if (left.next(), right.next())
... is (Some(let l), Some(let r)) { /* use l and r */ }
... is (Some(let l), None ) { /* use l */ }
... is (None, Some(let r)) { /* use r */ }
... is (None, None ) { /* use nothing */ }
}
Some of the earlier ones remind me of C#'s records. Were they inspired from them?
No, that stuff is much much older.
Named parameters are problematic because of parameter names becoming significant to the API. See Python’s * and / in parameter lists (like def foo(a, *, b) for example).
I think the name problem is overblown, you can always have an annotation to facilitate name changes.
This. I'd rather have fewer, better working features.
This exactly what I described in 2021, so I'm pretty happy seeing other languages also going this route.
Sadly, they also don't have a solution for the follow-up question that naturally falls out if this approach -- how to "unbox" generic types such that they can be used directly and don't need some additional type to hold it, i.e.
union Option[T] of T, None // None defined elsewhere
instead of
union Option[T] of Some[T], None // Some & None defined elsewhere
Rust devs sometimes seem to be an incredibly insecure and angry crowd.
I mentioned elsewhere how I had very good outcomes from looking at Rust and asking "how can this be done, but simpler?" in my language, listing a few examples ... and they were absolutely livid about it.
I would be deeply uncomfortable to work in an environment where one couldn't ask the author of a change for insights or rationale, because the author let some machine write it and therefore lacks any deeper understanding.
The intent of what's being done is legal harassment.
I'm on Codeberg because it cannot get bought out and enshittified (like GutHub, or GitLab).
I'm at a point where I reconsider my contribution if the project uses GitHub.
Thanks for your reply, some replies below!
Not sure, maybe my wording isn't clear enough. What I intended to say is that arguments can be named, not that they have to. In any case, the order of arguments must match the order of parameters, named or not.
That removal could actually happen, so I didn't list it. (Rust started requiring
dynand disallowed naked trait returns with edition 2018. So dropping theimplin that position might not be completely impossible like the other uses ofimpl.)Yes, just methods.
You can have both – that's what's being made possible by them not being in a hierarchy.
It's a bit late for that, isn't it? ;-)
What value is provided by keeping it? Why a syntactic special-case for exactly that type and not any other random type?
Then fixing that might make sense. :-)