如何通过通道发送哈希图?

发布于 2025-01-19 04:40:48 字数 1140 浏览 1 评论 0原文

我想通过一个频道发送哈希图:

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);
    }
}

但是编译器不会让我:

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`

即使 Hashmap 有发送和同步实现。

如何通过频道发送哈希图?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文