Hmm, there's actually a real VecB function in the same namespace as struct VecB, which couldn't work with Self. But maybe that wouldn't stop it from have an aliased Self "function" within the type methods.

This is totally doable, it just introduces some novel concept into the language - "value alias" (like type aliases type A = u8;, but for values).It would be a bit a bit strange to support such a thing, but make it available only for Self.

(There are also a couple of questions to solve - what exactly generic parameter substitutions are used for this Self, how hard we work to retrieve this Self (e.g. is it available if the impl is for a type alias (maybe even associated) of a struct with a constructor, but not for the struct itself).)