Trait Datastore

Source
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§

Source

fn table(&self, table_id: TableId) -> Option<&Table>

Source

fn blob_store(&self) -> &dyn BlobStore

Provided Methods§

Source

fn table_or_err(&self, table_id: TableId) -> Result<&Table>

Source

fn table_scan(&self, table_id: TableId) -> Result<TableScanIter<'_>>

Source

fn index_scan_point( &self, table_id: TableId, index_id: IndexId, key: &AlgebraicValue, ) -> Result<IndexScanPointIter<'_>>

Source

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.

Implementors§