pub fn remove<K>(&mut self, key: K) -> Option<MetadataValue<Ascii>>
    where
        K: AsMetadataKey<Ascii>,
    {
        key.remove(self)
    }
Removes an ascii key from the map, returning the value associated with
the key. To remove a binary key, use `remove_bin`.

Returns `None` if the map does not contain the key. If there are
multiple values associated with the key, then the first one is returned.
See `remove_entry_mult` on `OccupiedEntry` for an API that yields all
values.

# Examples

```
# use tonic::metadata::*;
let mut map = MetadataMap::new();
map.insert("x-host", "hello.world".parse().unwrap());

let prev = map.remove("x-host").unwrap();
assert_eq!("hello.world", prev);

assert!(map.remove("x-host").is_none());

// Attempting to remove a key of the wrong type fails by not
// finding anything.
map.append_bin("host-bin", MetadataValue::from_bytes(b"world"));
assert!(map.remove("host-bin").is_none());
assert!(map.remove("host-bin".to_string()).is_none());
assert!(map.remove(&("host-bin".to_string())).is_none());

// Attempting to remove an invalid key string fails by not
// finding anything.
assert!(map.remove("host{}").is_none());
assert!(map.remove("host{}".to_string()).is_none());
assert!(map.remove(&("host{}".to_string())).is_none());
```
tonic/src/metadata/map.rs