我有一个字符串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>
,但我不希望这样。我怎样才能把两个字符串拼接成正常的字符串?
1条答案
按热度按时间sr4lhrrt1#
只需在
split_once
的两个部分上使用to_string()
: