faiss_next/index/
binary.rs1use faiss_next_sys::{self, FaissIndexBinary};
2
3use crate::error::Result;
4use crate::index::native::InnerPtr;
5use crate::index::traits::BinaryIndex;
6
7pub struct IndexBinary {
8 inner: InnerPtr<FaissIndexBinary>,
9}
10
11impl IndexBinary {
12 pub fn from_raw(ptr: *mut FaissIndexBinary) -> Result<Self> {
13 Ok(Self {
14 inner: InnerPtr::new(ptr)?,
15 })
16 }
17}
18
19impl BinaryIndex for IndexBinary {
20 fn inner_ptr(&self) -> *mut FaissIndexBinary {
21 self.inner.as_ptr()
22 }
23}
24
25impl Drop for IndexBinary {
26 fn drop(&mut self) {
27 tracing::trace!("dropping IndexBinary");
28 unsafe {
29 faiss_next_sys::faiss_IndexBinary_free(self.inner.as_ptr());
30 }
31 }
32}
33
34unsafe impl Send for IndexBinary {}
35unsafe impl Sync for IndexBinary {}