fix: do not create unnecessary instances of Regex

This commit is contained in:
oSumAtrIX
2022-07-08 19:51:52 +02:00
parent 179ad3e824
commit a3e6d88cfb
5 changed files with 21 additions and 6 deletions

11
Cargo.lock generated
View File

@ -682,6 +682,7 @@ dependencies = [
"regex",
"serde",
"serde_json",
"serde_regex",
"serenity",
"tokio",
]
@ -779,6 +780,16 @@ dependencies = [
"serde",
]
[[package]]
name = "serde_regex"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf"
dependencies = [
"regex",
"serde",
]
[[package]]
name = "serde_urlencoded"
version = "0.7.1"

View File

@ -22,6 +22,7 @@ serde_json = "1.0"
tokio = { version = "1.0", features = ["rt-multi-thread"] }
log = "0.4"
regex = "1.0"
serde_regex = "1.1"
chrono = "0.4"
[dependencies.serenity]

View File

@ -1,9 +1,9 @@
use std::sync::Arc;
use chrono::{DateTime, Duration, NaiveDateTime, Utc};
use configuration::application::Configuration;
use log::{error, info, trace, LevelFilter};
use logger::logging::SimpleLogger;
use model::application::Configuration;
use regex::Regex;
use serenity::client::{Context, EventHandler};
use serenity::model::channel::{GuildChannel, Message};
@ -12,8 +12,8 @@ use serenity::model::prelude::command::Command;
use serenity::model::prelude::interaction::{Interaction, InteractionResponseType, MessageFlags};
use serenity::prelude::{GatewayIntents, RwLock, TypeMapKey};
use serenity::{async_trait, Client};
mod configuration;
mod logger;
mod model;
static LOGGER: SimpleLogger = SimpleLogger;
@ -34,8 +34,8 @@ async fn get_configuration_lock(ctx: &Context) -> Arc<RwLock<Configuration>> {
.clone()
}
fn contains_match(strings: &Vec<String>, text: &String) -> bool {
strings.iter().any(|regex| Regex::new(regex).unwrap().is_match(&text))
fn contains_match(regex: &Vec<Regex>, text: &String) -> bool {
regex.iter().any(|r| r.is_match(&text))
}
fn load_configuration() -> Configuration {

View File

@ -1,6 +1,7 @@
use std::fs::File;
use std::io::{Error, Read, Write};
use regex::Regex;
use serde::{Deserialize, Serialize};
#[derive(Default, Serialize, Deserialize)]
@ -107,14 +108,16 @@ pub struct Author {
pub struct Includes {
pub channels: Vec<u64>,
#[serde(rename = "match")]
pub match_field: Vec<String>,
#[serde(with = "serde_regex")]
pub match_field: Vec<Regex>,
}
#[derive(Serialize, Deserialize)]
pub struct Excludes {
pub roles: Vec<u64>,
#[serde(rename = "match")]
pub match_field: Vec<String>,
#[serde(with = "serde_regex")]
pub match_field: Vec<Regex>,
}
#[derive(Serialize, Deserialize)]