pub trait Datastore {
// Required methods
fn table(&self, table_id: TableId) -> Option<&Table>;
fn blob_store(&self) -> &dyn BlobStore;
// Provided methods
fn table_or_err(&self, table_id: TableId) -> Result<&Table> { ... }
fn table_scan(&self, table_id: TableId) -> Result<TableScanIter<'_>> { ... }
fn index_scan_point(
&self,
table_id: TableId,
index_id: IndexId,
key: &AlgebraicValue,
) -> Result<IndexScanPointIter<'_>> { ... }
fn index_scan_range(
&self,
table_id: TableId,
index_id: IndexId,
range: &impl RangeBounds<AlgebraicValue>,
) -> Result<IndexScanRangeIter<'_>> { ... }
}Expand description
The datastore interface required for building an executor
Required Methods§
fn table(&self, table_id: TableId) -> Option<&Table>
fn blob_store(&self) -> &dyn BlobStore
Provided Methods§
fn table_or_err(&self, table_id: TableId) -> Result<&Table>
fn table_scan(&self, table_id: TableId) -> Result<TableScanIter<'_>>
fn index_scan_point( &self, table_id: TableId, index_id: IndexId, key: &AlgebraicValue, ) -> Result<IndexScanPointIter<'_>>
fn index_scan_range( &self, table_id: TableId, index_id: IndexId, range: &impl RangeBounds<AlgebraicValue>, ) -> Result<IndexScanRangeIter<'_>>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.