use std::hash::BuildHasher;
use foldhash::fast::FixedState;
use serde::{Deserialize, Serialize};
use crate::{CharString, CharStringExt};
#[derive(Hash, Copy, Clone, PartialEq, Eq, PartialOrd, Debug, Serialize, Deserialize)]
pub struct WordId {
hash: u64,
}
impl WordId {
pub fn from_word_chars(chars: impl AsRef<[char]>) -> Self {
let normalized = chars.as_ref().normalized();
let lower = normalized.to_lower();
let hash = FixedState::default().hash_one(lower);
Self { hash }
}
pub fn from_word_str(text: impl AsRef<str>) -> Self {
let chars: CharString = text.as_ref().chars().collect();
Self::from_word_chars(chars)
}
}