Something like Java packages / namespaces?

Currently there is one moderately ugly workaround (proposed by @Karl) — defining an underscored protocol on top level and then creating a namespaced typealias:

public protocol _HiddenFeatureProtocol {
    // requirements
}

public enum Namespace {
    typealias FeatureProtocol = _HiddenFeatureProtocol
}

public struct FeatureImpl: Namespace.FeatureProtocol {
    // implementation
}
2 Likes