Certainly understand that, but FWIW (admittedly not a lot), I keep running into situations where I'd really like the behavior that @jrose mentions above in Rust where arguments of function type which are marked consuming would require exactly one invocation.
Most notably, having the compiler enforce SE-300's frequently reiterated requirements:
As long as the entirety of the process follows the requirement that the continuation be resumed exactly once, there are no other restrictions on where the continuation can be resumed.
by treating noncopyable function types in a consistent manner with noncopyable structs and enums, coupled with, say, a version of AsyncStream.yield
that was consuming, would save me from creating a lot of leaked tasks that I keep finding myself inadvertently writing.
It would also enable many of the things mentioned in Unavailable deinit
in ~Copyable
types(Unavailable `deinit` in `~Copyable` types - #2 by rvsrvs)
No idea if this is even doable, but it would be handy.