`borrow` and `take` parameter ownership modifiers

For copyable types, there's really nothing about borrow vs. take that affects whether you can escape the value. That requires an additional constraint on either the value or the type to take the ability to copy a borrow away. @escaping as we use it on closures is kind of a misnomer, by the time you've got something of @escaping () -> () type, it's already escaped, and you're generally just borrowing a reference to the escapee.

It might be good to discuss holistically in a new thread. It sounds like you have a lot of ideas and it's hard to get a big picture when they're dropped incrementally in various other threads.

2 Likes