2个不稳定版本

0.2.0 2024年8月4日
0.1.0 2024年7月10日

83数据库实现 中排名

Download history 179/week @ 2024-07-06 9/week @ 2024-07-13 1/week @ 2024-07-27 129/week @ 2024-08-03 2/week @ 2024-08-10

每月下载量 132

MIT 许可证 MIT

85KB
2K SLoC

xapian-rs

GitHub crates.io docs.rs

xapian-rs 为Xapian搜索引擎库提供了一套低级大部分是方便的 Rust绑定。

这些绑定由自动生成(通过 autocxx)和手动生成(通过 cxx)混合提供。当需要时,实现小的C++适配器以解决这些工具与Xapian代码库之间的不兼容性。

状态/稳定性

xapian-rs 目前尚未成熟、未经测试且不完整。在 0.x 版本系列中,不提供API的稳定性保证,它可能会随时更改或损坏。在 pantry 中实现了一个小型的、有限的实际用例,该用例使用了Xapian的有趣但小范围的特性

  • 索引
  • 搜索
  • 分面搜索

目前尚未提供某些功能,包括但不限于

  • KeyMaker
  • 自定义RangeProcessor实现

设计

尽可能的,xapian-rs 尝试以简单和方便的方式与惯用的Rust代码交互。然而,Xapian是一个使用C++惯用的C++代码库,这确实对当前的设计(以及 autocxxcxx 的限制)产生了一些影响

  • Xapian主要使用异常进行错误处理。 autocxx 目前不支持捕获异常(尽管 cxx 支持)。在当前版本中,任何Xapian异常都会在Rust代码中触发panic。随着库的发展,这将得到改进。
  • Xapian非常依赖于C++字符串。C++字符串不提供编码保证,而Rust字符串保证是有效的UTF-8。这些绑定目前以不一致的方式处理这一点(尽管有时很方便)。随着库的发展,这将变得更加明确。
  • 一些Xapian类型以允许通过Rust特质实现的方式暴露。目前,这些特质通常通过&self引用来实现,因此实现有趣的功能通常需要内部可变性。
  • 其中一些特质在传递给FFI时会故意泄露内存。随着库的发展,这将得到改善。

示例

examples目录中提供了几个示例。测试目录的集成测试也很有用。

依赖项

~3–8MB
~144K SLoC