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}