DIP1000: The return of 'Extend Return Scope Semantics'
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Thu May 27 19:03:53 UTC 2021
On Wednesday, 26 May 2021 at 12:36:42 UTC, Atila Neves wrote:
> On Tuesday, 25 May 2021 at 22:19:23 UTC, tsbockman wrote:
>> This sounds like a really annoying and arbitrary limitation.
>
> It's not arbritrary at all - the purpose is to avoid this:
>
> https://carols10cents.github.io/book/ch10-03-lifetime-syntax.html#lifetime-annotations-in-function-signatures
>
> Reasonable people of course can disagree on whether or not
> avoiding that is a good idea.
I understand that motivation, but at the same time, it's not
necessarily good to reduce flexibility for the programmer. I
think I would rather have to clearly annotate my target ref/out
parameters every time, than rely on a "magic" rule like "the
first parameter is the targeted one".
Of course, that doesn't mean that I want to have Rust-style
lifetime annotation if we can have something simpler and easier!
But it would certainly be very nice to have the full scope of
possibilities that Rust allows. It strikes me that what D should
aim for is notation that is clear and unambiguous in intent, but
which scales nicely with the complexity of what the programmer
wants to achieve (so e.g. if you want to ensure a struct instance
outlives a pointer/reference that it wraps, you might have to do
more annotation, but if you want to make sure that in input
parameter outlives a returned parameter, that's simple and easy).
More information about the Digitalmars-d
mailing list