use crc::crc32;
pub struct CrcHelper {
}
impl CrcHelper {
pub fn clean_name_from_name_upcase_underscore( name: &str ) -> String {
let upcase_name = name.to_uppercase();
let clean_name: String = upcase_name.chars().map(|c| match c {
'-' => '_', '0'..='9' => c,
'A'..='Z' => c,
'!'..='@' => c,
'['..='`' => c,
'{'..='~' => c,
_ => '_'
}).collect();
clean_name
}
pub fn crc_from_name_upcase_underscore( name: &str ) -> u32 {
let clean_name = CrcHelper::clean_name_from_name_upcase_underscore( name );
println!("clean_name: {:?}", clean_name );
let crc = crc32::checksum_ieee(clean_name.as_bytes());
crc
}
pub fn crc_from_name( name: &str ) -> u32 {
let downcase_name = name.to_lowercase();
let clean_name: String = downcase_name.chars().map(|c| match c {
'0'..='9' => c,
'a'..='z' => c,
'!'..='@' => c,
'['..='`' => c,
'{'..='~' => c,
_ => ' '
}).collect();
let crc = crc32::checksum_ieee(clean_name.as_bytes());
crc
}
}