Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::sync::mpsc::{Sender, Receiver};
- use std::sync::mpsc;
- use std::thread;
- struct User {
- reference: String,
- email: String,
- }
- fn main() {
- let rows = vec![
- vec!["abcd", "test@test.com"],
- vec!["efgh", "test1@test.com"],
- vec!["wfee", "test2@test.com"],
- vec!["rrgr", "test3@test.com"],
- ];
- let chunk_len = (rows.len() / 2) as usize;
- let mut chunks = Vec::new();
- for chunk in rows.chunks(chunk_len) {
- chunks.push(chunk);
- }
- let (tx, rx): (Sender<Vec<User>>, Receiver<Vec<User>>) = mpsc::channel();
- for chunk in chunks {
- let thread_tx = tx.clone();
- thread::spawn(move || {
- let result = chunk
- .iter()
- .map(|row| {
- User {
- reference: row[0].to_string(),
- email: row[1].to_string(),
- }
- })
- .collect::<Vec<User>>();
- thread_tx.send(result).unwrap();
- });
- }
- let mut users = Vec::new();
- for _ in 0..chunk_len {
- users.push(rx.recv());
- }
- }
- for chunk in rows.chunks(chunk_len) {
- chunks.push(chunk.to_owned());
- }
- let mut chunks = Vec::new();
- for chunk in rows.chunks(chunk_len) {
- chunks.push(chunk);
- }
- for chunk in rows.chunks(chunk_len) {
- let mut v = Vec::new();
- v.push_all(chunk);
- chunks.push(v);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement