pub fn cluster_end(s: &str, i: usize) -> usize
the end of the grapheme cluster that starts at i, a cluster boundary (grapheme_next without looking back: walks from boundary to boundary)