use crate::strings::latex::ToLatex;
use core::fmt::{Formatter, Result};
pub(crate) fn fmt_latex_sequence<'a, T: ToLatex + 'a>(
xs: impl Iterator<Item = &'a T>,
open: &str,
close: &str,
f: &mut Formatter,
) -> Result {
f.write_str(open)?;
for (i, x) in xs.enumerate() {
if i != 0 {
f.write_str(", ")?;
}
x.fmt_latex(f)?;
}
f.write_str(close)
}
pub(crate) fn fmt_latex_slice<T: ToLatex>(xs: &[T], f: &mut Formatter) -> Result {
fmt_latex_sequence(xs.iter(), "\\left[", "\\right]", f)
}
impl<T: ToLatex> ToLatex for &[T] {
#[inline]
fn fmt_latex(&self, f: &mut Formatter) -> Result {
fmt_latex_slice(self, f)
}
}
impl<T: ToLatex, const N: usize> ToLatex for [T; N] {
#[cfg_attr(dylint_lib = "malachite_lints", expect(long_lines))]
#[inline]
fn fmt_latex(&self, f: &mut Formatter) -> Result {
fmt_latex_slice(self, f)
}
}