chiral_db_fp_kind/
lib.rs

1pub mod openbabel;
2
3#[derive(Clone, Debug)]
4pub enum Kind {
5    OpenBabel { kind: openbabel::Kind }
6}
7
8impl Kind {
9    pub fn kind_openbabel_fp2(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::FP2 { nbits } } }
10    pub fn kind_openbabel_fp3(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::FP3 { nbits } } }
11    pub fn kind_openbabel_fp4(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::FP4 { nbits } } }
12    pub fn kind_openbabel_ecfp0(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::ECFP0 { nbits } } }
13    pub fn kind_openbabel_ecfp2(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::ECFP2 { nbits } } }
14    pub fn kind_openbabel_ecfp4(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::ECFP4 { nbits } } }
15    pub fn kind_openbabel_ecfp6(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::ECFP6 { nbits } } }
16    pub fn kind_openbabel_ecfp8(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::ECFP8 { nbits } } }
17    pub fn kind_openbabel_ecfp10(nbits: u32) -> Kind { Kind::OpenBabel { kind: openbabel::Kind::ECFP10 { nbits } } }
18}
19
20
21
22impl std::string::ToString for Kind {
23    fn to_string(&self) -> String {
24        match self {
25            Kind::OpenBabel { kind: ob_fp_kind } => {
26                match ob_fp_kind {
27                    openbabel::Kind::FP2 { nbits } => format!("OpenBabel FP2 with {} bits", nbits),
28                    openbabel::Kind::FP3 { nbits } => format!("OpenBabel FP3 with {} bits", nbits),
29                    openbabel::Kind::FP4 { nbits } => format!("OpenBabel FP4 with {} bits", nbits),
30                    openbabel::Kind::ECFP0 { nbits } => format!("OpenBabel ECFP0 with {} bits", nbits),
31                    openbabel::Kind::ECFP2 { nbits } => format!("OpenBabel ECFP2 with {} bits", nbits),
32                    openbabel::Kind::ECFP4 { nbits } => format!("OpenBabel ECFP4 with {} bits", nbits),
33                    openbabel::Kind::ECFP6 { nbits } => format!("OpenBabel ECFP6 with {} bits", nbits),
34                    openbabel::Kind::ECFP8 { nbits } => format!("OpenBabel ECFP8 with {} bits", nbits),
35                    openbabel::Kind::ECFP10 { nbits } => format!("OpenBabel ECFP10 with {} bits", nbits),
36                }
37            }
38        }
39    }
40}
41
42#[cfg(test)]
43mod test {
44    use super::*;
45
46    #[test]
47    fn test_openbabel() {
48        let kind = Kind::OpenBabel { kind: openbabel::Kind::ECFP4 { nbits: 2048 }};
49        assert_eq!(kind.to_string(), String::from("OpenBabel ECFP4 with 2048 bits"));
50    }
51}