Law of Exclusivity/memory safety question

As a keyword alternative to using? Yeah, I think that's viable.

We need some way to mark that this is semantically a coroutine that produces a value by yielding (and then later resuming) rather than simply returning. I suppose that if all these functions produced inout or borrowed values, we could have that be indicated purely by a marker in the type, but I think that would be rather subtle, and more importantly I don't think it's true that we want these functions to only be able to produce inout or borrowed values.