rust 将String拆分两次并将其放入HashMap中

li9yvcax  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(115)

我有一个字符串atp.Status="draft";pureMM.maxOccurs="1";pureMM.minOccurs="1";xml.attribute="true",想把它拆分两次,然后插入到一个HashMap中。对于第一个拆分,我使用;,对于第二个拆分,我使用=。应该是这样的。

appinfo {
     atp.Status: "draft",
     pureMM.maxOccurs: "1",
     pureMM.minOccurs: "1",
     xml.attribute: "true",
}

这是我的代码:

let mut appinfo: HashMap<String,String> = HashMap::new();
let text = r#"atp.Status="draft";pureMM.maxOccurs="1";pureMM.minOccurs="1";xml.attribute="true""#;
appinfo = HashMap::from_iter(text.split(";").map(|a|a.split_once("=").unwrap()));

我得到:

= note: expected struct `HashMap<String, String, RandomState>`
              found struct `HashMap<&str, &str, _>`

我已经尝试了所有可能的变体和组合在Map和外部与to_string()into_iter()collect()。我唯一的解决方案是将HashMap的类型更改为<&str, &str>,但我不希望这样。我怎样才能把两个字符串拼接成正常的字符串?

sr4lhrrt

sr4lhrrt1#

只需在split_once的两个部分上使用to_string()

let text = r#"atp.Status="draft";pureMM.maxOccurs="1";pureMM.minOccurs="1";xml.attribute="true""#;
let appinfo = HashMap::from_iter(text.split(";").map(|a| {
    let (key, value) = a.split_once("=").unwrap();
    (key.to_string(), value.to_string())
}));

相关问题