Reduce allocations round 1

This commit is contained in:
Yash Karandikar 2021-12-29 14:56:29 -06:00
parent d7c34f3b34
commit c3497f6429
Signed by untrusted user: karx
GPG key ID: A794DA2529474BA5
2 changed files with 18 additions and 30 deletions

View file

@ -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

View file

@ -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?;