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}