1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
//! イテレータのutil
use std::fmt::{Debug, Display};
/// イテレータのツール
pub trait IterUtil: Iterator {
/// 文字列として結合する
fn join(&mut self, sep: &str) -> String
where
Self::Item: Display,
{
self.fold(String::new(), |mut s, v| {
if s.is_empty() {
s = format!("{}", v);
} else {
s += &format!("{}{}", sep, v);
}
s
})
}
/// 文字列として結合する(デバッグ)
fn join_debug(&mut self, sep: &str) -> String
where
Self::Item: Debug,
{
self.fold(String::new(), |mut s, v| {
if s.is_empty() {
s = format!("{:?}", v);
} else {
s += &format!("{}{:?}", sep, v);
}
s
})
}
}
impl<I: Iterator> IterUtil for I {}