Trait salsa::Query

source ·
pub trait Query: Debug + Default + Sized + for<'d> QueryDb<'d> {
    type Key: Clone + Debug + Hash + Eq;
    type Value: Clone + Debug;
    type Storage;

    const QUERY_INDEX: u16;
    const QUERY_NAME: &'static str;

    // Required methods
    fn query_storage<'a>(
        group_storage: &'a <Self as QueryDb<'_>>::GroupStorage
    ) -> &'a Arc<Self::Storage>;
    fn query_storage_mut<'a>(
        group_storage: &'a <Self as QueryDb<'_>>::GroupStorage
    ) -> &'a Arc<Self::Storage>;
}
Expand description

Trait implements by all of the “special types” associated with each of your queries.

Required Associated Types§

source

type Key: Clone + Debug + Hash + Eq

Type that you you give as a parameter – for queries with zero or more than one input, this will be a tuple.

source

type Value: Clone + Debug

What value does the query return?

source

type Storage

Internal struct storing the values for the query.

Required Associated Constants§

source

const QUERY_INDEX: u16

A unique index identifying this query within the group.

source

const QUERY_NAME: &'static str

Name of the query method (e.g., foo)

Required Methods§

source

fn query_storage<'a>( group_storage: &'a <Self as QueryDb<'_>>::GroupStorage ) -> &'a Arc<Self::Storage>

Extract storage for this query from the storage for its group.

source

fn query_storage_mut<'a>( group_storage: &'a <Self as QueryDb<'_>>::GroupStorage ) -> &'a Arc<Self::Storage>

Extract storage for this query from the storage for its group.

Object Safety§

This trait is not object safe.

Implementors§