chematic for Rust
chematicは、分子の解析、記述子計算、フィンガープリントや2D構造式の生成を行うPure Rustのケモインフォマティクスクレートです。 FFIラッパーではなくネイティブクレートなので、chematicをRustのサーバー、コマンドラインツール、組み込み/エッジ環境に 直接追加でき、デフォルトの機能セットではC++ツールチェインを用意する必要もありません。chematicは、複数の専門クレートからなる Cargoワークスペースとして提供されており、フィンガープリント用のchematic-fp、WebAssemblyバインディング用のchematic-wasmなど、約20個のクレートが同じコアの上に構築されています。
cargo add chematic --features "smiles,perception,chem,3d,fp"機能はフィーチャーフラグで制御します。上記のコマンドはsmiles、perception、chem、3d、fpを有効にしています。必要な機能だけを有効化し、 必要になったタイミングで追加してください。フィーチャーの全リストはdocs.rsのAPIリファレンスを参照してください。
既定でPure Rust、例外は1つだけ明示
Pure Rust by default。The optional native-inchi feature vendors the IUPAC InChI C reference implementation for bit-exact standard InChI output. It is opt-in and isolated to the chematic-inchi crate.
この限定はクレート全体にも当てはまります。chematic-mcp is #![forbid(unsafe_code)]. The library as a whole is not: the default depict feature (shipped in both the pip and npm packages) pulls in resvg/rustybuzz/tiny-skia for 2D rendering, which contain unsafe code.chematicは「unsafeコードを一切含まない」とは主張していません。上記で名指しした例外を除き、 コアとなる構文解析と化学ロジックが既定でunsafeを避けている、という主張にとどまります。
どんな用途に向いているか
- Rust製のWebサービスやジョブワーカーに化学ロジックを直接組み込む — サブプロセスや別立ての化学マイクロサービスは不要です。
- 分子データを解析・フィルタ・注釈付けするコマンドラインツール。
- 同じクレートはWebAssemblyにもコンパイルでき(ブラウザ向けchematicを参照)、chematicのModel Context Protocolサーバーであるchematic-mcpも支えています。
次に見るべきページ
- docs.rs/chematic — 自動生成されたAPIリファレンス。
- ドキュメントサイト — インストールガイド、Cookbook、ユースケース解説。
- 検証 — 機能ごとの成熟度、既知の制限、ベンチマーク手法。
- GitHub上のソースコード — ワークスペース構成、各クレートのREADME、変更履歴。