代码之家  ›  专栏  ›  技术社区  ›  Expert

HashMap中的矢量[重复]

  •  0
  • Expert  · 技术社区  · 1 年前

    我知道如何使用, 一串 我知道如何使用, 矢量 但我面临使用问题 哈希图

    #[derive(Serialize)]
    pub struct TestStructs {
        pub ttStrngg: String,
        pub ttVctorr: Vec<String>,
        pub ttHshMpp: HashMap<String, Vec<String>>,
    }
    

    这是我正在尝试的

    没有任何问题 一串

    ttStrngg: "Stringgg".to_string() ,

    没有任何问题 矢量

    ttVctorr: vec!["VecStr1".to_string(), "VecStr2".to_string()],

    但确实有问题 哈希图 ttHshMpp: "HMK1".to_string(), vec!["K1V1".to_string(), "K1V2".to_string()],

    我已经分享了我的尝试,现在正在HashMap中寻找缺失的东西

    这是Rust Playground链接,可以尝试您自己的

    https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=68a35bc3f9afc3be47d9d8219d4a6f2a

    这是一个错误

        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`
    
    1 回复  |  直到 1 年前
        1
  •  2
  •   prog-fh    1 年前

    我们可以直接用初始化成员

    ttHshMpp: HashMap::from([("HMK1".to_string(), vec!["K1V1".to_string(), "K1V2".to_string()])]),
    

    请参阅 documentation of HashMap::from() .

    内部 () 指定每对 (k, v) ,以及 [] 表示包含这些对的数组。
    这里,我们只有一对,然后这导致 ([(...)]) 这个符号可能看起来很奇怪,但它只是一般情况的一种特定形式。