Нет ключа в Rust
Если ключа в карте нет, чтение в квадратных скобках останавливает программу. Такой путь подходит только когда ключ точно записан раньше. Для сомнительного ключа сначала проверяют наличие отдельной командой.
В карте с двумя людьми запросим ключ, который не записывали:
use std::collections::HashMap;
fn main() {
let mut ages = HashMap::new();
ages.insert("ann", 20);
ages.insert("bob", 30);
println!("{}", ages["zoe"]);
}
Программа не дойдет до конца: обращение
к "zoe" считается ошибкой. На экране
не появится ноль как «заглушка», в отличие
от некоторых других языков.
Тот же исход, если карта еще пустая, а чтение уже пробуют:
use std::collections::HashMap;
fn main() {
let ages = HashMap::new();
println!("{}", ages["any"]);
}
Дана следующая карта:
let mut room = HashMap::new();
room.insert("a", 1);
Попробуйте вывести значение по "b"
и скажите, дойдет ли программа до конца.
Дана следующая карта:
let mut tag = HashMap::new();
tag.insert("go", 1);
Сравните чтение по "go" и по
"book". Какой ключ безопасен
для квадратных скобок?
Почему перед чтением по произвольному ключу лучше сначала узнать, записан ли он?