use crate::aes::Aesthetic;
use crate::data::DataFrame;
use crate::scale::ScaleSet;
use super::Stat;
pub struct StatManual {
pub fun: Box<dyn Fn(&DataFrame) -> DataFrame + Send + Sync>,
}
impl StatManual {
pub fn new(fun: impl Fn(&DataFrame) -> DataFrame + Send + Sync + 'static) -> Self {
StatManual { fun: Box::new(fun) }
}
}
impl Stat for StatManual {
fn compute_group(&self, data: &DataFrame, _scales: &ScaleSet) -> DataFrame {
(self.fun)(data)
}
fn required_aes(&self) -> Vec<Aesthetic> {
Vec::new()
}
fn name(&self) -> &str {
"manual"
}
}