【发布时间】:2018-04-15 23:12:55
【问题描述】:
我正在尝试编写一个程序来生成一个后台线程,该线程不断地将数据插入到某个集合中。同时,我想继续从stdin 获取输入,并检查该输入是否在线程正在操作的集合中。
这是一个简单的例子:
use std::collections::HashSet;
use std::thread;
fn main() {
let mut set: HashSet<String> = HashSet::new();
thread::spawn(move || {
loop {
set.insert("foo".to_string());
}
});
loop {
let input: String = get_input_from_stdin();
if set.contains(&input) {
// Do something...
}
}
}
fn get_input_from_stdin() -> String {
String::new()
}
但是,由于所有权问题,这不起作用。
我还是 Rust 的新手,但这似乎应该是可能的。我只是找不到Arcs、Rcs、Mutexes 等的正确组合来包装我的数据。
【问题讨论】:
标签: multithreading concurrency rust ownership