[][src]Function purr::read::read

pub fn read(text: &str) -> Result<Vec<Atom>, Error>

Reads a string representation of a SMILES. Supports the feature set found in SMILES Formal Grammar. This is a subset of features supported by OpenSMILES. The missing features are:

  • no wildcard/unknown atom (*)
  • only tetrahedral atom pariities (@, @@)
use purr::read::{ read, Error };
use purr::valence::implicit_hydrogens;
use purr::mol::{ Atom, Bond, Nub, Element };

fn main() -> Result<(), Error> {
    let atoms = read(&"OC[CH3]")?;
     
    assert_eq!(atoms, vec![
        Atom {
            nub: Nub { element: Element::O, ..Default::default() },
            bonds: vec![
                Bond { tid: 1, style: None }
            ]
        },
        Atom {
            nub: Default::default(),
            bonds: vec![
                Bond { tid: 0, style: None },
                Bond { tid: 2, style: None }
            ]
        },
        Atom {
            nub: Nub {
                hcount: Some(3), charge: Some(0), ..Default::default()
            },
            bonds: vec![
                Bond { tid: 1, style: None }
            ]
        }
    ]);

    assert_eq!(implicit_hydrogens(&atoms[0]), Ok(Some(1)));
    assert_eq!(implicit_hydrogens(&atoms[1]), Ok(Some(2)));
    assert_eq!(implicit_hydrogens(&atoms[2]), Ok(None));

    Ok(())
}