There’s (currently) no such thing as non-public conformance, because as?
exists. If you “internally” conform a type to e.g. CustomDebugStringConvertible, a client can still successfully cast an instance of your type to that protocol.
Scoped conformances have been pitched before but they are a very involved feature.