arch_pkg_db/
single.rs

1//! Database of a single repository.
2
3mod extend;
4mod get;
5mod insert;
6mod iter;
7mod misc;
8mod new;
9mod providers;
10
11pub use insert::{InsertError, InsertNewerError, InsertNewerReturn};
12pub use iter::{Entries, EntriesMut, Entry, Names, OwnedEntries, Queriers, QueriersMut};
13pub use providers::{AlternativeProviders, AlternativeProvidersMut};
14
15use arch_pkg_text::desc::{EagerQuerier, MemoQuerier};
16use std::collections::HashMap;
17
18/// Database to lookup queriers from their package names.
19///
20/// This type of database is designed for repository-unaware use cases such as:
21/// * Local packages: Packages that have been installed into the system.
22/// * Single repository archive.
23/// * Merging multiple repository archives where duplications don't exist.
24#[derive(Debug, Clone)]
25pub struct QueryDatabase<'a, Querier> {
26    /// Map package names to their queriers.
27    internal: HashMap<&'a str, Querier>,
28}
29
30/// Database to lookup eager queriers from their package names.
31pub type EagerQueryDatabase<'a> = QueryDatabase<'a, EagerQuerier<'a>>;
32
33/// Database to lookup memo queriers from their package names.
34pub type MemoQueryDatabase<'a> = QueryDatabase<'a, MemoQuerier<'a>>;