Crates.io | xapian-rs |
lib.rs | xapian-rs |
version | 0.2.0 |
source | src |
created_at | 2024-07-10 00:24:41.667239 |
updated_at | 2024-08-04 00:58:49.235597 |
description | Rust bindings for the Xapian search engine |
homepage | |
repository | https://github.com/torrancew/xapian-rs |
max_upload_size | |
id | 1297651 |
size | 209,567 |
xapian-rs
provides a set of low-level, mostly-ergonomic Rust bindings for
the Xapian search library.
The bindings are provided by a mix of auto-generation (via
autocxx
) and manual generation (via
cxx
). When necessary, small C++ shims are implemented to
work around incompatibilities between these tools and the Xapian codebase.
xapian-rs
is currently immature, untested and incomplete. During the 0.x
version series, no stability guarantees are provided for the API, and it may
change or break at any time. A small, limited real-world use case has been
implemented in pantry
, which exercises
an interesting but small subset of the capabilities of Xapian:
Some functionality is not provided at this time, including (but not limited to):
KeyMaker
Where possible, xapian-rs
tries to provide simple and ergonomic interactions
with idiomatic Rust code. However, Xapian is a C++ codebase which uses C++
idioms, and this does have some consequences on the current design (as do
limitations of the autocxx
and cxx
):
autocxx
does not
currently support catching exceptions (though cxx
does). In the current
version, any Xapian exception will trigger a panic in Rust code. This
will improve as the library evolves.&self
references, and therefore interior mutability is often needed to implement
interesting functionality.Several examples are provided in the examples
directory. The tests
directory's integration tests are also useful.