Struct salsa::QueryTable

source ·
pub struct QueryTable<'me, Q>
where Q: Query,
{ /* private fields */ }
Expand description

Return value from the query method on Database. Gives access to various less common operations on queries.

Implementations§

source§

impl<'me, Q> QueryTable<'me, Q>
where Q: Query<Storage = InternedStorage<Q>>, Q::Key: InternValue, Q::Value: InternKey,

source

pub fn get_or_insert( &self, key: <<Q as Query>::Key as InternValue>::Key, insert: impl FnOnce(Q::Value) -> Q::Key ) -> Q::Value

Fetches the intern id for the given key or inserts it if it does not exist.

source§

impl<'me, Q> QueryTable<'me, Q>
where Q: Query, Q::Storage: QueryStorageOps<Q>,

source

pub fn new( db: &'me <Q as QueryDb<'me>>::DynDb, storage: &'me Q::Storage ) -> Self

Constructs a new QueryTable.

source

pub fn get(&self, key: Q::Key) -> Q::Value

Execute the query on a given input. Usually it’s easier to invoke the trait method directly. Note that for variadic queries (those with no inputs, or those with more than one input) the key will be a tuple.

source

pub fn purge(&self)
where Q::Storage: QueryStorageMassOps,

Completely clears the storage for this query.

This method breaks internal invariants of salsa, so any further queries might return nonsense results. It is useful only in very specific circumstances – for example, when one wants to observe which values dropped together with the table

Trait Implementations§

source§

impl<Q> DebugQueryTable for QueryTable<'_, Q>
where Q: Query, Q::Storage: QueryStorageOps<Q>,

§

type Key = <Q as Query>::Key

Key of this query.
§

type Value = <Q as Query>::Value

Value of this query.
source§

fn durability(&self, key: Q::Key) -> Durability

Returns a lower bound on the durability for the given key. This is typically the minimum durability of all values that the query accessed, but we may return a lower durability in some cases.
source§

fn entries<C>(&self) -> C
where C: FromIterator<TableEntry<Self::Key, Self::Value>>,

Get the (current) set of the entries in the query table.

Auto Trait Implementations§

§

impl<'me, Q> Freeze for QueryTable<'me, Q>

§

impl<'me, Q> RefUnwindSafe for QueryTable<'me, Q>
where <Q as QueryDb<'me>>::DynDb: RefUnwindSafe, <Q as Query>::Storage: RefUnwindSafe,

§

impl<'me, Q> Send for QueryTable<'me, Q>
where <Q as QueryDb<'me>>::DynDb: Sync, <Q as Query>::Storage: Sync,

§

impl<'me, Q> Sync for QueryTable<'me, Q>
where <Q as QueryDb<'me>>::DynDb: Sync, <Q as Query>::Storage: Sync,

§

impl<'me, Q> Unpin for QueryTable<'me, Q>

§

impl<'me, Q> UnwindSafe for QueryTable<'me, Q>
where <Q as QueryDb<'me>>::DynDb: RefUnwindSafe, <Q as Query>::Storage: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more