Advertisement
Guest User

Untitled

a guest
Jul 25th, 2017
882
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. use std::sync::mpsc::{Sender, Receiver};
  2. use std::sync::mpsc;
  3. use std::thread;
  4.  
  5. struct User {
  6. reference: String,
  7. email: String,
  8. }
  9.  
  10. fn main() {
  11. let rows = vec![
  12. vec!["abcd", "test@test.com"],
  13. vec!["efgh", "test1@test.com"],
  14. vec!["wfee", "test2@test.com"],
  15. vec!["rrgr", "test3@test.com"],
  16. ];
  17.  
  18. let chunk_len = (rows.len() / 2) as usize;
  19. let mut chunks = Vec::new();
  20. for chunk in rows.chunks(chunk_len) {
  21. chunks.push(chunk);
  22. }
  23.  
  24. let (tx, rx): (Sender<Vec<User>>, Receiver<Vec<User>>) = mpsc::channel();
  25.  
  26. for chunk in chunks {
  27. let thread_tx = tx.clone();
  28. thread::spawn(move || {
  29. let result = chunk
  30. .iter()
  31. .map(|row| {
  32. User {
  33. reference: row[0].to_string(),
  34. email: row[1].to_string(),
  35. }
  36. })
  37. .collect::<Vec<User>>();
  38. thread_tx.send(result).unwrap();
  39. });
  40. }
  41.  
  42. let mut users = Vec::new();
  43. for _ in 0..chunk_len {
  44. users.push(rx.recv());
  45. }
  46. }
  47.  
  48. for chunk in rows.chunks(chunk_len) {
  49. chunks.push(chunk.to_owned());
  50. }
  51.  
  52. let mut chunks = Vec::new();
  53. for chunk in rows.chunks(chunk_len) {
  54. chunks.push(chunk);
  55. }
  56.  
  57. for chunk in rows.chunks(chunk_len) {
  58. let mut v = Vec::new();
  59. v.push_all(chunk);
  60. chunks.push(v);
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement