如何通过通道发送哈希图?
我想通过一个频道发送哈希图:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论