[Pitch] `@noImplicitCopy` attribute for local variables and function parameters

The borrow/inout declarations that are being discussed also create bindings that are non-implicitly-copyable.

Following that pattern, we could add an entirely new binding keyword:

// `x` is a NON-implicitly copyable mutable value
// it is initialized from `c`
// `c` is out of scope after this
consuming x = c

// Compare: After SE-0366,
// `y` is an implicitly copyable mutable value
// It is initialized from `d`
// `d` is out of scope after this
var y = consume d

Andrew Trick summarized this idea in the borrow/inout bindings thread:

1 Like