#[derive(Clone, Copy, Debug)]
pub enum CharMapAction<'a> {
Pass,
Delete,
SubStr(&'a str),
SubChar(char),
}
pub trait ActionMap {
fn map_char(&'_ self, c: char) -> Option<&'_ CharMapAction<'_>>;
}
#[cfg(feature = "std")]
impl ActionMap for std::collections::HashMap<char, CharMapAction<'_>> {
#[inline]
fn map_char(&'_ self, c: char) -> Option<&'_ CharMapAction<'_>> {
self.get(&c)
}
}
#[cfg(feature = "std")]
impl ActionMap for std::collections::BTreeMap<char, CharMapAction<'_>> {
#[inline]
fn map_char(&'_ self, c: char) -> Option<&'_ CharMapAction<'_>> {
self.get(&c)
}
}
#[cfg(feature = "hashbrown")]
impl ActionMap for hashbrown::HashMap<char, CharMapAction<'_>> {
#[inline]
fn map_char(&'_ self, c: char) -> Option<&'_ CharMapAction<'_>> {
self.get(&c)
}
}
#[cfg(feature = "phf")]
impl ActionMap for phf::Map<char, CharMapAction<'_>> {
#[inline]
fn map_char(&'_ self, c: char) -> Option<&'_ CharMapAction<'_>> {
self.get(&c)
}
}
#[cfg(feature = "phf")]
impl ActionMap for phf::OrderedMap<char, CharMapAction<'_>> {
#[inline]
fn map_char(&'_ self, c: char) -> Option<&'_ CharMapAction<'_>> {
self.get(&c)
}
}