Well, to me it depends on the level of semantics you care about. If you're asking about whether a variable is substitutable or can observe "reentrant mutation", then inout behaves just like copy-in, copy-out as long as exclusivity access is 100% fully enforced, which we now claim.
See
I'm working on writing up the current implementation status, and I'll try to remember to post a link here when its ready.
If you're talking about semantics at the level of what I would call the zero-cost abstraction guarantee, rather than correctness, then inout is actually prohibited from making a copy. Otherwise, isKnownUniquelyReferenced would never work. Keep in mind though, that It's actually illegal for your programs correctness to depend on the result of isKnownUniquelyReferenced.