From cf521aaf60414f613a77a64ddd7fe60361641e54 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Tue, 12 Jul 2022 11:31:29 +0200 Subject: [PATCH] Refactor match session name (#1582) --- src/sessions.rs | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/sessions.rs b/src/sessions.rs index fc42b610..616596ef 100644 --- a/src/sessions.rs +++ b/src/sessions.rs @@ -151,24 +151,23 @@ pub enum SessionNameMatch { } pub(crate) fn match_session_name(prefix: &str) -> Result { - return match get_sessions() { - Ok(sessions) => Ok({ - let filtered_sessions: Vec = sessions - .iter() - .filter(|s| s.starts_with(prefix)) - .cloned() - .collect(); - if filtered_sessions.iter().any(|s| s == prefix) { - return Ok(SessionNameMatch::Exact(prefix.to_string())); - } - match &filtered_sessions[..] { - [] => SessionNameMatch::None, - [s] => SessionNameMatch::UniquePrefix(s.to_string()), - _ => SessionNameMatch::AmbiguousPrefix(filtered_sessions), - } - }), - Err(e) => Err(e), - }; + let sessions = get_sessions()?; + + let filtered_sessions: Vec<_> = sessions.iter().filter(|s| s.starts_with(prefix)).collect(); + + if filtered_sessions.iter().any(|s| *s == prefix) { + return Ok(SessionNameMatch::Exact(prefix.to_string())); + } + + Ok({ + match &filtered_sessions[..] { + [] => SessionNameMatch::None, + [s] => SessionNameMatch::UniquePrefix(s.to_string()), + _ => { + SessionNameMatch::AmbiguousPrefix(filtered_sessions.into_iter().cloned().collect()) + }, + } + }) } pub(crate) fn session_exists(name: &str) -> Result {