You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中如何将分割后的&str转为String存入HashMap

将字符串切片转为String存入HashMap<String, String>的解决方案

针对你遇到的类型不匹配问题,只需要将分割得到的&str类型通过to_string()或into()方法转换为拥有所有权的String即可,无需修改HashMap的目标类型。

完整代码示例

use std::collections::HashMap;

fn main() {
    let input = r#"atp.Status="draft";pureMM.maxOccurs="1";pureMM.minOccurs="1";xml.attribute="true""#;
    let mut result_map = HashMap::new();

    // 按分号分割每个键值对
    for key_value_pair in input.split(';') {
        // 按等号分割键和值,处理可能的分割失败情况
        if let Some((key, value)) = key_value_pair.split_once('=') {
            // 将字符串切片转为String存入HashMap
            result_map.insert(key.to_string(), value.to_string());
            // 也可以用into()方法,效果完全相同
            // result_map.insert(key.into(), value.into());
        }
    }

    // 打印验证结果
    for (k, v) in result_map {
        println!("{}: {}", k, v);
    }
}

关键说明

  • split(';')和split_once('=')返回的都是字符串切片(&str),这类引用类型无法直接存入要求String类型的HashMap,必须转换为拥有所有权的String。
  • split_once比split更适合处理键值对场景,它会直接返回第一个等号分割后的键值结果,避免处理多余的分割元素。
  • 使用if let可以安全处理分割失败的情况(比如某个片段没有等号),防止程序panic。

内容的提问来源于stack exchange,提问作者matti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:16:09