如何漂亮地打印带分隔符的 Vec<char>? [重复]

问题描述 投票:0回答:1

我正在尝试将

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]

中找不到方法

是否有更简单的方法从

String
创建可打印的
Vec<char>
,并且元素之间有分隔符?

rust vector pretty-print
1个回答
2
投票

您可以使用 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);
}

游乐场

© www.soinside.com 2019 - 2024. All rights reserved.