vibrato 0.5.2

Vibrato: viterbi-based accelerated tokenizer
Documentation
use bincode::{Decode, Encode};

#[derive(Default, Decode, Encode)]
pub struct WordFeatures {
    features: Vec<String>,
}

impl WordFeatures {
    pub fn new<I, S>(features: I) -> Self
    where
        I: IntoIterator<Item = S>,
        S: AsRef<str>,
    {
        Self {
            features: features
                .into_iter()
                .map(|s| s.as_ref().to_string())
                .collect(),
        }
    }

    #[inline(always)]
    pub fn get(&self, word_id: usize) -> &str {
        &self.features[word_id]
    }
}