我经常遇到这个问题。每次我将向量写入文件并将其转换为字符串时,我想知道是否有更好的方法来做到这一点。 我的(相当丑陋的)代码:
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);
}
如您所见,我想迭代除最后一个元素之外的所有元素,并在每个向量元素后面附加一个“”,除非它是最后一个元素。在这种情况下,我想附加一个“ " 在元素之后。
我想知道是否有更简单的方法。
我会利用
Vec::join()
,它负责对最后一个元素进行特殊封装。结果具有相似的行数,但更容易理解:
let as_string = vec
.iter()
.map(|n| n.to_string())
.collect::<Vec<_>>()
.join("\t")
+ "\n";