K
- это параметр типа HashMap<K, V, S>
, и он вводится в начале соответствующего impl
блока :
impl<K, V, S> HashMap<K, V, S>
where K: Eq + Hash,
S: BuildHasher
Он применим для всего блока, включая get
, который добавляет дополнительное ограничение, K: Borrow<Q>
.
Этот способ указания типа get
k
может быть немного неудобным, ноэто позволяет нам, например, сделать следующее:
let mut map: HashMap<String, usize> = HashMap::new();
map.insert("herp".to_string(), 1);
map.insert("derp".to_string(), 2);
assert_eq!(map.get("herp"), Some(&1)); // we can search by &'static str (not only by a String)