pub trait TokenKind {
const MAX: usize;
fn max() -> usize {
Self::MAX
}
fn from_idx(&self, value: usize) -> Option<String>;
fn from_name(&self, name: &str) -> Option<usize>;
}
pub trait Amount {
fn amount(&self) -> Option<usize>;
}
impl Amount for Option<usize> {
fn amount(&self) -> Option<usize> {
*self
}
}
impl Amount for usize {
fn amount(&self) -> Option<usize> {
Some(*self)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct Score {
pub item: String,
pub score: usize,
}
pub trait TokenKindCorrect : TokenKind {
fn suggest(&self, query: &str, amount: impl Amount) -> Vec<Score>;
}