class Dry::Types::Map

def coerce(input)

Other tags:
    Api: - private
def coerce(input)
  assert_primitive(input) do
    output = {}
    failures = []
    input.each do |k, v|
      res_k = key_type.try(k)
      res_v = value_type.try(v)
      if res_k.failure?
        failures << res_k.error
      elsif output.key?(res_k.input)
        failures << CoercionError.new("duplicate coerced hash key #{res_k.input.inspect}")
      elsif res_v.failure?
        failures << res_v.error
      else
        output[res_k.input] = res_v.input
      end
    end
    if failures.empty?
      success(output)
    else
      failure(input, MultipleError.new(failures))
    end
  end
end