我正在为 Rust 编写一个 Phoenix 客户端库,利用rust-websockets 的异步 websocket 客户端。现在我无法弄清楚如何将回调函数传递到处理 websocket 流量的线程中。我有一个简化的结构:
pub struct Socket {
endpoint: String,
connected: Arc<AtomicBool>,
state_change_close: Option<Box<FnMut(String)>>,
}
Run Code Online (Sandbox Code Playgroud)
该结构体的connect功能如下:
pub fn connect(&mut self) -> Result<(), String> {
if self.connected.load(Ordering::Relaxed) {
return Ok(())
}
// Copy endpoint string, otherwise we get an error on thread::spawn
let connection_string = self.endpoint.clone();
let (usr_msg, stdin_ch) = mpsc::channel(0);
let connection_thread = thread::spawn(move || {
// tokio core for running event loop
let mut core = Core::new().unwrap();
let runner …Run Code Online (Sandbox Code Playgroud)