text_splitter/chunk_size/characters.rs
1use crate::ChunkSizer;
2
3/// Used for splitting a piece of text into chunks based on the number of
4/// characters in each chunk.
5///
6/// ```
7/// use text_splitter::TextSplitter;
8///
9/// // Uses character splitter by default.
10/// let splitter = TextSplitter::new(10);
11/// ```
12#[derive(Copy, Clone, Debug, PartialEq)]
13pub struct Characters;
14
15impl ChunkSizer for Characters {
16 /// Determine the size of a given chunk to use for validation.
17 fn size(&self, chunk: &str) -> usize {
18 chunk.chars().count()
19 }
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25
26 #[test]
27 fn returns_size() {
28 let offsets = Characters.size("eé");
29 assert_eq!(offsets, 2);
30 }
31}