pub fn floor_char_boundary(s: &str, index: usize) -> usize