Get "self" of protocol with associated type

Viewed 74

I have the following protocol:

protocol ViewCreator {

  associatedtype ResultView: View

  @ViewBuilder func createView() -> ResultView

}

and I want to get its type, for example to get its name. So I wrote the following code:

let typeName = String(describing: ViewCreator.self)

but got the following error:

Protocol 'ViewCreator' can only be used as a generic constraint because it has Self or associated type requirements.

In this case how can I get "self" of the protocol with the associated type?

P.S. I don't have an implementation of this protocol in scope.

1 Answers

It is no different than when not using an associated type.

(any ViewCreator).self
String(describing: (any ViewCreator).self) // "ViewCreator"

In the future, you may have the option to use primary associated types to provide restrictions. But for now, this will compile and execute, but be considered <<< invalid type >>>.

protocol ViewCreator<ResultView> {
(any ViewCreator<EmptyView>).self
Related