pub struct WorkTable<Row, PrimaryKey, AvailableTypes = (), SecondaryIndexes = (), LockType = (), PkGen = <PrimaryKey as TablePrimaryKey>::Generator, PkNodeType = Vec<Pair<PrimaryKey, Link>>, const DATA_LENGTH: usize = INNER_PAGE_SIZE>where
PrimaryKey: Clone + Ord + Send + 'static + Hash,
Row: StorableRow,
PkNodeType: NodeLike<Pair<PrimaryKey, Link>> + Send + 'static,{
pub data: DataPages<Row, DATA_LENGTH>,
pub pk_map: IndexMap<PrimaryKey, Link, PkNodeType>,
pub indexes: SecondaryIndexes,
pub pk_gen: PkGen,
pub lock_map: LockMap<LockType, PrimaryKey>,
pub table_name: &'static str,
pub pk_phantom: PhantomData<PrimaryKey>,
pub types_phantom: PhantomData<AvailableTypes>,
}Fields§
§data: DataPages<Row, DATA_LENGTH>§pk_map: IndexMap<PrimaryKey, Link, PkNodeType>§indexes: SecondaryIndexes§pk_gen: PkGen§lock_map: LockMap<LockType, PrimaryKey>§table_name: &'static str§pk_phantom: PhantomData<PrimaryKey>§types_phantom: PhantomData<AvailableTypes>Implementations§
Source§impl<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, const DATA_LENGTH: usize> WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>where
Row: TableRow<PrimaryKey> + StorableRow,
PrimaryKey: Clone + Ord + Send + TablePrimaryKey + Hash,
PkNodeType: NodeLike<Pair<PrimaryKey, Link>> + Send + 'static,
<Row as StorableRow>::WrappedRow: RowWrapper<Row>,
impl<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, const DATA_LENGTH: usize> WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>where
Row: TableRow<PrimaryKey> + StorableRow,
PrimaryKey: Clone + Ord + Send + TablePrimaryKey + Hash,
PkNodeType: NodeLike<Pair<PrimaryKey, Link>> + Send + 'static,
<Row as StorableRow>::WrappedRow: RowWrapper<Row>,
pub fn get_next_pk(&self) -> PrimaryKeywhere
PkGen: PrimaryKeyGenerator<PrimaryKey>,
Sourcepub fn select(&self, pk: PrimaryKey) -> Option<Row>where
LockType: 'static,
Row: Archive + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>,
<<Row as StorableRow>::WrappedRow as Archive>::Archived: Deserialize<<Row as StorableRow>::WrappedRow, HighDeserializer<Error>>,
pub fn select(&self, pk: PrimaryKey) -> Option<Row>where
LockType: 'static,
Row: Archive + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>,
<<Row as StorableRow>::WrappedRow as Archive>::Archived: Deserialize<<Row as StorableRow>::WrappedRow, HighDeserializer<Error>>,
Selects Row from table identified with provided primary key. Returns None if no value presented.
pub fn insert(&self, row: Row) -> Result<PrimaryKey, WorkTableError>where
Row: Archive + Clone + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>,
<Row as StorableRow>::WrappedRow: Archive + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>,
PrimaryKey: Clone,
AvailableTypes: 'static,
SecondaryIndexes: TableSecondaryIndex<Row, AvailableTypes>,
LockType: 'static,
pub fn insert_cdc<SecondaryEvents>(
&self,
row: Row,
) -> Result<(PrimaryKey, Operation<<PkGen as PrimaryKeyGeneratorState>::State, PrimaryKey, SecondaryEvents>), WorkTableError>where
Row: Archive + Clone + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>,
<Row as StorableRow>::WrappedRow: Archive + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>,
PrimaryKey: Clone,
SecondaryIndexes: TableSecondaryIndex<Row, AvailableTypes> + TableSecondaryIndexCdc<Row, AvailableTypes, SecondaryEvents>,
PkGen: PrimaryKeyGeneratorState,
Trait Implementations§
Source§impl<Row, PrimaryKey, AvailableTypes: Debug, SecondaryIndexes: Debug, LockType: Debug, PkGen: Debug, PkNodeType, const DATA_LENGTH: usize> Debug for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>
impl<Row, PrimaryKey, AvailableTypes: Debug, SecondaryIndexes: Debug, LockType: Debug, PkGen: Debug, PkNodeType, const DATA_LENGTH: usize> Debug for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>
Source§impl<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, const DATA_LENGTH: usize> Default for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>where
PrimaryKey: Clone + Ord + Send + TablePrimaryKey + Hash,
SecondaryIndexes: Default,
PkGen: Default,
PkNodeType: NodeLike<Pair<PrimaryKey, Link>> + Send + 'static,
Row: StorableRow,
<Row as StorableRow>::WrappedRow: RowWrapper<Row>,
impl<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, const DATA_LENGTH: usize> Default for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>where
PrimaryKey: Clone + Ord + Send + TablePrimaryKey + Hash,
SecondaryIndexes: Default,
PkGen: Default,
PkNodeType: NodeLike<Pair<PrimaryKey, Link>> + Send + 'static,
Row: StorableRow,
<Row as StorableRow>::WrappedRow: RowWrapper<Row>,
Auto Trait Implementations§
impl<Row, PrimaryKey, AvailableTypes = (), SecondaryIndexes = (), LockType = (), PkGen = <PrimaryKey as TablePrimaryKey>::Generator, PkNodeType = Vec<Pair<PrimaryKey, Link>>, const DATA_LENGTH: usize = INNER_PAGE_SIZE> !Freeze for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>
impl<Row, PrimaryKey, AvailableTypes = (), SecondaryIndexes = (), LockType = (), PkGen = <PrimaryKey as TablePrimaryKey>::Generator, PkNodeType = Vec<Pair<PrimaryKey, Link>>, const DATA_LENGTH: usize = INNER_PAGE_SIZE> !RefUnwindSafe for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>
impl<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, const DATA_LENGTH: usize> Send for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>where
SecondaryIndexes: Send,
PkGen: Send,
AvailableTypes: Send,
LockType: Sync + Send,
PrimaryKey: Sync,
<Row as StorableRow>::WrappedRow: Send,
impl<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, const DATA_LENGTH: usize> Sync for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>where
SecondaryIndexes: Sync,
PkGen: Sync,
PrimaryKey: Sync,
AvailableTypes: Sync,
LockType: Sync + Send,
<Row as StorableRow>::WrappedRow: Send,
impl<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, const DATA_LENGTH: usize> Unpin for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>
impl<Row, PrimaryKey, AvailableTypes = (), SecondaryIndexes = (), LockType = (), PkGen = <PrimaryKey as TablePrimaryKey>::Generator, PkNodeType = Vec<Pair<PrimaryKey, Link>>, const DATA_LENGTH: usize = INNER_PAGE_SIZE> !UnwindSafe for WorkTable<Row, PrimaryKey, AvailableTypes, SecondaryIndexes, LockType, PkGen, PkNodeType, DATA_LENGTH>
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
Mutably borrows from an owned value. Read more
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> 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>
Returns the layout of the type.
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
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.