Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. use std::io::{BufRead, BufReader, Read};
  2. use std::sync::mpsc::{channel, Receiver};
  3. use std::thread;
  4.  
  5. pub fn lines_channel(source: impl Read + Send + 'static) -> Receiver<String> {
  6. let (send, recv) = channel();
  7. thread::spawn(move || {
  8. let mut reader = BufReader::new(source);
  9. loop {
  10. let mut line = String::new();
  11. match reader.read_line(&mut line) {
  12. Ok(n) => {
  13. if n == 0 {
  14. // Source is closed
  15. return;
  16. } else {
  17. if send.send(line).is_err() {
  18. // Client stopped listening
  19. return;
  20. }
  21. }
  22. },
  23. Err(_) => {
  24. return;
  25. }
  26. }
  27. }
  28. });
  29. recv
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement