From 159afc007c0da7a52a8cf6661b054bd07caeceff Mon Sep 17 00:00:00 2001 From: Nova Date: Tue, 12 Jul 2022 09:08:27 -0400 Subject: [PATCH] fix(event loop): don't try to get client every time in loop --- src/core/eventloop.rs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/core/eventloop.rs b/src/core/eventloop.rs index c75be93..87c36b9 100644 --- a/src/core/eventloop.rs +++ b/src/core/eventloop.rs @@ -61,18 +61,24 @@ impl EventLoop { } }, STOP => return Ok(()), - token => loop { - match clients.get(token.0).unwrap().as_ref().unwrap().dispatch() { - Ok(_) => continue, - Err(e) => match e.kind() { - std::io::ErrorKind::WouldBlock => break, - _ => { - clients.remove(token.0); - break; + token => { + let client = + clients.get(token.0).and_then(|client| client.as_ref()); + if let Some(client) = client { + loop { + match client.dispatch() { + Ok(_) => continue, + Err(e) => match e.kind() { + std::io::ErrorKind::WouldBlock => break, + _ => { + clients.remove(token.0); + break; + } + }, } - }, + } } - }, + } } } }