Consuming and deinit

I can't seem to find any official documentation around consume/consuming. Just the proposals and some guides from 3rd parties.

Is it guaranteed that using consume on a variable will call deinit on the non copyable value type bound to the variable?

Also is it guaranteed that deinit will called on a non copyable value type at the end of a consuming function?

What about copyable reference types?

I can't speak to the state of the official Swift documentation (non-copyables are only alluded to there briefly currently, sadly) but the proposal answers some of the questions you raise.