漂亮地打印<char>带有分隔符的 Vec



我正在尝试将join(或类似的东西(应用于Vec<char>,以便漂亮地打印它。

到目前为止,我想到的是这个(这正是我想要的(:

let vec: Vec<char> = "abcdef".chars().collect();
let sep = "-";
let vec_str: String = vec
.iter().map(|c| c.to_string()).collect::<Vec<String>>().join(sep);
println!("{}", vec_str);  // a-b-c-d-e-f

这似乎过于复杂(并且分配了一个实际上并不需要的Vec<String>(。

我还试图通过显式创建一个切片来让std::slice::join工作:

let vec_str: String = (&vec[..]).join('-');

但这里编译器抱怨道:

&[char]中找不到

方法

有没有一种更简单的方法可以从元素之间带有分隔符的Vec<char>创建可打印的String

您可以从itertools机箱中使用intersperse

use itertools::Itertools; // 0.8.2
fn main() {
let vec : Vec<_> = "abcdef".chars().collect();
let sep = '-';
let sep_str : String = vec.iter().intersperse(&sep).collect();
println!("{}", sep_str);
}

游乐场

相关内容

  • 没有找到相关文章

最新更新