Comment by user142

9 hours ago

I was wondering about the case where a reference points to a different path depending on control flow. I guess you can just design your language to make this impossible but this is still possible to do with pointers in C/C++.

Theoretically, we can have a reference that points to two paths, a "path union" so to speak. If the user explicitly typed out the path union, it would be something like:

let my_ref &Entity in (live_list[], dead_list[]) = if ...

though it would be nicer in practice, because the compiler could infer that.

Haven't implemented it yet of course, but the data structures in the borrow checker are designed with this in mind.

  • Would it then be possible to mutably reference two entries in the same hashmap?

    • Yep, that comes for free from the model. Though, if you're asking if we can have two unique references (like `&mut`) to two different entries, not yet. Nick's original proposal had some thoughts on how we can do that, and Zeta (another language implementing group borrowing) has some neat dependent-type-ish mechanisms for that. I'm still considering what Valen will want to do there.

      Edit: it turns out, Ante has path unions! https://www.reddit.com/r/ProgrammingLanguages/comments/1x37b...