Agregar restricciones a parámetros genéricos en extensión

Tengo esta función:

func flatten<Key: Hashable, Value>(dict: Dictionary<Key, Optional<Value>>) -> Dictionary<Key, Value> {
    var result = [Key: Value]()
    for (key, value) in dict {
        guard let value = value else { continue }
        result[key] = value
    }
    return result
}

Como puede ver, transforma un[Key: Value?] diccionario en un[Key: Value] uno (sin el opcional).

Quería extender elDictionary clase con un nuevo método solo para clases cuyo valor es unOptional de cualquier tipo, pero no puedo agregar restricciones a los parámetros genéricos del diccionario.

Esto es lo que probé:

extension Dictionary where Value: Optional<Any> {
    func flatten() -> [Key: Any] {
        var result = [Key: Any]()
        for (key, value) in self {
            guard let value = value else { continue }
            result[key] = value
        }
        return result
    }
}

Pero falla con error:

Type 'Value' constrained to non-protocol type 'Optional<Any>'

Respuestas a la pregunta(2)

Su respuesta a la pregunta