perf: dont create intermediate vecs when matching subs

Avoid creating intermediate vectors when matching subscriptions. We can
just iterate over the hashmap directly.
This commit is contained in:
William Casarin
2022-11-09 07:30:43 -06:00
committed by Greg Heartsfield
parent 9dd4571bee
commit 7adc5c9af7
2 changed files with 9 additions and 15 deletions
+4 -13
View File
@@ -2,7 +2,6 @@
use crate::close::Close;
use crate::error::Error;
use crate::error::Result;
use crate::event::Event;
use crate::subscription::Subscription;
use std::collections::HashMap;
@@ -43,6 +42,10 @@ impl ClientConn {
}
}
pub fn subscriptions(&self) -> &HashMap<String, Subscription> {
&self.subscriptions
}
/// Get a short prefix of the client's unique identifier, suitable
/// for logging.
#[must_use]
@@ -55,18 +58,6 @@ impl ClientConn {
&self.client_ip
}
/// Find all matching subscriptions.
#[must_use]
pub fn get_matching_subscriptions(&self, e: &Event) -> Vec<&str> {
let mut v: Vec<&str> = vec![];
for (id, sub) in &self.subscriptions {
if sub.interested_in_event(e) {
v.push(id);
}
}
v
}
/// Add a new subscription for this connection.
/// # Errors
///