@Araq, there is a further minor omission in the spec 2 in that lent is not described as tp what it's for anywhere even though it is used in the motivating example: I assume that it is to be used in the type signature for a return value to indicate that the returned value is not the default sink and it will therefore have copy semantics when assigned to a binding rather than move semantics.
Question: Can it be combined with var and if so what does that indicate, an implied passing of the reference to the return value rather than the value itself and that therefore the first argument should not be destroyed if the lent value refers to it or is contained within it? I assume that if it can be used with var then the meaning is the same as using var return values: the assigned var would be an implicit pointer to the returned value rather than the returned value itself, which means that the value referenced by the var must outlive this reference as per the rules for var return type in the manual This extra lent qualification should be spelled out somewhere...
