Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::io::{BufRead, BufReader, Read};
- use std::sync::mpsc::{channel, Receiver};
- use std::thread;
- pub fn lines_channel(source: impl Read + Send + 'static) -> Receiver<String> {
- let (send, recv) = channel();
- thread::spawn(move || {
- let mut reader = BufReader::new(source);
- loop {
- let mut line = String::new();
- match reader.read_line(&mut line) {
- Ok(n) => {
- if n == 0 {
- // Source is closed
- return;
- } else {
- if send.send(line).is_err() {
- // Client stopped listening
- return;
- }
- }
- },
- Err(_) => {
- return;
- }
- }
- }
- });
- recv
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement