cl_typeck/
format_utils.rs

1pub use cl_ast::format::*;
2use std::{fmt, iter};
3
4/// Separates the items yielded by iterating the provided function
5pub const fn separate<'f, 's, Item, F, W>(
6    sep: &'s str,
7    t: F,
8) -> impl FnOnce(W) -> fmt::Result + 's
9where
10    Item: FnMut(&mut W) -> fmt::Result,
11    F: FnMut() -> Option<Item> + 's,
12    W: fmt::Write,
13{
14    move |mut f| {
15        for (idx, mut disp) in iter::from_fn(t).enumerate() {
16            if idx > 0 {
17                f.write_str(sep)?;
18            }
19            disp(&mut f)?;
20        }
21        Ok(())
22    }
23}