use crate::Estimator;
pub mod embedding;
pub mod scalers;
pub trait Transformer<Input, Output> {
fn transform(&self, input: &Input) -> Option<Output>;
}
pub trait FitTransform<Input, Output, T: Transformer<Input, Output>>:
Estimator<Input, Estimator = T>
{
fn fit_transform(&self, input: &Input) -> Option<Output> {
let transfomer = self.fit(input)?;
transfomer.transform(input)
}
}
impl<Input, Output, T: Transformer<Input, Output>, E: Estimator<Input, Estimator = T>>
FitTransform<Input, Output, T> for E
{
}