4
(0.5.1)を使用してチャットサーバーを作成しています(this tutorial)。私はこれが私のmatch
はすべてカバーしていないことを意味すべきであることを理解しますが非網羅的なパターンに関するエラーが発生するのはなぜですか?
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
:私はエラーを取得し、それをコンパイルしようとする際に、
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();
}
}
}
}
しかし:これで、私は次のハンドラを書かれています可能性のあるケースでは、私はそれがどのように真実かわかりません。
なぜこのエラーが発生し、どのように修正できますか?あなたが任意の他のトークンを取得することはできませんことを知っているながら、コンパイラが知らない
match token {
Token(0) => { },
}
、および:ここでは
ないあなたは、コードの2番目のビットにやっていることを確認してください。 'x'とは何ですか?また、 'SERVER_TOKEN'マッチは単純なコロンで終わるのはなぜですか? –
'x'は何でもマッチするダミーの名前です。私はコロンを見ることができません(カンマを意味しましたか?この例を短くするための質問には関係のないすべての処理を除外しました。 –
ええ、私はコンマを書いていましたが、どうしてコロンを書いたのか分かりません。私はあなたが今何を意味するか、私を助けるために時間をとっていただきありがとうございます:) –