Thanks, John. Given that, inout
local vars would be really useful. I look forward to the proposal.
To your consum(e|er|ing|ed) naming question: looking at your table, my intuition is that terminology should be aligned along an lvalue/rvalue-flavored distinction betwen “expressions that provide values” (your first column) and “declarations of things that receive values” (the other three columns).
That raises the question of what lhs/rhs combinations like these are allowed and meaningful:
// Are these both allowed? Equivalent?
var x = borrow y
borrow x = y
// Which combinations like these are allowed?
borrow x = consume y
inout x = borrow y
// etc
// Why shouldn’t this be allowed?
consuming x = y
Terminology (including conjugation) should help elucidate all that.