From c3497f64299d6c88caf4554b6be9bb7b28cf7128 Mon Sep 17 00:00:00 2001 From: Yash Karandikar Date: Wed, 29 Dec 2021 14:56:29 -0600 Subject: [PATCH] Reduce allocations round 1 --- src/bots/leek.rs | 47 ++++++++++++++++++----------------------------- src/main.rs | 1 - 2 files changed, 18 insertions(+), 30 deletions(-) diff --git a/src/bots/leek.rs b/src/bots/leek.rs index e2217e6..a9173da 100644 --- a/src/bots/leek.rs +++ b/src/bots/leek.rs @@ -1,45 +1,34 @@ -macro_rules! hashmap { - ($( $key: expr => $val: expr ),*) => {{ - let mut map = ::std::collections::HashMap::new(); - $( map.insert($key, $val); )* - map - }} -} +use arrayvec::ArrayString; -pub fn mock(target: &str) -> String { - let mut builder = String::with_capacity(target.len()); +pub fn mock(target: &str) -> ArrayString<512> { + let mut builder = ArrayString::<512>::new(); for char in target.chars() { if rand::random() { - builder.push_str(&char.to_uppercase().to_string()); + builder.push(char.to_ascii_uppercase()); } else { - builder.push_str(&char.to_lowercase().to_string()); + builder.push(char.to_ascii_lowercase()); } } builder } -pub fn leetify(target: &str) -> String { - let letters = hashmap! { - 'a' => '4', - 'e' => '3', - 'i' => '1', - 'o' => '0', - 'g' => '6', - 's' => '5', - 't' => '7', - 'b' => '8' - }; - - let mut builder = String::with_capacity(target.len()); +pub fn leetify(target: &str) -> ArrayString<512> { + let mut builder = ArrayString::<512>::new(); for char in target.chars() { - if let Some(repl) = letters.get(&char.to_ascii_lowercase()) { - builder.push(*repl); - } else { - builder.push(char); - } + builder.push(match char { + 'a' => '4', + 'e' => '3', + 'i' => '1', + 'o' => '0', + 'g' => '6', + 's' => '5', + 't' => '7', + 'b' => '8', + _ => char, + }); } builder diff --git a/src/main.rs b/src/main.rs index 9061a37..f933da8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -193,7 +193,6 @@ async fn handle_privmsg( None => &nick, } .trim(); - tracing::info!(user); if let Some(prev_msg) = state.last_msgs.get(user) { let resp = bots::leek::leetify(prev_msg); state.client.privmsg(&channel, &resp).await?;