У меня есть hm1: HashMap<K, V>
, где K
- это кортеж (k1, 2, k3)
, а V
- это кортеж из 10 элементов, таких как (v1, v2, v3, /* ... */ v10)
.
У меня есть функция, которая действует на это HashMap
, поэтому я передаю его в качестве параметра:
fn do_something(hm1: HashMap<(&i64, &i64, &Option<i64>), (&i64, &i64, /* ... */ &i64)>) -> () {
//Access k1, k2, k3 and v1 .. v10 and do something with it
}
У меня есть второй HashMap
hm2
, где единственное отличие - это дополнительный ключевой элемент. hm2: HashMap<K, V>
, где K
- это кортеж (k1, k2, k3, k4)
, а V
- снова кортеж из 10 элементов (v1, v2, v3, /* ... */ v10)
.
Я бы хотел избежать копирования, вставляющего ту же функцию do_something()
с адаптированным подпись, потому что логика c внутри почти одинакова. Разница лишь в том, что у меня есть дополнительный элемент k4
в кортеже, к которому я бы тоже потом обратился, если бы у меня был hm2
.
. Есть ли способ обобщить параметр HashMap<K, V>
, чтобы я мог пройти оба HashMap
с и действовать на них, не дублируя мою функцию?