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
相关产品推荐
相关产品推荐

