pub struct PagedbStorage<V: Vfs + Clone> { /* private fields */ }Expand description
pagedb-backed KV storage.
The inner Db<V> lives behind Arc for cheap cloning across async methods.
No outer Mutex is needed: Db::begin_write already acquires an internal
async mutex (single-writer serialization is enforced by pagedb itself).
Implementations§
Source§impl PagedbStorage<MemVfs>
impl PagedbStorage<MemVfs>
Sourcepub async fn open_in_memory() -> Result<Self, LiteError>
pub async fn open_in_memory() -> Result<Self, LiteError>
Create an in-memory database (for testing and WASM without persistence).
In-memory storage is volatile (data lives only for the process lifetime), so no at-rest encryption is applied; the pagedb KEK is all-zero.
Source§impl PagedbStorage<DefaultVfs>
impl PagedbStorage<DefaultVfs>
Sourcepub async fn open(
path: impl AsRef<Path>,
encryption: Encryption,
) -> Result<Self, LiteError>
pub async fn open( path: impl AsRef<Path>, encryption: Encryption, ) -> Result<Self, LiteError>
Open or create a database at path using the platform-native async VFS.
A store that cannot be read is reported, not repaired: this is
CorruptionPolicy::FailClosed. Use
open_with_policy to choose otherwise.
encryption controls how the 32-byte pagedb page-encryption key is
obtained:
Encryption::Plaintext— no encryption; the all-zero key is used. Must be chosen consciously.Encryption::Passphrase— derives the key via Argon2id using a random 16-byte salt. The salt is persisted in a plaintext sidecar file at<path>.salt(created on first open, mode 0o600 on Unix) so that the same passphrase reproduces the same key on every reopen.Encryption::RawKey— uses the supplied 32-byte key directly; the caller is responsible for key management and no sidecar is written.
Sourcepub async fn open_with_policy(
path: impl AsRef<Path>,
encryption: Encryption,
policy: CorruptionPolicy,
) -> Result<Self, LiteError>
pub async fn open_with_policy( path: impl AsRef<Path>, encryption: Encryption, policy: CorruptionPolicy, ) -> Result<Self, LiteError>
Open or create a database at path, choosing what happens if the store
on disk cannot be read.
Under CorruptionPolicy::FailClosed the corruption is returned and
the store is left untouched. Under
CorruptionPolicy::DiscardStoreAndRecreate the damaged store is
renamed aside and a fresh, empty database takes its place — see that
variant’s documentation for what the caller is agreeing to.
Trait Implementations§
Source§impl<V: Vfs + Clone + Send + Sync + 'static> ArraySegmentExt for PagedbStorage<V>
impl<V: Vfs + Clone + Send + Sync + 'static> ArraySegmentExt for PagedbStorage<V>
Source§fn write_array_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
array_name: &'life1 str,
seg_id: u64,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_array_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
array_name: &'life1 str,
seg_id: u64,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn open_array_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
array_name: &'life1 str,
seg_id: u64,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn open_array_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
array_name: &'life1 str,
seg_id: u64,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl<V: Vfs + Clone + Send + Sync + 'static> ColumnarSegmentExt for PagedbStorage<V>
impl<V: Vfs + Clone + Send + Sync + 'static> ColumnarSegmentExt for PagedbStorage<V>
Source§fn write_columnar_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
collection: &'life1 str,
segment_id: u32,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_columnar_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
collection: &'life1 str,
segment_id: u32,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
(collection, segment_id). Read moreSource§fn open_columnar_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection: &'life1 str,
segment_id: u32,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn open_columnar_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection: &'life1 str,
segment_id: u32,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
(collection, segment_id). Read moreSource§fn delete_columnar_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection: &'life1 str,
segment_id: u32,
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_columnar_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection: &'life1 str,
segment_id: u32,
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
(collection, segment_id). Read moreSource§impl<V: Vfs + Clone + Send + Sync + 'static> FtsSegmentExt for PagedbStorage<V>
impl<V: Vfs + Clone + Send + Sync + 'static> FtsSegmentExt for PagedbStorage<V>
Source§fn write_fts_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
index_key: &'life1 str,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_fts_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
index_key: &'life1 str,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
index_key. Read moreSource§fn open_fts_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
index_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn open_fts_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
index_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
index_key. Read moreSource§fn delete_fts_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
index_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_fts_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
index_key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
index_key. Read moreSource§fn list_fts_segments<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_fts_segments<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fts/seg/{prefix}. Read moreSource§impl<V: Vfs + Clone + Send + Sync + 'static> GraphSegmentExt for PagedbStorage<V>
impl<V: Vfs + Clone + Send + Sync + 'static> GraphSegmentExt for PagedbStorage<V>
Source§fn write_graph_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
collection: &'life1 str,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_graph_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
collection: &'life1 str,
bytes: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
collection. Read moreSource§fn open_graph_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn open_graph_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
collection. Read moreSource§impl<V: Vfs + Clone + Send + Sync + 'static> SpatialSegmentExt for PagedbStorage<V>
impl<V: Vfs + Clone + Send + Sync + 'static> SpatialSegmentExt for PagedbStorage<V>
Source§fn write_spatial_segment<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
collection: &'life1 str,
field: &'life2 str,
bytes: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn write_spatial_segment<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
collection: &'life1 str,
field: &'life2 str,
bytes: &'life3 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
(collection, field). Read moreSource§fn open_spatial_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
collection: &'life1 str,
field: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn open_spatial_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
collection: &'life1 str,
field: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Box<[u8]>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
(collection, field). Read moreSource§fn delete_spatial_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
collection: &'life1 str,
field: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn delete_spatial_segment<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
collection: &'life1 str,
field: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
(collection, field). Read moreSource§impl<V: Vfs + Clone + Send + Sync + 'static> StorageEngine for PagedbStorage<V>
impl<V: Vfs + Clone + Send + Sync + 'static> StorageEngine for PagedbStorage<V>
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
key: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
key: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn put<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ns: Namespace,
key: &'life1 [u8],
value: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn put<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ns: Namespace,
key: &'life1 [u8],
value: &'life2 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
key: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
key: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn scan_prefix<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
prefix: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<Vec<KvPair>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn scan_prefix<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
prefix: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = Result<Vec<KvPair>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn scan_prefix_bounded<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
prefix: &'life1 [u8],
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<KvPair>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn scan_prefix_bounded<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
prefix: &'life1 [u8],
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<KvPair>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
limit prefix records, ordered by key. Read moreSource§fn scan_prefix_budgeted<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
prefix: &'life1 [u8],
max_records: usize,
max_bytes: usize,
) -> Pin<Box<dyn Future<Output = Result<PrefixScan, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn scan_prefix_budgeted<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
prefix: &'life1 [u8],
max_records: usize,
max_bytes: usize,
) -> Pin<Box<dyn Future<Output = Result<PrefixScan, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn scan_prefix_from_budgeted<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ns: Namespace,
prefix: &'life1 [u8],
after_key: Option<&'life2 [u8]>,
max_records: usize,
max_bytes: usize,
) -> Pin<Box<dyn Future<Output = Result<PrefixScan, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn scan_prefix_from_budgeted<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ns: Namespace,
prefix: &'life1 [u8],
after_key: Option<&'life2 [u8]>,
max_records: usize,
max_bytes: usize,
) -> Pin<Box<dyn Future<Output = Result<PrefixScan, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn batch_write<'life0, 'life1, 'async_trait>(
&'life0 self,
ops: &'life1 [WriteOp],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn batch_write<'life0, 'life1, 'async_trait>(
&'life0 self,
ops: &'life1 [WriteOp],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn count<'life0, 'async_trait>(
&'life0 self,
ns: Namespace,
) -> Pin<Box<dyn Future<Output = Result<u64, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn count<'life0, 'async_trait>(
&'life0 self,
ns: Namespace,
) -> Pin<Box<dyn Future<Output = Result<u64, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn scan_range<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
start: &'life1 [u8],
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<KvPair>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn scan_range<'life0, 'life1, 'async_trait>(
&'life0 self,
ns: Namespace,
start: &'life1 [u8],
limit: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<KvPair>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn scan_range_bounded<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ns: Namespace,
start: Option<&'life1 [u8]>,
end: Option<&'life2 [u8]>,
limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<Vec<KvPair>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn scan_range_bounded<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ns: Namespace,
start: Option<&'life1 [u8]>,
end: Option<&'life2 [u8]>,
limit: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<Vec<KvPair>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
start <= key < end. Read moreSource§fn compact<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<CompactionOutcome, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn compact<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<CompactionOutcome, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn as_vector_segment_ext(&self) -> Option<&dyn VectorSegmentExt>
fn as_vector_segment_ext(&self) -> Option<&dyn VectorSegmentExt>
Source§fn as_array_segment_ext(&self) -> Option<&dyn ArraySegmentExt>
fn as_array_segment_ext(&self) -> Option<&dyn ArraySegmentExt>
Source§fn as_fts_segment_ext(&self) -> Option<&dyn FtsSegmentExt>
fn as_fts_segment_ext(&self) -> Option<&dyn FtsSegmentExt>
Source§fn as_columnar_segment_ext(&self) -> Option<&dyn ColumnarSegmentExt>
fn as_columnar_segment_ext(&self) -> Option<&dyn ColumnarSegmentExt>
Source§fn as_graph_segment_ext(&self) -> Option<&dyn GraphSegmentExt>
fn as_graph_segment_ext(&self) -> Option<&dyn GraphSegmentExt>
Source§fn as_spatial_segment_ext(&self) -> Option<&dyn SpatialSegmentExt>
fn as_spatial_segment_ext(&self) -> Option<&dyn SpatialSegmentExt>
Source§impl<V: Vfs + Clone + Send + Sync + 'static> VectorSegmentExt for PagedbStorage<V>
impl<V: Vfs + Clone + Send + Sync + 'static> VectorSegmentExt for PagedbStorage<V>
Source§fn write_vector_segment<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
collection_name: &'life1 str,
dim: usize,
vectors: &'life2 [Vec<f32>],
surrogate_ids: &'life3 [u64],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn write_vector_segment<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
collection_name: &'life1 str,
dim: usize,
vectors: &'life2 [Vec<f32>],
surrogate_ids: &'life3 [u64],
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
collection_name. Read moreSource§fn open_vector_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PagedbBacking>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn open_vector_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<PagedbBacking>, LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
collection_name. Read moreSource§fn delete_vector_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_vector_segment<'life0, 'life1, 'async_trait>(
&'life0 self,
collection_name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<(), LiteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
collection_name. Read moreAuto Trait Implementations§
impl<V> !RefUnwindSafe for PagedbStorage<V>
impl<V> !UnwindSafe for PagedbStorage<V>
impl<V> Freeze for PagedbStorage<V>
impl<V> Send for PagedbStorage<V>
impl<V> Sync for PagedbStorage<V>
impl<V> Unpin for PagedbStorage<V>
impl<V> UnsafeUnpin for PagedbStorage<V>
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.impl<T> NodeDbMarker for T
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.