4
我正在使用(0.5.1),正在編寫一個聊天服務器,跟在this tutorial之後。有了它,我寫了下面的處理程序:爲什麼我會收到有關非窮舉模式的錯誤?
const SERVER_TOKEN: Token = Token(0);
impl Handler for WebSocketServer {
type Timeout = usize;
type Message =();
fn ready(&mut self, event_loop: &mut EventLoop<WebSocketServer>,
token: Token, events: EventSet)
{
match token {
SERVER_TOKEN => {
let client_socket = match self.socket.accept() {
Err(e) => {
println!("Accept error: {}", e);
return;
},
Ok(None) => unreachable!("Accept has returned 'None'"),
Ok(Some((sock, addr))) => sock,
};
self.token_counter += 1;
let new_token = Token(self.token_counter);
self.clients.insert(new_token, client_socket);
event_loop.register(&self.clients[&new_token],
new_token, EventSet::readable(),
PollOpt::edge() | PollOpt::oneshot()).unwrap();
}
}
}
}
但是,試圖編譯它,我得到一個錯誤:
error[E0004]: non-exhaustive patterns: `Token(_)` not covered
--> src/main.rs:23:15
|
23 | match token {
| ^^^^^ pattern `Token(_)` not covered
error: aborting due to previous error
雖然我明白,這應該意味着我match
並不包括所有可能的情況下,我不明白這是如此。
爲什麼我得到這個錯誤,我該如何解決?
不知道你在做什麼,你的第二位代碼。什麼是'x'?另外,爲什麼'SERVER_TOKEN'匹配在一個簡單的冒號中結束? –
'x'只是一個虛擬的名字,可以與任何東西相匹配。我看不到冒號(你的意思是逗號?);我忽略了與問題無關的所有處理,以縮短範例。 –
是的,我的意思是逗號,不知道爲什麼我寫冒號。我明白你的意思了,謝謝你花時間幫助我:) –