No se puede usar una subclase concreta para implementar una propiedad en el protocolo en Swift

Estoy haciendo algo similar al Patrón de puente en JAVA,DriverType es un protocolo requiere una propiedad llamadavehicle ser unaDrivable objeto,Drivable también es un protocolo y es adoptado por la clase 'Car'

protocol Drivable {
    var speed: Double { get }
}

protocol DriverType {
    var vehicle: Drivable { get }
}

class Car: Drivable {
    var speed = 80.0;
    var brand = "BMW"
}

class Driver: DriverType {

    var vehicle: Car = Car() //Error: Type 'Driver' does not conform to protocol 'DriverType'

    // This one works, but I have to downcast the property to 'Car' everytime I use it.
    var vehicle: Drivable = Car() //Type 'Driver' does not conform to protocol 'DriverType'
}

Cuando implemente elDriver clase, es muy natural declararvehicle propiedad comoCar. Pero luego me encontré con el problema que el compilador piensaDriver no se ajusta aDriverType aunqueCar De acuerdo aDrivable perfectamente.

ACTUALIZAR:

La respuesta de @Antonio es sólida, pero esto es lo que resolví actualmente, no involucra genéricos con la clase.

protocol Drivable {
    var speed: Double { get }
    init()
}

protocol DriverType {
    func vehicle() -> Drivable
}

class Car: Drivable {
    var speed = 80.0;
    var brand = "BMW"
    required init() {}
}

class Driver: DriverType {
    private var m_vehicle: Car = Car()
    func vehicle() -> Drivable {
        return m_vehicle
    }

    // Inside Driver class I use the m_vehicle property directly
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta