extract_strings/
lib.rs

1mod ascii;
2mod string_result;
3
4// pub use crate::string_result::StringResult;
5use std::io::Read;
6
7pub trait AsciiStrings {
8    fn iter_ascii_strings(self, min_length: usize) -> impl Iterator<Item = String>;
9}
10
11impl<T> AsciiStrings for T
12where
13    T: Read, // for<'a> &'a T: Read,
14{
15    fn iter_ascii_strings(self, min_length: usize) -> impl Iterator<Item = String> {
16        ascii::AsciiIterator::new(self, min_length)
17    }
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23    use std::io::Cursor;
24
25    #[test]
26    fn test_ascii_strings() {
27        let data = b"hello\0world";
28        let reader = Cursor::new(data);
29        let strings: Vec<String> = reader.iter_ascii_strings(4).collect();
30        assert_eq!(strings, vec!["hello", "world"]);
31    }
32}