我正在尝试编写一个程序,它会生成一个后台线程,不断地向某个集合中插入数据。同时,我想继续从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仍然很陌生,但这似乎是可能的事情。我只是找不到正确的Arc
、Rc
、Mutex
等组合来包装我的数据。