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}