diff options
Diffstat (limited to 'src/format.rs')
-rw-r--r-- | src/format.rs | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/format.rs b/src/format.rs index f72ed39..ec2dc7a 100644 --- a/src/format.rs +++ b/src/format.rs @@ -28,7 +28,7 @@ pub struct Format<'a, I> { inner: RefCell<Option<I>>, } -pub fn new_format<'a, I, F>(iter: I, separator: &'a str, f: F) -> FormatWith<'a, I, F> +pub fn new_format<I, F>(iter: I, separator: &str, f: F) -> FormatWith<'_, I, F> where I: Iterator, F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result { @@ -38,7 +38,7 @@ pub fn new_format<'a, I, F>(iter: I, separator: &'a str, f: F) -> FormatWith<'a, } } -pub fn new_format_default<'a, I>(iter: I, separator: &'a str) -> Format<'a, I> +pub fn new_format_default<I>(iter: I, separator: &str) -> Format<'_, I> where I: Iterator, { Format { @@ -59,13 +59,12 @@ impl<'a, I, F> fmt::Display for FormatWith<'a, I, F> if let Some(fst) = iter.next() { format(fst, &mut |disp: &dyn fmt::Display| disp.fmt(f))?; - for elt in iter { - if self.sep.len() > 0 { - + iter.try_for_each(|elt| { + if !self.sep.is_empty() { f.write_str(self.sep)?; } - format(elt, &mut |disp: &dyn fmt::Display| disp.fmt(f))?; - } + format(elt, &mut |disp: &dyn fmt::Display| disp.fmt(f)) + })?; } Ok(()) } @@ -84,12 +83,12 @@ impl<'a, I> Format<'a, I> if let Some(fst) = iter.next() { cb(&fst, f)?; - for elt in iter { - if self.sep.len() > 0 { + iter.try_for_each(|elt| { + if !self.sep.is_empty() { f.write_str(self.sep)?; } - cb(&elt, f)?; - } + cb(&elt, f) + })?; } Ok(()) } |