Trait VTab

Source
pub unsafe trait VTab<'vtab>: Sized {
    type Aux;
    type Cursor: VTabCursor;

    // Required methods
    fn connect(
        db: &mut VTabConnection,
        aux: Option<&Self::Aux>,
        args: &[&[u8]],
    ) -> Result<(String, Self)>;
    fn best_index(&self, info: &mut IndexInfo) -> Result<()>;
    fn open(&'vtab mut self) -> Result<Self::Cursor>;
}
Expand description

Eponymous-only virtual table instance trait.

§Safety

The first item in a struct implementing VTab must be rusqlite::sqlite3_vtab, and the struct must be #[repr(C)].

#[repr(C)]
struct MyTab {
   /// Base class. Must be first
   base: rusqlite::vtab::sqlite3_vtab,
   /* Virtual table implementations will typically add additional fields */
}

(See SQLite doc)

Required Associated Types§

Source

type Aux

Client data passed to Connection::create_module.

Source

type Cursor: VTabCursor

Specific cursor implementation

Required Methods§

Source

fn connect( db: &mut VTabConnection, aux: Option<&Self::Aux>, args: &[&[u8]], ) -> Result<(String, Self)>

Establish a new connection to an existing virtual table.

(See SQLite doc)

Source

fn best_index(&self, info: &mut IndexInfo) -> Result<()>

Determine the best way to access the virtual table. (See SQLite doc)

Source

fn open(&'vtab mut self) -> Result<Self::Cursor>

Create a new cursor used for accessing a virtual table. (See SQLite doc)

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§