Thank you both so much! Some quick follow up. This all makes a lot of sense to me. I'm getting there!
Are the effects of public possibly just a bug then?
Is the use of the term "Escapable" a bug in the diagnostic?
Also, some meta-feedback, in case anyone working on ~Copyable and/or ~Escapable is reading. I find it quite confusing that the following code disallows an (in my opinion) intuitive default of borrowing, but the initializers of ~Escapable allow an implicit default that is (again, of course, my opinion) very subtle.
struct NonCopyable: ~Copyable {}
struct User {
// error: Parameter of noncopyable type 'NonCopyable' must specify ownership
func take(_ nc: NonCopyable) {
}
}
But I'm not sure how relevant this is given that the lifetimes system could be changing. Is there anywhere I could get more information on this?