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

Rust中如何简洁拼接实现Display的非字符串类型向量?

解决方案

标准库的Vec::join要求元素与分隔符类型完全一致,而你的T并非String类型,因此报错。以下是几种更简洁的标准库内置写法,无需自定义辅助函数:

简化版临时方案

把闭包替换成方法引用,同时简化类型标注,代码更紧凑:

println!("{}", my_vec.iter().map(ToString::to_string).collect::<Vec<_>>().join(", "));

高效无冗余分配方案

避免先将所有元素转为String再收集成Vec,直接通过write!写入结果字符串,内存效率更高:

let mut result = String::new();
for (idx, elem) in my_vec.iter().enumerate() {
    if idx != 0 {
        let _ = write!(result, ", ");
    }
    let _ = write!(result, "{}", elem);
}
println!("{}", result);

Rust 1.59+ 简洁写法

利用Iterator::intersperse方法直接拼接元素与分隔符,无需手动处理索引:

println!("{}", my_vec.iter().map(ToString::to_string).intersperse(", ".to_string()).collect());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:05:18