use core::str::from_utf8;
use std::io::Write;
use embytes_buffer::{Buffer, BufferReader, ReadWrite};
fn main () {
let mut bytes = [0; 1024];
let mut buffer = Buffer::new(&mut bytes);
buffer.write_all("abc".as_bytes()).unwrap();
let reader = buffer.create_reader();
let result = read_til_komma(&reader);
assert_eq!(result, None);
drop(reader);
buffer.write_all("def,1234".as_bytes()).unwrap();
let reader = buffer.create_reader();
let result = read_til_komma(&reader);
assert_eq!(result, Some("abcdef"));
drop(reader);
assert_eq!(buffer.data(), "1234".as_bytes());
}
fn read_til_komma<'a>(reader: &'a impl BufferReader) -> Option<&'a str> {
if reader.is_empty() {
return None;
}
let str = from_utf8(&reader)
.expect("expected valid utf8");
let comma_position = str.find(',');
if let Some(comma_position) = comma_position {
let data = &str[..comma_position];
reader.add_bytes_read(data.len() + 1);
Some(data)
} else {
None
}
}