1 year ago

#378602

test-img

hkBst

How can I send a hashmap over a channel?

I want to send a hashmap over a channel:

use std::collections::HashMap;
use std::sync::mpsc;
use std::thread;

pub fn frequency(input: &[&str]) {
    let handles = vec![];
    let (tx, rx) = mpsc::channel();
    for txts in input {
        let handle = thread::spawn(|| {
            tx.send(HashMap::new());
        });
        handles.push(handle);
    }
}

but the compiler won't let me:

error[E0277]: `Sender<HashMap<_, _>>` cannot be shared between threads safely
   --> src/lib.rs:9:22
    |
9   |         let handle = thread::spawn(|| {
    |                      ^^^^^^^^^^^^^ `Sender<HashMap<_, _>>` cannot be shared between threads safely
    |
    = help: the trait `Sync` is not implemented for `Sender<HashMap<_, _>>`
    = note: required because of the requirements on the impl of `Send` for `&Sender<HashMap<_, _>>`
    = note: required because it appears within the type `[closure@src/lib.rs:9:36: 11:10]`
note: required by a bound in `spawn`

even though there are Send and Sync implementations for HashMap.

How can I send a hashmap over a channel?

multithreading

rust

hashmap

channel

0 Answers

Your Answer

Accepted video resources