chematic for Rust

chematic 是一个纯 Rust 化学信息学 crate,用于解析分子、计算描述符、生成指纹与 2D 结构绘制 —— 可以直接将 chematic 添加到 Rust 服务器、命令行工具或嵌入式/边缘场景中:它是原生 crate,而不是 FFI 封装, 因此在默认功能集下不需要安装 C++ 工具链。它是一个由多个专注领域的 crate 组成的 Cargo workspace —— 用于指纹计算的 chematic-fp、用于 WebAssembly 绑定的 chematic-wasm, 以及大约二十个其他 crate,全部构建在同一个核心之上。

cargo add chematic --features "smiles,perception,chem,3d,fp"

功能通过 feature 开关控制:上面的命令启用了 smilesperceptionchem3dfp。只启用当前需要的功能, 随着使用场景增长再逐步添加即可。完整的 feature 列表请参见docs.rs 上的 API 参考

默认纯 Rust,仅有一个明确列出的例外

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.

这一限定同样适用于整个 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 服务或后台任务中 —— 无需子进程,也无需单独的化学微服务。
  • 用于解析、过滤或标注分子数据的命令行工具。
  • 同一个 crate 也可以编译为 WebAssembly(参见面向浏览器的 chematic), 并支撑着 chematic 的 Model Context Protocol 服务器 chematic-mcp

接下来可以看看

  • docs.rs/chematic —— 自动生成的 API 参考文档。
  • 文档站点 —— 安装指南、Cookbook 与各类使用场景说明。
  • 验证 —— 各功能的成熟度、已知限制与基准测试方法。
  • GitHub 上的源代码 —— workspace 结构、各 crate 的 README 与更新日志。