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