1use crate::aes::Aesthetic;
2use crate::data::DataFrame;
3use crate::scale::ScaleSet;
4
5use super::Stat;
6
7pub struct StatManual {
12 pub fun: Box<dyn Fn(&DataFrame) -> DataFrame + Send + Sync>,
13}
14
15impl StatManual {
16 pub fn new(fun: impl Fn(&DataFrame) -> DataFrame + Send + Sync + 'static) -> Self {
17 StatManual { fun: Box::new(fun) }
18 }
19}
20
21impl Stat for StatManual {
22 fn compute_group(&self, data: &DataFrame, _scales: &ScaleSet) -> DataFrame {
23 (self.fun)(data)
24 }
25
26 fn required_aes(&self) -> Vec<Aesthetic> {
27 Vec::new()
28 }
29
30 fn name(&self) -> &str {
31 "manual"
32 }
33}