Я знаю, как использовать String Я знаю, как использовать Вектор Но у меня возникла проблема с использованием HashMap.
#[derive(Serialize)]
pub struct TestStructs {
pub ttStrngg: String,
pub ttVctorr: Vec<String>,
pub ttHshMpp: HashMap<String, Vec<String>>,
}
Вот что я пытаюсь
У вас нет проблем со String
ttStrngg: "Stringgg".to_string()
,
С Вектором проблем нет.
ttVctorr: vec!["VecStr1".to_string(), "VecStr2".to_string()],
Но есть проблема с HashMap
ttHshMpp: "HMK1".to_string(), vec!["K1V1".to_string(), "K1V2".to_string()],
Я поделился тем, что пробовал, и теперь ищу недостающую вещь в HashMap.
Вот ссылка на Rust Playground, чтобы попробовать свою собственную
И вот ошибка
Compiling playground v0.0.1 (/playground)
error: expected one of `,`, `:`, or `}`, found `!`
--> src/main.rs:9:46
|
6 | let ttStrctts = TestStructs {
| ----------- while parsing this struct
...
9 | ttHshMpp: "HMK1".to_string(), vec!["K1V1".to_string(), "K1V2".to_string()]
| ---^ expected one of `,`, `:`, or `}`
| |
| while parsing this struct field
error[E0308]: mismatched types
--> src/main.rs:9:23
|
9 | ttHshMpp: "HMK1".to_string(), vec!["K1V1".to_string(), "K1V2".to_string()]
| ^^^^^^^^^^^^^^^^^^ expected `HashMap<String, Vec<String>>`, found `String`
|
= note: expected struct `HashMap<std::string::String, Vec<std::string::String>>`
found struct `std::string::String`
Мы можем напрямую инициализировать член с помощью
ttHshMpp: HashMap::from([("HMK1".to_string(), vec!["K1V1".to_string(), "K1V2".to_string()])]),
См. документацию HashMap::from().
Внутренний ()
определяет каждую пару (k, v)
, а []
обозначает массив, содержащий эти пары.
Здесь у нас есть только одна пара, тогда это приводит к обозначению ([(...)])
, которое может выглядеть странно, но является просто специфической формой общего случая.