Rust 将向量写入文件(或字符串)的惯用方式是什么?元素之间有制表符,末尾有换行符?

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

我经常遇到这个问题。每次我将向量写入文件并将其转换为字符串时,我想知道是否有更好的方法来做到这一点。 我的(相当丑陋的)代码:

fn main() {
    let vec = vec![1, 2, 3, 4, 5];

    let as_string = vec
        .iter()
        .take(vec.len() - 1)
        .fold("".to_string(), |acc, elem| {
            acc + &format!("{}\t", elem)
        })
        + &format!("{}\n", vec.last().unwrap());
    
    print!("{}", as_string);
}

如您所见,我想迭代除最后一个元素之外的所有元素,并在每个向量元素后面附加一个“”,除非它是最后一个元素。在这种情况下,我想附加一个“ " 在元素之后。

我想知道是否有更简单的方法。

rust iterator
1个回答
0
投票

我会利用

Vec::join()
,它负责对最后一个元素进行特殊封装。结果具有相似的行数,但更容易理解:

let as_string = vec
    .iter()
    .map(|n| n.to_string())
    .collect::<Vec<_>>()
    .join("\t")
    + "\n";
© www.soinside.com 2019 - 2024. All rights reserved.