strafe_trait/
conclusion.rs

1use std::{any::TypeId, fmt::Debug};
2
3use crate::{
4    AccurateModel, Concept, InaccurateModel, InsignificantCoefficient, NoSignificantFeature,
5    Normal, NormalResiduals, NotNormal, NotNormalResiduals, SignificantCoefficient,
6    SomeSignficantFeature,
7};
8
9pub trait Conclusion: Debug + Concept {
10    fn to_comparator(&self) -> TypeId
11    where
12        Self: 'static,
13    {
14        self.comparator()
15    }
16}
17
18impl dyn Conclusion {
19    pub fn is<C: 'static + Concept>(&self) -> bool {
20        self.comparator() == C::new().comparator()
21    }
22}
23
24impl Conclusion for Normal {}
25
26impl Conclusion for NotNormal {}
27
28impl Conclusion for NormalResiduals {}
29
30impl Conclusion for NotNormalResiduals {}
31
32impl Conclusion for SomeSignficantFeature {}
33
34impl Conclusion for NoSignificantFeature {}
35
36impl Conclusion for AccurateModel {}
37
38impl Conclusion for InaccurateModel {}
39
40impl Conclusion for SignificantCoefficient {}
41
42impl Conclusion for InsignificantCoefficient {}