Ответ 1
Индексирование неизменно и индексирование изменчиво обеспечивается двумя разными признаками: Index
и IndexMut
, соответственно.
В настоящее время HashMap
не реализует IndexMut
, а Vec
делает.
В фиксации, которая удалила реализацию HashMap
IndexMut
, говорится:
Эта фиксация удаляет указатели IndexMut на HashMap и BTreeMap, в для обеспечения будущего API для возможного включения Значок IndexSet.
Я понимаю, что гипотетическая черта IndexSet
позволит вам назначать новые значения HashMap
, а не просто читать или мутировать существующие записи:
let mut map = HashMap::new();
map["key"] = "value";
В настоящее время вы можете использовать get_mut
:
*my_map.get_mut("a").unwrap() += 10;
Или entry
API:
*my_map.entry("a").or_insert(42) += 10;