diff --git a/src/message.rs b/src/message.rs index 22c26465f..a54ab010e 100644 --- a/src/message.rs +++ b/src/message.rs @@ -286,7 +286,7 @@ impl Client { let unavailable_node = nr.get_optional_child("unavailable"); - let mut all_enc_nodes: Vec<&NodeRef<'_>> = Vec::new(); + let mut all_enc_nodes: Vec<&NodeRef<'_>> = Vec::with_capacity(4); let direct_enc_nodes = nr.get_children_by_tag("enc"); all_enc_nodes.extend(direct_enc_nodes); diff --git a/wacore/src/send.rs b/wacore/src/send.rs index de62d83ad..59af35d50 100644 --- a/wacore/src/send.rs +++ b/wacore/src/send.rs @@ -1080,11 +1080,11 @@ pub async fn prepare_group_stanza< // because they need the SKDM to decrypt messages we send from this device // - Exclude hosted/Cloud API devices (device ID 99 or @hosted server) - they don't // participate in group E2EE, only in 1:1 chats - let own_user = own_sending_jid.user.clone(); + let own_user = &own_sending_jid.user; let own_device = own_sending_jid.device; let before_filter = resolved_list.len(); resolved_list.retain(|device_jid| { - let is_exact_sender = device_jid.user == own_user && device_jid.device == own_device; + let is_exact_sender = device_jid.user == *own_user && device_jid.device == own_device; let is_hosted = device_jid.is_hosted(); // Exclude the exact sending device and hosted devices !is_exact_sender && !is_hosted diff --git a/wacore/src/usync.rs b/wacore/src/usync.rs index aee5f7e91..cc56a3e40 100644 --- a/wacore/src/usync.rs +++ b/wacore/src/usync.rs @@ -85,7 +85,8 @@ pub fn parse_get_user_devices_response_with_phash(resp_node: &Node) -> Result None, }); - let mut devices = Vec::new(); + let capacity = device_list_node.children().map_or(0, |c| c.len()); + let mut devices = Vec::with_capacity(capacity); for device_node in device_list_node.get_children_by_tag("device") { let device_id_str = match device_node.attrs().optional_string("id") { Some(id) => id,