1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
pub trait StringUtils { fn substring(&self, start: usize, len: usize) -> Self; } impl StringUtils for String { fn substring(&self, start: usize, len: usize) -> Self { self.chars().skip(start).take(len).collect() } } /// Indents all lines of a string with `n` spaces. pub fn indent<T: Into<String>>(s: T, n: usize) -> String { let s: String = s.into(); let indent = " ".repeat(n); s.lines() .map(|l| format!("{}{}", indent, l)) .collect::<Vec<_>>() .join("\n") }