use super::*;

pub mod ast;
pub mod markov;

pub use self::{ast::Ast, markov::Markov};

pub trait Generator: Send + Sync {
    fn word_stream<'a>(
        &'a self,
        approx_len: usize,
        rng: &'a mut crate::Rng,
    ) -> Box<dyn Iterator<Item = Cow<'a, str>> + 'a>;
}
