use pinyin2ch::pinyin::Pinyin;
use rand::Rng;
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct Heyiwei(String);
impl Default for Heyiwei {
fn default() -> Self {
Self("何意味".to_string())
}
}
impl Into<String> for Heyiwei {
fn into(self) -> String {
self.0
}
}
impl std::fmt::Display for Heyiwei {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.0)
}
}
impl Heyiwei {
pub fn random() -> Self {
let he_chars = pinyin2ch::ch_char::get_chars(&Pinyin::new("he").unwrap());
let yi_chars = pinyin2ch::ch_char::get_chars(&Pinyin::new("yi").unwrap());
let wei_chars = pinyin2ch::ch_char::get_chars(&Pinyin::new("wei").unwrap());
let random_num = rand::rng().random_range(0..he_chars.len());
let random_he = &he_chars[random_num];
let random_num = rand::rng().random_range(0..yi_chars.len());
let random_yi = &yi_chars[random_num];
let random_num = rand::rng().random_range(0..wei_chars.len());
let random_wei = &wei_chars[random_num];
Self(format!(
"{}{}{}",
random_he.char, random_yi.char, random_wei.char
))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_heyiwei_random() {
println!("Random Heyiwei: {}", Heyiwei::random().0);
panic!()
}
}