Criando uma extensão para filtrar nils a partir de uma Matriz no Swift

Estou tentando escrever uma extensão para a matriz que permitirá que uma matriz de T opcionais seja transformada em uma matriz de T não opcionais.

por exemplo. isso pode ser escrito como uma função livre como esta:

func removeAllNils(array: [T?]) -> [T] {
    return array
        .filter({ $0 != nil })   // remove nils, still a [T?]
        .map({ $0! })            // convert each element from a T? to a T
}

Mas não consigo fazer isso funcionar como uma extensão. Estou tentando dizer ao compilador que a extensão se aplica apenas a matrizes de valores opcionais. Isto é o que eu tenho até agora:

extension Array {
    func filterNils<U, T: Optional<U>>() -> [U] {
        return filter({ $0 != nil }).map({ $0! })
    }
}

(não compila!)

questionAnswers(6)

yourAnswerToTheQuestion