2个不稳定版本
0.2.0 | 2024年8月4日 |
---|---|
0.1.0 | 2024年7月10日 |
83 在 数据库实现 中排名
每月下载量 132
85KB
2K SLoC
xapian-rs
xapian-rs
为Xapian搜索引擎库提供了一套低级、大部分是方便的 Rust绑定。
这些绑定由自动生成(通过 autocxx
)和手动生成(通过 cxx
)混合提供。当需要时,实现小的C++适配器以解决这些工具与Xapian代码库之间的不兼容性。
状态/稳定性
xapian-rs
目前尚未成熟、未经测试且不完整。在 0.x
版本系列中,不提供API的稳定性保证,它可能会随时更改或损坏。在 pantry
中实现了一个小型的、有限的实际用例,该用例使用了Xapian的有趣但小范围的特性
- 索引
- 搜索
- 分面搜索
目前尚未提供某些功能,包括但不限于
KeyMaker
- 自定义RangeProcessor实现
设计
尽可能的,xapian-rs
尝试以简单和方便的方式与惯用的Rust代码交互。然而,Xapian是一个使用C++惯用的C++代码库,这确实对当前的设计(以及 autocxx
和 cxx
的限制)产生了一些影响
- Xapian主要使用异常进行错误处理。
autocxx
目前不支持捕获异常(尽管cxx
支持)。在当前版本中,任何Xapian异常都会在Rust代码中触发panic。随着库的发展,这将得到改进。 - Xapian非常依赖于C++字符串。C++字符串不提供编码保证,而Rust字符串保证是有效的UTF-8。这些绑定目前以不一致的方式处理这一点(尽管有时很方便)。随着库的发展,这将变得更加明确。
- 一些Xapian类型以允许通过Rust特质实现的方式暴露。目前,这些特质通常通过
&self
引用来实现,因此实现有趣的功能通常需要内部可变性。 - 其中一些特质在传递给FFI时会故意泄露内存。随着库的发展,这将得到改善。
示例
在examples
目录中提供了几个示例。测试目录的集成测试也很有用。
依赖项
~3–8MB
~144K SLoC