use gamma::graph::{ Graph, Error };
use super::{ Atom };

pub trait Molecule: Graph {
    /// Returns the atomic attributes associated with id,
    /// or Error if id not found.
    fn atom(&self, id: usize) -> Result<&Atom, Error>;

    /// Returns the charge computation associated with id,
    /// or Error if id not found.
    fn charge(&self, id: usize) -> Result<f32, Error>;

    /// Returns the bond order computation associated with the source
    /// and target ids, or Error if either sid or tid not found.
    fn bond_order(&self, sid: usize, tid: usize) -> Result<f32, Error>;
}