omgkit_io/lib.rs
1//! # omgkit-io
2//!
3//! omgkit 的 L1 层:分子表示格式的解析与输出。
4//!
5//! 当前是 SMILES 的解析与写出。本层**只做语法**,不含化学语义 —— 芳香性
6//! 感知、价键计算、隐式氢推断、环感知全部属于 L2(`omgkit-chem`)。
7//!
8//! ```
9//! use omgkit_io::smiles;
10//!
11//! let mol = smiles::parse("CC(=O)O").unwrap();
12//! assert_eq!(mol.num_atoms(), 4);
13//! assert_eq!(mol.num_bonds(), 3);
14//!
15//! // 写回去
16//! assert_eq!(smiles::write(&mol).smiles, "CC(=O)O");
17//!
18//! // 错误带精确位置
19//! let err = smiles::parse("C1CC").unwrap_err();
20//! assert_eq!(err.pos, 1);
21//! println!("{}", err.render());
22//! // C1CC
23//! // ^ 环闭合标号 1 未配对
24//! ```
25
26pub mod canon;
27pub mod error;
28pub mod molblock;
29pub mod smarts;
30pub mod smiles;
31pub mod stereo;
32pub mod wedge;
33
34pub use error::{ParseError, ParseErrorKind, Result};