pub mod diff_chunker;
pub mod path;
pub fn truncate_at_char_boundary(s: &str, max_bytes: usize) -> &str {
let mut end = max_bytes.min(s.len());
while end > 0 && !s.is_char_boundary(end) {
end -= 1;
}
&s[..end]
}
#[cfg(test)]
mod tests {
#[test]
fn truncate_at_char_boundary_respects_utf8() {
let s = "aé啊"; assert_eq!(super::truncate_at_char_boundary(s, 0), "");
assert_eq!(super::truncate_at_char_boundary(s, 1), "a");
assert_eq!(super::truncate_at_char_boundary(s, 2), "a");
assert_eq!(super::truncate_at_char_boundary(s, 3), "aé");
assert_eq!(super::truncate_at_char_boundary(s, 5), "aé");
assert_eq!(super::truncate_at_char_boundary(s, 6), s);
assert_eq!(super::truncate_at_char_boundary(s, 100), s);
}
}