///|
/// A copy of `base` in which every name `overrides` uses holds only the
/// values `overrides` gives it.
fn merge_headers(
base : @http.Headers,
overrides : Array[(String, String)],
) -> @http.Headers {
let merged = @http.Headers::new()
for pair in base.iter() {
merged.append(pair.0, pair.1)
}
for pair in overrides {
merged.remove(pair.0)
}
for pair in overrides {
merged.append(pair.0, pair.1)
}
merged
}
///|
/// A copy of `headers` that can be changed without changing them.
fn copy_headers(headers : @http.Headers) -> @http.Headers {
merge_headers(headers, [])
}