¿Es posible pasar un nombre de tipo enum como argumento en Swift?

Estoy tratando de averiguar si es posible pasar el tipo de enum de la misma manera que puede pasarClass objetos en Swift.

Mi caso de uso real es un poco más complicado que esto, pero para el debate, digamos que tengo dosInt enumeraciones:

enum Foo: Int, CustomStringConvertible {
    case firstFoo = 0
    case anotherFoo = 1
    var description: String {
        switch self {
        case .firstFoo:
            return "Hello Foo"
        case .anotherFoo:
            return "Goodbye Foo"
        }
    }
}

enum Bar: Int, CustomStringConvertible {
    case firstBar = 0
    case anotherBar = 1
    var description: String {
        switch self {
        case . firstBar:
            return "Hello Bar"
        case . anotherBar:
            return "Goodbye Bar"
        }
    }
}

Me gustaría poder escribir una función como esta:

func justAnExample(whichEnum: enum) {
    let val = whichEnum(rawValue: 0)
    print("description: \(String(val))")
}

Y luego úsalo así:

justAnExample(Foo)
// prints: "description: Hello Foo"
justAnExample(Bar)
// prints: "description: Hello Bar"

es posible? Si es así, ¿cuál es la firma dewhichEnum en la declaración de función?

Respuestas a la pregunta(2)

Su respuesta a la pregunta