fn intersperse_fold<I, B, F, G>(
    iter: I,
    init: B,
    f: F,
    separator: G,
    needs_sep: bool
) -> Bwhere
    I: Iterator,
    F: FnMut(B, I::Item) -> B,
    G: FnMut() -> I::Item,