1 extern crate bstr;
2 
3 use std::error::Error;
4 use std::io::{self, Write};
5 
6 use bstr::{io::BufReadExt, ByteSlice};
7 
main() -> Result<(), Box<dyn Error>>8 fn main() -> Result<(), Box<dyn Error>> {
9     let stdin = io::stdin();
10     let mut stdout = io::BufWriter::new(io::stdout());
11 
12     stdin.lock().for_byte_line_with_terminator(|line| {
13         let end = line
14             .grapheme_indices()
15             .map(|(_, end, _)| end)
16             .take(10)
17             .last()
18             .unwrap_or(line.len());
19         stdout.write_all(line[..end].trim_end())?;
20         stdout.write_all(b"\n")?;
21         Ok(true)
22     })?;
23     Ok(())
24 }
25