1#[derive(Debug, PartialEq, Clone)]
6pub struct Bond {
7 atom1: i32,
8 atom2: i32,
9 order: BondOrder,
10 }
15
16impl Bond {
17 pub fn new(atom1: i32, atom2: i32, order: impl Into<BondOrder>) -> Self {
18 Bond {
19 atom1,
20 atom2,
21 order: order.into(),
22 }
23 }
24 pub fn get_atom_indices(&self) -> (i32, i32) {
25 (self.atom1, self.atom2)
26 }
27
28 pub fn get_order(&self) -> BondOrder {
29 self.order
30 }
31}
32
33#[repr(u8)]
41#[derive(Debug, PartialEq, Clone, Copy)]
42pub enum BondOrder {
43 Unset = 0,
44 Single = 1,
45 Double = 2,
46 Triple = 3,
47 Quadruple = 4,
48 AromaticSingle = 5,
49 AromaticDouble = 6,
50}
51
52impl From<i32> for BondOrder {
53 fn from(bond_int: i32) -> Self {
54 match bond_int {
55 0 => BondOrder::Unset,
56 1 => BondOrder::Single,
57 2 => BondOrder::Double,
58 3 => BondOrder::Triple,
59 4 => BondOrder::Quadruple,
60 5 => BondOrder::AromaticSingle,
61 6 => BondOrder::AromaticDouble,
62 _ => BondOrder::Unset,
63 }
64 }
65}