Por que precisamos de um genérico aqui? O protocolo não é suficiente?

Encontrei o exemplo a seguir na Web sobre o uso de genéricos junto com protocolos, mas não entendo por que precisamos de genéricos, quando tudo o que precisamos é usar um protocolo.

Nós definimos um protocolo:

protocol Healthy {
    mutating func setAlive(status: Bool)
    var health: Int { get }
}

E então uma função usando um genérico adotando esse protocolo

func check<T:Healthy>(inout object: T) {
    if (object.health <= 0) {
        object.setAlive(false)
    }
}

Alterei o código como abaixo e ainda está tudo bem.

func check( object: inout Healthy) {
    if (object.health <= 0) {
        object.setAlive(status: false)
    }
}

Ou não?

A única razão pela qual eu pensei em usar um genérico lá, se é um protocolo que tem um tipo associado e não pode ser usado como uma instância.

questionAnswers(2)

yourAnswerToTheQuestion