From d3e7fac92c508fad56dbcc953c30fe7f63f6c7fc Mon Sep 17 00:00:00 2001 From: h7x4 Date: Fri, 21 Nov 2025 14:44:17 +0900 Subject: [PATCH] commands: precalculate capacity and use iterators --- src/commands/connection_settings/protocol_disable.rs | 8 ++++---- src/commands/connection_settings/protocol_enable.rs | 8 ++++---- src/commands/connection_settings/tag_types_disable.rs | 8 ++++---- src/commands/connection_settings/tag_types_enable.rs | 8 ++++---- src/commands/connection_settings/tag_types_reset.rs | 8 ++++---- src/commands/reflection/commands.rs | 2 +- src/commands/reflection/not_commands.rs | 2 +- src/commands/reflection/url_handlers.rs | 2 +- src/commands/stickers/sticker_find.rs | 2 +- 9 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/commands/connection_settings/protocol_disable.rs b/src/commands/connection_settings/protocol_disable.rs index cbced2f3..d1cdaf63 100644 --- a/src/commands/connection_settings/protocol_disable.rs +++ b/src/commands/connection_settings/protocol_disable.rs @@ -18,10 +18,10 @@ impl Command for ProtocolDisable { } // TODO: verify that the features are split by whitespace - let mut features = Vec::new(); - for feature in parts { - features.push(feature.to_string()); - } + let features = parts + .into_iter() + .map(|s| s.to_string()) + .collect::>(); Ok((Request::ProtocolDisable(features), "")) } diff --git a/src/commands/connection_settings/protocol_enable.rs b/src/commands/connection_settings/protocol_enable.rs index 80496968..7236c7a3 100644 --- a/src/commands/connection_settings/protocol_enable.rs +++ b/src/commands/connection_settings/protocol_enable.rs @@ -18,10 +18,10 @@ impl Command for ProtocolEnable { } // TODO: verify that the features are split by whitespace - let mut features = Vec::new(); - for feature in parts { - features.push(feature.to_string()); - } + let features = parts + .into_iter() + .map(|s| s.to_string()) + .collect::>(); Ok((Request::ProtocolEnable(features), "")) } diff --git a/src/commands/connection_settings/tag_types_disable.rs b/src/commands/connection_settings/tag_types_disable.rs index 63f2af23..785a08b6 100644 --- a/src/commands/connection_settings/tag_types_disable.rs +++ b/src/commands/connection_settings/tag_types_disable.rs @@ -18,10 +18,10 @@ impl Command for TagTypesDisable { } // TODO: verify that the tag types are split by whitespace - let mut tag_types = Vec::new(); - for tag_type in parts { - tag_types.push(tag_type.to_string()); - } + let tag_types = parts + .into_iter() + .map(|s| s.to_string()) + .collect::>(); Ok((Request::TagTypesDisable(tag_types), "")) } diff --git a/src/commands/connection_settings/tag_types_enable.rs b/src/commands/connection_settings/tag_types_enable.rs index 2bd483d0..1292572f 100644 --- a/src/commands/connection_settings/tag_types_enable.rs +++ b/src/commands/connection_settings/tag_types_enable.rs @@ -18,10 +18,10 @@ impl Command for TagTypesEnable { } // TODO: verify that the tag types are split by whitespace - let mut tag_types = Vec::new(); - for tag_type in parts { - tag_types.push(tag_type.to_string()); - } + let tag_types = parts + .into_iter() + .map(|s| s.to_string()) + .collect::>(); Ok((Request::TagTypesEnable(tag_types), "")) } diff --git a/src/commands/connection_settings/tag_types_reset.rs b/src/commands/connection_settings/tag_types_reset.rs index 0c834d46..b63276f5 100644 --- a/src/commands/connection_settings/tag_types_reset.rs +++ b/src/commands/connection_settings/tag_types_reset.rs @@ -18,10 +18,10 @@ impl Command for TagTypesReset { } // TODO: verify that the tag types are split by whitespace - let mut tag_types = Vec::new(); - for tag_type in parts { - tag_types.push(tag_type.to_string()); - } + let tag_types = parts + .into_iter() + .map(|s| s.to_string()) + .collect::>(); Ok((Request::TagTypesReset(tag_types), "")) } diff --git a/src/commands/reflection/commands.rs b/src/commands/reflection/commands.rs index 5b48a3d1..428ab826 100644 --- a/src/commands/reflection/commands.rs +++ b/src/commands/reflection/commands.rs @@ -20,7 +20,7 @@ impl Command for Commands { parts: ResponseAttributes<'_>, ) -> Result> { let parts: Vec<_> = parts.into(); - let mut result = Vec::new(); + let mut result = Vec::with_capacity(parts.len()); for (key, value) in parts.into_iter() { if key != "command" { return Err(ResponseParserError::UnexpectedProperty(key)); diff --git a/src/commands/reflection/not_commands.rs b/src/commands/reflection/not_commands.rs index 83aeb5cd..98b07f76 100644 --- a/src/commands/reflection/not_commands.rs +++ b/src/commands/reflection/not_commands.rs @@ -19,7 +19,7 @@ impl Command for NotCommands { parts: ResponseAttributes<'_>, ) -> Result> { let parts: Vec<_> = parts.into(); - let mut result = Vec::new(); + let mut result = Vec::with_capacity(parts.len()); for (key, value) in parts.into_iter() { if key != "command" { return Err(ResponseParserError::UnexpectedProperty(key)); diff --git a/src/commands/reflection/url_handlers.rs b/src/commands/reflection/url_handlers.rs index 3d0b80f1..b849ba18 100644 --- a/src/commands/reflection/url_handlers.rs +++ b/src/commands/reflection/url_handlers.rs @@ -19,7 +19,7 @@ impl Command for UrlHandlers { parts: ResponseAttributes<'_>, ) -> Result> { let parts: Vec<_> = parts.into(); - let mut url_handlers = Vec::new(); + let mut url_handlers = Vec::with_capacity(parts.len()); for (key, value) in parts.into_iter() { if key != "handler" { return Err(ResponseParserError::UnexpectedProperty(key)); diff --git a/src/commands/stickers/sticker_find.rs b/src/commands/stickers/sticker_find.rs index 28bbc592..b8e4f383 100644 --- a/src/commands/stickers/sticker_find.rs +++ b/src/commands/stickers/sticker_find.rs @@ -71,7 +71,7 @@ impl Command for StickerFind { parts: ResponseAttributes<'_>, ) -> Result> { let parts: Vec<_> = parts.into(); - let mut stickers = Vec::new(); + let mut stickers = Vec::with_capacity(parts.len() / 2); for sticker_uri_pair in parts.chunks_exact(2) { // TODO: don't assume that the order of the properties is fixed