profileme / src/chunk.rs
pub fn chunk(text: &str, size: usize, overlap: usize) -> Vec<String> {
let chars: Vec<char> = text.chars().collect();
if chars.len() <= size {
return vec![text.to_string()];
}
let mut out = Vec::new();
let mut i = 0;
while i < chars.len() {
let end = (i + size).min(chars.len());
let piece: String = chars[i..end].iter().collect();
out.push(piece);
if end == chars.len() {
break;
}
i = end.saturating_sub(overlap);
if i == 0 {
i = end;
}
}
out
}