Trait 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 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 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 Methods§

Source

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

Extact 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>

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

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§