Swift's GeneratorOf <T> louco init

GeneratorOf cria um genéricoGenerator (eSequence):

struct GeneratorOf<T> : Generator, Sequence {
    init(_ next: () -> T?)
    init<G : Generator where T == T>(_ self_: G)
    func next() -> T?
    func generate() -> GeneratorOf<T>
}

A linha que eu não entendo é a segunda init:

init<G : Generator where T == T>(_ self_: G)

Por que na Terra é necessário afirmar queT == T??

O que é isso(_ self_: G) Deveria significar??

Graças a Deus que uma das principais vantagens do Swift é uma sintaxe muito mais simples que o Objective C ... :-P

questionAnswers(1)

yourAnswerToTheQuestion