use regex::Regex;
pub trait Clear {
fn clear(_: &mut String);
}
pub trait ExtractRegexStr {
fn extract_regex(&self, regex: &Regex) -> Option<String>;
}
pub trait ExtractRegexArray
{
fn extract_regex(&self, regex: &Regex) -> Option<Vec<String>>;
}
pub trait DeleteDuplicate {
fn delete(self) -> Vec<String>;
}
impl DeleteDuplicate for Vec<String> {
fn delete(self) -> Vec<String> {
let mut vec: Vec<String> = Vec::with_capacity(self.len());
for str in self {
if !vec.contains(&str) {
vec.push(str);
}
}
vec
}
}
impl ExtractRegexArray for [String]
where
{
fn extract_regex(&self, regex: &Regex) -> Option<Vec<String>> {
let mut result: Vec<String> = Vec::new();
for i in self {
match regex.find(i) {
Some(fin) => { result.push(fin.as_str().to_string()); }
_ => continue,
}
}
if result.is_empty() {
return None;
}
Some(result)
}
}
impl ExtractRegexStr for str {
fn extract_regex(&self, regex: &Regex) -> Option<String> {
let result = regex.find(self).map(|m| m.as_str().to_string());
result
}
}
impl Clear for String {
fn clear(string: &mut String) {
string.replace_range(0..string.len(), "")
}
}