You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
491 B
26 lines
491 B
use super::*;
|
|
use std::iter;
|
|
|
|
pub trait StringJoinExt: Sized
|
|
{
|
|
fn join<P: AsRef<str>>(self, sep: P) -> String;
|
|
}
|
|
|
|
impl<I,T> StringJoinExt for I
|
|
where I: IntoIterator<Item=T>,
|
|
T: AsRef<str>
|
|
{
|
|
fn join<P: AsRef<str>>(self, sep: P) -> String
|
|
{
|
|
let mut string = String::new();
|
|
for (first, s) in iter::successors(Some(true), |_| Some(false)).zip(self.into_iter())
|
|
{
|
|
if !first {
|
|
string.push_str(sep.as_ref());
|
|
}
|
|
string.push_str(s.as_ref());
|
|
}
|
|
string
|
|
}
|
|
}
|