Как и многие новые русты, я пробираюсь через Книгу ржавчины .Я читаю главу о коллекциях и застрял на одном из упражнений .Он гласит:
Используя хеш-карту и векторы, создайте текстовый интерфейс, чтобы позволить пользователю добавлять имена сотрудников в отдел в компании.Например, «Добавить Салли в Инжиниринг» или «Добавить Амира в Продажи». Затем пусть пользователь получит список всех сотрудников отдела или всех сотрудников компании по отделам, отсортированный по алфавиту.
Вот мой код:
use std::collections::hash_map::OccupiedEntry;
use std::collections::hash_map::VacantEntry;
use std::collections::HashMap;
use std::io;
fn main() {
println!("Welcome to the employee database text interface.\nHow can I help you?");
let mut command = String::new();
io::stdin()
.read_line(&mut command)
.expect("Failed to read line.");
command = command.to_lowercase();
let commands = command.split_whitespace().collect::<Vec<&str>>();
let mut department = commands[3];
let mut name = commands[1];
let mut employees = HashMap::new();
if commands[0] == "add" {
match employees.entry(department) {
VacantEntry(entry) => entry.entry(department).or_insert(vec![name]),
OccupiedEntry(entry) => entry.get_mut().push(name),
}
}
}
Компилятор возвращает следующую ошибку:
error[E0532]: expected tuple struct/variant, found struct `VacantEntry`
--> src/main.rs:26:13
|
26 | VacantEntry(entry) => entry.entry(department).or_insert(vec![name]),
| ^^^^^^^^^^^ did you mean `VacantEntry { /* fields */ }`?
error[E0532]: expected tuple struct/variant, found struct `OccupiedEntry`
--> src/main.rs:27:13
|
27 | OccupiedEntry(entry) => entry.get_mut().push(name),
| ^^^^^^^^^^^^^ did you mean `OccupiedEntry { /* fields */ }`?
Я не совсем уверен, что я делаю неправильно.Что означают эти ошибки, и что я могу сделать, чтобы исправить их и заставить мой код компилироваться?