// Copyright (c) 2026 Bountyy Oy. All rights reserved.
// This software is proprietary and confidential.
/// Find the largest valid UTF-8 char boundary at or before `index` in `s`.
/// This prevents panics when slicing strings at arbitrary byte offsets.
#[inline]
pub fn floor_char_boundary(s: &str, index: usize) -> usize {
if index >= s.len() {
s.len()
} else {
let mut i = index;
while i > 0 && !s.is_char_boundary(i) {
i -= 1;
}
i
}
}